adcp

package module
v0.0.0-...-c8f541b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 3, 2026 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Overview

Package adcp provides helpers for building AdCP MCP servers in Go.

Generated enum aliases preserve unknown wire values for forward-compatible JSON decoding. Use helpers such as KnownMediaBuyStatusValues, IsKnownMediaBuyStatus, and ParseMediaBuyStatus when a handler needs strict validation against the current schema values.

Index

Constants

View Source
const (
	// ADCPProtocolVersion30 is the 3.0 release-precision wire version.
	ADCPProtocolVersion30 = "3.0"
	// ADCPProtocolVersion31 is the 3.1 release-precision wire version.
	ADCPProtocolVersion31 = "3.1"
	// ADCPMajorVersion3 is the legacy major-version value for all AdCP 3.x releases.
	ADCPMajorVersion3 = 3
)

Variables

View Source
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).

View Source
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 GetProductsRequest 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 GetProductsRequest) (*mcp.CallToolResult, any, error) {
        return adcp.ProductsResponse(&adcp.ProductsData{Products: products, Sandbox: true})
    })

func Bool

func Bool(v bool) *bool

Bool returns a pointer to v for optional boolean request fields.

func BuildCreativeResponse

func BuildCreativeResponse(manifest map[string]any, sandbox bool) (*mcp.CallToolResult, any, error)

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 CreateMediaBuyErrorResponse

func CreateMediaBuyErrorResponse(data *CreateMediaBuyError) (*mcp.CallToolResult, any, error)

CreateMediaBuyErrorResponse builds a create_media_buy schema error-branch response.

func CreateMediaBuySubmittedResponse

func CreateMediaBuySubmittedResponse(taskID, message string) (*mcp.CallToolResult, any, error)

CreateMediaBuySubmittedResponse builds an async create_media_buy submitted response.

func CreateMediaBuySuccessResponse

func CreateMediaBuySuccessResponse(data *CreateMediaBuySuccess) (*mcp.CallToolResult, any, error)

CreateMediaBuySuccessResponse builds a synchronous create_media_buy success response.

func CreativeFormatsResponse

func CreativeFormatsResponse(formats []CreativeFormat, sandbox bool) (*mcp.CallToolResult, any, error)

CreativeFormatsResponse builds a list_creative_formats response.

func DefaultADCPVersion

func DefaultADCPVersion() string

DefaultADCPVersion returns the highest 3.x release-precision version this SDK emits when a request does not pin adcp_version.

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 Float64

func Float64(v float64) *float64

Float64 returns a pointer to v for optional numeric fields where zero is meaningful.

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 IsKnownAccountScope

func IsKnownAccountScope(v AccountScope) bool

IsKnownAccountScope reports whether v is one of the current schema-defined AccountScope values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownAccountStatus

func IsKnownAccountStatus(v AccountStatus) bool

IsKnownAccountStatus reports whether v is one of the current schema-defined AccountStatus values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownActionNotAllowedReason

func IsKnownActionNotAllowedReason(v ActionNotAllowedReason) bool

IsKnownActionNotAllowedReason reports whether v is one of the current schema-defined ActionNotAllowedReason values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownActionSource

func IsKnownActionSource(v ActionSource) bool

IsKnownActionSource reports whether v is one of the current schema-defined ActionSource values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownAdcpProtocol

func IsKnownAdcpProtocol(v AdcpProtocol) bool

IsKnownAdcpProtocol reports whether v is one of the current schema-defined AdcpProtocol values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownAdjustmentKind

func IsKnownAdjustmentKind(v AdjustmentKind) bool

IsKnownAdjustmentKind reports whether v is one of the current schema-defined AdjustmentKind values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownAdvertiserIndustry

func IsKnownAdvertiserIndustry(v AdvertiserIndustry) bool

IsKnownAdvertiserIndustry reports whether v is one of the current schema-defined AdvertiserIndustry values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownAgeVerificationMethod

func IsKnownAgeVerificationMethod(v AgeVerificationMethod) bool

IsKnownAgeVerificationMethod reports whether v is one of the current schema-defined AgeVerificationMethod values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownAssessmentStatus

func IsKnownAssessmentStatus(v AssessmentStatus) bool

IsKnownAssessmentStatus reports whether v is one of the current schema-defined AssessmentStatus values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownAssetContentType

func IsKnownAssetContentType(v AssetContentType) bool

IsKnownAssetContentType reports whether v is one of the current schema-defined AssetContentType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownAttestationClaim

func IsKnownAttestationClaim(v AttestationClaim) bool

IsKnownAttestationClaim reports whether v is one of the current schema-defined AttestationClaim values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownAttributionMethodology

func IsKnownAttributionMethodology(v AttributionMethodology) bool

IsKnownAttributionMethodology reports whether v is one of the current schema-defined AttributionMethodology values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownAttributionModel

func IsKnownAttributionModel(v AttributionModel) bool

IsKnownAttributionModel reports whether v is one of the current schema-defined AttributionModel values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownAudienceSource

func IsKnownAudienceSource(v AudienceSource) bool

IsKnownAudienceSource reports whether v is one of the current schema-defined AudienceSource values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownAudienceStatus

func IsKnownAudienceStatus(v AudienceStatus) bool

IsKnownAudienceStatus reports whether v is one of the current schema-defined AudienceStatus values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownAudioChannelLayout

func IsKnownAudioChannelLayout(v AudioChannelLayout) bool

IsKnownAudioChannelLayout reports whether v is one of the current schema-defined AudioChannelLayout values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownAudioDistributionType

func IsKnownAudioDistributionType(v AudioDistributionType) bool

IsKnownAudioDistributionType reports whether v is one of the current schema-defined AudioDistributionType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownAuthScheme

func IsKnownAuthScheme(v AuthScheme) bool

IsKnownAuthScheme reports whether v is one of the current schema-defined AuthScheme values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownAvailableMetric

func IsKnownAvailableMetric(v AvailableMetric) bool

IsKnownAvailableMetric reports whether v is one of the current schema-defined AvailableMetric values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownBillingParty

func IsKnownBillingParty(v BillingParty) bool

IsKnownBillingParty reports whether v is one of the current schema-defined BillingParty values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownBinaryVerdict

func IsKnownBinaryVerdict(v BinaryVerdict) bool

IsKnownBinaryVerdict reports whether v is one of the current schema-defined BinaryVerdict values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownBrandAgentType

func IsKnownBrandAgentType(v BrandAgentType) bool

IsKnownBrandAgentType reports whether v is one of the current schema-defined BrandAgentType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownC2PAWatermarkAction

func IsKnownC2PAWatermarkAction(v C2PAWatermarkAction) bool

IsKnownC2PAWatermarkAction reports whether v is one of the current schema-defined C2PAWatermarkAction values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownCanceledBy

func IsKnownCanceledBy(v CanceledBy) bool

IsKnownCanceledBy reports whether v is one of the current schema-defined CanceledBy values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownCatalogAction

func IsKnownCatalogAction(v CatalogAction) bool

IsKnownCatalogAction reports whether v is one of the current schema-defined CatalogAction values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownCatalogItemStatus

func IsKnownCatalogItemStatus(v CatalogItemStatus) bool

IsKnownCatalogItemStatus reports whether v is one of the current schema-defined CatalogItemStatus values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownCatalogType

func IsKnownCatalogType(v CatalogType) bool

IsKnownCatalogType reports whether v is one of the current schema-defined CatalogType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownChannels

func IsKnownChannels(v Channels) bool

IsKnownChannels reports whether v is one of the current schema-defined Channels values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownCloudStorageProtocol

func IsKnownCloudStorageProtocol(v CloudStorageProtocol) bool

IsKnownCloudStorageProtocol reports whether v is one of the current schema-defined CloudStorageProtocol values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownCoBrandingRequirement

func IsKnownCoBrandingRequirement(v CoBrandingRequirement) bool

IsKnownCoBrandingRequirement reports whether v is one of the current schema-defined CoBrandingRequirement values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownCollectionCadence

func IsKnownCollectionCadence(v CollectionCadence) bool

IsKnownCollectionCadence reports whether v is one of the current schema-defined CollectionCadence values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownCollectionKind

func IsKnownCollectionKind(v CollectionKind) bool

IsKnownCollectionKind reports whether v is one of the current schema-defined CollectionKind values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownCollectionRelationship

func IsKnownCollectionRelationship(v CollectionRelationship) bool

IsKnownCollectionRelationship reports whether v is one of the current schema-defined CollectionRelationship values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownCollectionStatus

func IsKnownCollectionStatus(v CollectionStatus) bool

IsKnownCollectionStatus reports whether v is one of the current schema-defined CollectionStatus values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownCompletionSource

func IsKnownCompletionSource(v CompletionSource) bool

IsKnownCompletionSource reports whether v is one of the current schema-defined CompletionSource values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownConsentBasis

func IsKnownConsentBasis(v ConsentBasis) bool

IsKnownConsentBasis reports whether v is one of the current schema-defined ConsentBasis values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownContentIDType

func IsKnownContentIDType(v ContentIDType) bool

IsKnownContentIDType reports whether v is one of the current schema-defined ContentIDType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownContentRatingSystem

func IsKnownContentRatingSystem(v ContentRatingSystem) bool

IsKnownContentRatingSystem reports whether v is one of the current schema-defined ContentRatingSystem values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownCreativeAction

func IsKnownCreativeAction(v CreativeAction) bool

IsKnownCreativeAction reports whether v is one of the current schema-defined CreativeAction values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownCreativeAgentCapability

func IsKnownCreativeAgentCapability(v CreativeAgentCapability) bool

IsKnownCreativeAgentCapability reports whether v is one of the current schema-defined CreativeAgentCapability values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownCreativeApprovalStatus

func IsKnownCreativeApprovalStatus(v CreativeApprovalStatus) bool

IsKnownCreativeApprovalStatus reports whether v is one of the current schema-defined CreativeApprovalStatus values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownCreativeEventReasonCode

func IsKnownCreativeEventReasonCode(v CreativeEventReasonCode) bool

IsKnownCreativeEventReasonCode reports whether v is one of the current schema-defined CreativeEventReasonCode values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownCreativeIdentifierType

func IsKnownCreativeIdentifierType(v CreativeIdentifierType) bool

IsKnownCreativeIdentifierType reports whether v is one of the current schema-defined CreativeIdentifierType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownCreativeQuality

func IsKnownCreativeQuality(v CreativeQuality) bool

IsKnownCreativeQuality reports whether v is one of the current schema-defined CreativeQuality values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownCreativeSelectionStrategy

func IsKnownCreativeSelectionStrategy(v CreativeSelectionStrategy) bool

IsKnownCreativeSelectionStrategy reports whether v is one of the current schema-defined CreativeSelectionStrategy values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownCreativeSortField

func IsKnownCreativeSortField(v CreativeSortField) bool

IsKnownCreativeSortField reports whether v is one of the current schema-defined CreativeSortField values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownCreativeStatus

func IsKnownCreativeStatus(v CreativeStatus) bool

IsKnownCreativeStatus reports whether v is one of the current schema-defined CreativeStatus values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownDaastTrackingEvent

func IsKnownDaastTrackingEvent(v DaastTrackingEvent) bool

IsKnownDaastTrackingEvent reports whether v is one of the current schema-defined DaastTrackingEvent values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownDaastVersion

func IsKnownDaastVersion(v DaastVersion) bool

IsKnownDaastVersion reports whether v is one of the current schema-defined DaastVersion values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownDayOfWeek

func IsKnownDayOfWeek(v DayOfWeek) bool

IsKnownDayOfWeek reports whether v is one of the current schema-defined DayOfWeek values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownDelegationAuthority

func IsKnownDelegationAuthority(v DelegationAuthority) bool

IsKnownDelegationAuthority reports whether v is one of the current schema-defined DelegationAuthority values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownDeliveryType

func IsKnownDeliveryType(v DeliveryType) bool

IsKnownDeliveryType reports whether v is one of the current schema-defined DeliveryType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownDemographicSystem

func IsKnownDemographicSystem(v DemographicSystem) bool

IsKnownDemographicSystem reports whether v is one of the current schema-defined DemographicSystem values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownDerivativeType

func IsKnownDerivativeType(v DerivativeType) bool

IsKnownDerivativeType reports whether v is one of the current schema-defined DerivativeType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownDevicePlatform

func IsKnownDevicePlatform(v DevicePlatform) bool

IsKnownDevicePlatform reports whether v is one of the current schema-defined DevicePlatform values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownDeviceType

func IsKnownDeviceType(v DeviceType) bool

IsKnownDeviceType reports whether v is one of the current schema-defined DeviceType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownDigitalSourceType

func IsKnownDigitalSourceType(v DigitalSourceType) bool

IsKnownDigitalSourceType reports whether v is one of the current schema-defined DigitalSourceType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownDimensionUnit

func IsKnownDimensionUnit(v DimensionUnit) bool

IsKnownDimensionUnit reports whether v is one of the current schema-defined DimensionUnit values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownDisclosurePersistence

func IsKnownDisclosurePersistence(v DisclosurePersistence) bool

IsKnownDisclosurePersistence reports whether v is one of the current schema-defined DisclosurePersistence values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownDisclosurePosition

func IsKnownDisclosurePosition(v DisclosurePosition) bool

IsKnownDisclosurePosition reports whether v is one of the current schema-defined DisclosurePosition values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownDistanceUnit

func IsKnownDistanceUnit(v DistanceUnit) bool

IsKnownDistanceUnit reports whether v is one of the current schema-defined DistanceUnit values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownDistributionIdentifierType

func IsKnownDistributionIdentifierType(v DistributionIdentifierType) bool

IsKnownDistributionIdentifierType reports whether v is one of the current schema-defined DistributionIdentifierType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownEmbeddedProvenanceMethod

func IsKnownEmbeddedProvenanceMethod(v EmbeddedProvenanceMethod) bool

IsKnownEmbeddedProvenanceMethod reports whether v is one of the current schema-defined EmbeddedProvenanceMethod values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownErrorCode

func IsKnownErrorCode(v ErrorCode) bool

IsKnownErrorCode reports whether v is one of the current schema-defined ErrorCode values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownErrorScope

func IsKnownErrorScope(v ErrorScope) bool

IsKnownErrorScope reports whether v is one of the current schema-defined ErrorScope values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownEscalationSeverity

func IsKnownEscalationSeverity(v EscalationSeverity) bool

IsKnownEscalationSeverity reports whether v is one of the current schema-defined EscalationSeverity values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownEventType

func IsKnownEventType(v EventType) bool

IsKnownEventType reports whether v is one of the current schema-defined EventType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownExclusivity

func IsKnownExclusivity(v Exclusivity) bool

IsKnownExclusivity reports whether v is one of the current schema-defined Exclusivity values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownFeatureCheckStatus

func IsKnownFeatureCheckStatus(v FeatureCheckStatus) bool

IsKnownFeatureCheckStatus reports whether v is one of the current schema-defined FeatureCheckStatus values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownFeedFormat

func IsKnownFeedFormat(v FeedFormat) bool

IsKnownFeedFormat reports whether v is one of the current schema-defined FeedFormat values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownFeedbackSource

func IsKnownFeedbackSource(v FeedbackSource) bool

IsKnownFeedbackSource reports whether v is one of the current schema-defined FeedbackSource values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownForecastMethod

func IsKnownForecastMethod(v ForecastMethod) bool

IsKnownForecastMethod reports whether v is one of the current schema-defined ForecastMethod values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownForecastRangeUnit

func IsKnownForecastRangeUnit(v ForecastRangeUnit) bool

IsKnownForecastRangeUnit reports whether v is one of the current schema-defined ForecastRangeUnit values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownForecastableMetric

func IsKnownForecastableMetric(v ForecastableMetric) bool

IsKnownForecastableMetric reports whether v is one of the current schema-defined ForecastableMetric values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownFormatIDParameter

func IsKnownFormatIDParameter(v FormatIDParameter) bool

IsKnownFormatIDParameter reports whether v is one of the current schema-defined FormatIDParameter values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownFrameRateType

func IsKnownFrameRateType(v FrameRateType) bool

IsKnownFrameRateType reports whether v is one of the current schema-defined FrameRateType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownFrequencyCapScope

func IsKnownFrequencyCapScope(v FrequencyCapScope) bool

IsKnownFrequencyCapScope reports whether v is one of the current schema-defined FrequencyCapScope values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownGenreTaxonomy

func IsKnownGenreTaxonomy(v GenreTaxonomy) bool

IsKnownGenreTaxonomy reports whether v is one of the current schema-defined GenreTaxonomy values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownGeoLevel

func IsKnownGeoLevel(v GeoLevel) bool

IsKnownGeoLevel reports whether v is one of the current schema-defined GeoLevel values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownGopType

func IsKnownGopType(v GopType) bool

IsKnownGopType reports whether v is one of the current schema-defined GopType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownGovernanceDecision

func IsKnownGovernanceDecision(v GovernanceDecision) bool

IsKnownGovernanceDecision reports whether v is one of the current schema-defined GovernanceDecision values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownGovernanceDomain

func IsKnownGovernanceDomain(v GovernanceDomain) bool

IsKnownGovernanceDomain reports whether v is one of the current schema-defined GovernanceDomain values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownGovernanceMode

func IsKnownGovernanceMode(v GovernanceMode) bool

IsKnownGovernanceMode reports whether v is one of the current schema-defined GovernanceMode values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownGovernancePhase

func IsKnownGovernancePhase(v GovernancePhase) bool

IsKnownGovernancePhase reports whether v is one of the current schema-defined GovernancePhase values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownHTTPMethod

func IsKnownHTTPMethod(v HTTPMethod) bool

IsKnownHTTPMethod reports whether v is one of the current schema-defined HTTPMethod values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownHistoryEntryType

func IsKnownHistoryEntryType(v HistoryEntryType) bool

IsKnownHistoryEntryType reports whether v is one of the current schema-defined HistoryEntryType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownIdentifierTypes

func IsKnownIdentifierTypes(v IdentifierTypes) bool

IsKnownIdentifierTypes reports whether v is one of the current schema-defined IdentifierTypes values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownImpairmentOfflineState

func IsKnownImpairmentOfflineState(v ImpairmentOfflineState) bool

IsKnownImpairmentOfflineState reports whether v is one of the current schema-defined ImpairmentOfflineState values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownImpairmentReasonCode

func IsKnownImpairmentReasonCode(v ImpairmentReasonCode) bool

IsKnownImpairmentReasonCode reports whether v is one of the current schema-defined ImpairmentReasonCode values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownInstallmentStatus

func IsKnownInstallmentStatus(v InstallmentStatus) bool

IsKnownInstallmentStatus reports whether v is one of the current schema-defined InstallmentStatus values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownJavascriptModuleType

func IsKnownJavascriptModuleType(v JavascriptModuleType) bool

IsKnownJavascriptModuleType reports whether v is one of the current schema-defined JavascriptModuleType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownLandingPageRequirement

func IsKnownLandingPageRequirement(v LandingPageRequirement) bool

IsKnownLandingPageRequirement reports whether v is one of the current schema-defined LandingPageRequirement values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownLegacyPostalSystem

func IsKnownLegacyPostalSystem(v LegacyPostalSystem) bool

IsKnownLegacyPostalSystem reports whether v is one of the current schema-defined LegacyPostalSystem values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownLiftDimension

func IsKnownLiftDimension(v LiftDimension) bool

IsKnownLiftDimension reports whether v is one of the current schema-defined LiftDimension values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownLogoSlot

func IsKnownLogoSlot(v LogoSlot) bool

IsKnownLogoSlot reports whether v is one of the current schema-defined LogoSlot values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownMakegoodRemedy

func IsKnownMakegoodRemedy(v MakegoodRemedy) bool

IsKnownMakegoodRemedy reports whether v is one of the current schema-defined MakegoodRemedy values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownMarkdownFlavor

func IsKnownMarkdownFlavor(v MarkdownFlavor) bool

IsKnownMarkdownFlavor reports whether v is one of the current schema-defined MarkdownFlavor values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownMatchIDType

func IsKnownMatchIDType(v MatchIDType) bool

IsKnownMatchIDType reports whether v is one of the current schema-defined MatchIDType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownMatchType

func IsKnownMatchType(v MatchType) bool

IsKnownMatchType reports whether v is one of the current schema-defined MatchType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownMediaBuyActionMode

func IsKnownMediaBuyActionMode(v MediaBuyActionMode) bool

IsKnownMediaBuyActionMode reports whether v is one of the current schema-defined MediaBuyActionMode values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownMediaBuyHealth

func IsKnownMediaBuyHealth(v MediaBuyHealth) bool

IsKnownMediaBuyHealth reports whether v is one of the current schema-defined MediaBuyHealth values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownMediaBuyStatus

func IsKnownMediaBuyStatus(v MediaBuyStatus) bool

IsKnownMediaBuyStatus reports whether v is one of the current schema-defined MediaBuyStatus values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownMediaBuyValidAction

func IsKnownMediaBuyValidAction(v MediaBuyValidAction) bool

IsKnownMediaBuyValidAction reports whether v is one of the current schema-defined MediaBuyValidAction values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownMetricScope

func IsKnownMetricScope(v MetricScope) bool

IsKnownMetricScope reports whether v is one of the current schema-defined MetricScope values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownMetricType

func IsKnownMetricType(v MetricType) bool

IsKnownMetricType reports whether v is one of the current schema-defined MetricType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownMetroSystem

func IsKnownMetroSystem(v MetroSystem) bool

IsKnownMetroSystem reports whether v is one of the current schema-defined MetroSystem values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownMoovAtomPosition

func IsKnownMoovAtomPosition(v MoovAtomPosition) bool

IsKnownMoovAtomPosition reports whether v is one of the current schema-defined MoovAtomPosition values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownNotificationType

func IsKnownNotificationType(v NotificationType) bool

IsKnownNotificationType reports whether v is one of the current schema-defined NotificationType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownOfferingAvailabilityStatus

func IsKnownOfferingAvailabilityStatus(v OfferingAvailabilityStatus) bool

IsKnownOfferingAvailabilityStatus reports whether v is one of the current schema-defined OfferingAvailabilityStatus values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownOptimizationMetric

func IsKnownOptimizationMetric(v OptimizationMetric) bool

IsKnownOptimizationMetric reports whether v is one of the current schema-defined OptimizationMetric values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownOutcomeType

func IsKnownOutcomeType(v OutcomeType) bool

IsKnownOutcomeType reports whether v is one of the current schema-defined OutcomeType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownPacing

func IsKnownPacing(v Pacing) bool

IsKnownPacing reports whether v is one of the current schema-defined Pacing values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownPaymentTerms

func IsKnownPaymentTerms(v PaymentTerms) bool

IsKnownPaymentTerms reports whether v is one of the current schema-defined PaymentTerms values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownPerformanceStandardMetric

func IsKnownPerformanceStandardMetric(v PerformanceStandardMetric) bool

IsKnownPerformanceStandardMetric reports whether v is one of the current schema-defined PerformanceStandardMetric values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownPolicyCategory

func IsKnownPolicyCategory(v PolicyCategory) bool

IsKnownPolicyCategory reports whether v is one of the current schema-defined PolicyCategory values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownPolicyEnforcement

func IsKnownPolicyEnforcement(v PolicyEnforcement) bool

IsKnownPolicyEnforcement reports whether v is one of the current schema-defined PolicyEnforcement values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownPostalSystem

func IsKnownPostalSystem(v PostalSystem) bool

IsKnownPostalSystem reports whether v is one of the current schema-defined PostalSystem values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownPreviewOutputFormat

func IsKnownPreviewOutputFormat(v PreviewOutputFormat) bool

IsKnownPreviewOutputFormat reports whether v is one of the current schema-defined PreviewOutputFormat values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownPricingModel

func IsKnownPricingModel(v PricingModel) bool

IsKnownPricingModel reports whether v is one of the current schema-defined PricingModel values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownProductionQuality

func IsKnownProductionQuality(v ProductionQuality) bool

IsKnownProductionQuality reports whether v is one of the current schema-defined ProductionQuality values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownPropertyType

func IsKnownPropertyType(v PropertyType) bool

IsKnownPropertyType reports whether v is one of the current schema-defined PropertyType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownProposalStatus

func IsKnownProposalStatus(v ProposalStatus) bool

IsKnownProposalStatus reports whether v is one of the current schema-defined ProposalStatus values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownPublisherIdentifierTypes

func IsKnownPublisherIdentifierTypes(v PublisherIdentifierTypes) bool

IsKnownPublisherIdentifierTypes reports whether v is one of the current schema-defined PublisherIdentifierTypes values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownPurchaseType

func IsKnownPurchaseType(v PurchaseType) bool

IsKnownPurchaseType reports whether v is one of the current schema-defined PurchaseType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownReachUnit

func IsKnownReachUnit(v ReachUnit) bool

IsKnownReachUnit reports whether v is one of the current schema-defined ReachUnit values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownReportingFrequency

func IsKnownReportingFrequency(v ReportingFrequency) bool

IsKnownReportingFrequency reports whether v is one of the current schema-defined ReportingFrequency values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownResponseType

func IsKnownResponseType(v ResponseType) bool

IsKnownResponseType reports whether v is one of the current schema-defined ResponseType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownRestrictedAttribute

func IsKnownRestrictedAttribute(v RestrictedAttribute) bool

IsKnownRestrictedAttribute reports whether v is one of the current schema-defined RestrictedAttribute values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownRightType

func IsKnownRightType(v RightType) bool

IsKnownRightType reports whether v is one of the current schema-defined RightType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownRightUse

func IsKnownRightUse(v RightUse) bool

IsKnownRightUse reports whether v is one of the current schema-defined RightUse values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownRightsBillingPeriod

func IsKnownRightsBillingPeriod(v RightsBillingPeriod) bool

IsKnownRightsBillingPeriod reports whether v is one of the current schema-defined RightsBillingPeriod values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownScanType

func IsKnownScanType(v ScanType) bool

IsKnownScanType reports whether v is one of the current schema-defined ScanType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownSiSessionStatus

func IsKnownSiSessionStatus(v SiSessionStatus) bool

IsKnownSiSessionStatus reports whether v is one of the current schema-defined SiSessionStatus values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownSignalCatalogType

func IsKnownSignalCatalogType(v SignalCatalogType) bool

IsKnownSignalCatalogType reports whether v is one of the current schema-defined SignalCatalogType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownSignalSource

func IsKnownSignalSource(v SignalSource) bool

IsKnownSignalSource reports whether v is one of the current schema-defined SignalSource values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownSignalValueType

func IsKnownSignalValueType(v SignalValueType) bool

IsKnownSignalValueType reports whether v is one of the current schema-defined SignalValueType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownSnapshotUnavailableReason

func IsKnownSnapshotUnavailableReason(v SnapshotUnavailableReason) bool

IsKnownSnapshotUnavailableReason reports whether v is one of the current schema-defined SnapshotUnavailableReason values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownSocialPlacementSurface

func IsKnownSocialPlacementSurface(v SocialPlacementSurface) bool

IsKnownSocialPlacementSurface reports whether v is one of the current schema-defined SocialPlacementSurface values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownSortDirection

func IsKnownSortDirection(v SortDirection) bool

IsKnownSortDirection reports whether v is one of the current schema-defined SortDirection values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownSortMetric

func IsKnownSortMetric(v SortMetric) bool

IsKnownSortMetric reports whether v is one of the current schema-defined SortMetric values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownSpecialCategory

func IsKnownSpecialCategory(v SpecialCategory) bool

IsKnownSpecialCategory reports whether v is one of the current schema-defined SpecialCategory values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownSpecialism

func IsKnownSpecialism(v Specialism) bool

IsKnownSpecialism reports whether v is one of the current schema-defined Specialism values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownSponsoredPlacementType

func IsKnownSponsoredPlacementType(v SponsoredPlacementType) bool

IsKnownSponsoredPlacementType reports whether v is one of the current schema-defined SponsoredPlacementType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownTalentRole

func IsKnownTalentRole(v TalentRole) bool

IsKnownTalentRole reports whether v is one of the current schema-defined TalentRole values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownTaskStatus

func IsKnownTaskStatus(v TaskStatus) bool

IsKnownTaskStatus reports whether v is one of the current schema-defined TaskStatus values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownTaskType

func IsKnownTaskType(v TaskType) bool

IsKnownTaskType reports whether v is one of the current schema-defined TaskType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownTransportMode

func IsKnownTransportMode(v TransportMode) bool

IsKnownTransportMode reports whether v is one of the current schema-defined TransportMode values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownTravelTimeUnit

func IsKnownTravelTimeUnit(v TravelTimeUnit) bool

IsKnownTravelTimeUnit reports whether v is one of the current schema-defined TravelTimeUnit values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownUIDType

func IsKnownUIDType(v UIDType) bool

IsKnownUIDType reports whether v is one of the current schema-defined UIDType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownURLAssetType

func IsKnownURLAssetType(v URLAssetType) bool

IsKnownURLAssetType reports whether v is one of the current schema-defined URLAssetType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownUniversalMacro

func IsKnownUniversalMacro(v UniversalMacro) bool

IsKnownUniversalMacro reports whether v is one of the current schema-defined UniversalMacro values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownUpdateFrequency

func IsKnownUpdateFrequency(v UpdateFrequency) bool

IsKnownUpdateFrequency reports whether v is one of the current schema-defined UpdateFrequency values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownValidationMode

func IsKnownValidationMode(v ValidationMode) bool

IsKnownValidationMode reports whether v is one of the current schema-defined ValidationMode values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownVastTrackingEvent

func IsKnownVastTrackingEvent(v VastTrackingEvent) bool

IsKnownVastTrackingEvent reports whether v is one of the current schema-defined VastTrackingEvent values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownVastVersion

func IsKnownVastVersion(v VastVersion) bool

IsKnownVastVersion reports whether v is one of the current schema-defined VastVersion values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownVideoPlacementType

func IsKnownVideoPlacementType(v VideoPlacementType) bool

IsKnownVideoPlacementType reports whether v is one of the current schema-defined VideoPlacementType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownViewabilityStandard

func IsKnownViewabilityStandard(v ViewabilityStandard) bool

IsKnownViewabilityStandard reports whether v is one of the current schema-defined ViewabilityStandard values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownWatermarkMediaType

func IsKnownWatermarkMediaType(v WatermarkMediaType) bool

IsKnownWatermarkMediaType reports whether v is one of the current schema-defined WatermarkMediaType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownWcagLevel

func IsKnownWcagLevel(v WcagLevel) bool

IsKnownWcagLevel reports whether v is one of the current schema-defined WcagLevel values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownWebhookResponseType

func IsKnownWebhookResponseType(v WebhookResponseType) bool

IsKnownWebhookResponseType reports whether v is one of the current schema-defined WebhookResponseType values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func IsKnownWebhookSecurityMethod

func IsKnownWebhookSecurityMethod(v WebhookSecurityMethod) bool

IsKnownWebhookSecurityMethod reports whether v is one of the current schema-defined WebhookSecurityMethod values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

func ListCollectionListsResponse

func ListCollectionListsResponse(lists []CollectionList, pagination *PaginationResponse) (*mcp.CallToolResult, any, error)

ListCollectionListsResponse builds a list_collection_lists response.

func ListCreativesResponse

func ListCreativesResponse(creatives []map[string]any) (*mcp.CallToolResult, any, error)

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 MajorFromADCPVersion

func MajorFromADCPVersion(version string) (int, bool)

MajorFromADCPVersion extracts the major component from an AdCP wire version.

func MediaBuyResponse

func MediaBuyResponse(data CreateMediaBuyResponse) (*mcp.CallToolResult, any, error)

MediaBuyResponse builds a create_media_buy response.

func MediaBuysDataResponse

func MediaBuysDataResponse(data *GetMediaBuysResponse) (*mcp.CallToolResult, any, error)

MediaBuysDataResponse builds a get_media_buys response with the full envelope.

func MediaBuysResponse

func MediaBuysResponse(mediaBuys []MediaBuyData, sandbox bool) (*mcp.CallToolResult, any, error)

MediaBuysResponse builds a get_media_buys response.

func NegotiateADCPVersion

func NegotiateADCPVersion(requestedVersion string, requestedMajor int, supported []string) (string, bool)

NegotiateADCPVersion selects the version a server should serve for a request.

If requestedVersion is present, it must be the buyer's release pin. If only requestedMajor is present, the highest supported release in that major is selected for 3.x backward compatibility. If neither is present, the highest supported release is selected.

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 NormalizeADCPVersion

func NormalizeADCPVersion(version string) (string, bool)

NormalizeADCPVersion converts full semver bundle/build versions such as "3.1.0-rc.3" into release-precision wire versions such as "3.1-rc.3".

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 Ptr

func Ptr[T any](v T) *T

Ptr returns a pointer to v for optional typed fields.

func Register

func Register(server *mcp.Server, cfg Config)

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.CreateMediaBuyResponse, 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

func Result(data any, summary string) (*mcp.CallToolResult, any, error)

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

func SignalsResponse(signals []Signal, sandbox bool) (*mcp.CallToolResult, any, error)

SignalsResponse builds a get_signals response.

func SupportedADCPVersions

func SupportedADCPVersions() []string

SupportedADCPVersions returns the 3.x release-precision versions this SDK supports on the wire. Callers receive a fresh slice.

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"`
	SupportedVersions []string        `json:"supported_versions,omitempty"`
	BuildVersion      string          `json:"build_version,omitempty"`
	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.
	Status              AccountStatus            `json:"status"`                   // Account lifecycle status. See the Accounts Protocol overview for the
	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
	Billing             BillingParty             `json:"billing,omitempty"`        // Who is invoiced on this account. See billing_entity for the invoiced party's
	BillingEntity       *BusinessEntity          `json:"billing_entity,omitempty"` // Business entity details for the party responsible for payment. Contains the
	RateCard            string                   `json:"rate_card,omitempty"`      // Identifier for the rate card applied to this account
	PaymentTerms        PaymentTerms             `json:"payment_terms,omitempty"`  // Payment terms agreed for this account. Binding for all invoices when the
	CreditLimit         *AccountCreditLimit      `json:"credit_limit,omitempty"`   // Maximum outstanding balance allowed
	Setup               *AccountSetup            `json:"setup,omitempty"`          // Present when status is 'pending_approval'. Contains next steps for completing
	AccountScope        AccountScope             `json:"account_scope,omitempty"`
	GovernanceAgents    []AccountGovernanceAgent `json:"governance_agents,omitempty"`    // Governance agent endpoint registered on this account. Exactly one entry per
	ReportingBucket     *ReportingBucket         `json:"reporting_bucket,omitempty"`     // Cloud storage bucket where the seller delivers offline reporting files for
	Sandbox             *bool                    `json:"sandbox,omitempty"`              // When true, this is a sandbox account — no real platform calls, no real spend.
	NotificationConfigs []NotificationConfig     `json:"notification_configs,omitempty"` // Account-level webhook subscriptions for notifications whose lifecycle outlives
	Ext                 any                      `json:"ext,omitempty"`
}

Account — A billing account representing the relationship between a buyer and seller. The account determines

type AccountAuthorization

type AccountAuthorization struct {
	AllowedTasks []string            `json:"allowed_tasks"`          // Canonical snake_case task names the caller may invoke against this account
	FieldScopes  map[string][]string `json:"field_scopes,omitempty"` // Optional per-task allowlist of request fields the caller may set. Keys are
	ScopeName    any                 `json:"scope_name,omitempty"`   // Optional named scope identifier. When present, callers and the vendor agent
	ReadOnly     *bool               `json:"read_only,omitempty"`    // Convenience flag. When true, the caller is permitted only non-mutating tasks.
}

AccountAuthorization — The authenticated caller's grant against a specific account: which tasks are callable, which

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 AccountCreditLimit

type AccountCreditLimit struct {
	Amount   float64 `json:"amount"`
	Currency string  `json:"currency"`
}

AccountCreditLimit — Maximum outstanding balance allowed

type AccountGovernanceAgent

type AccountGovernanceAgent struct {
	URL string `json:"url"` // Governance agent endpoint URL. Must use HTTPS.
}

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 AccountScope

type AccountScope = string

AccountScope — How the seller scoped a billing account relative to the operator and brand

const (
	AccountScopeOperator      AccountScope = "operator"
	AccountScopeBrand         AccountScope = "brand"
	AccountScopeOperatorBrand AccountScope = "operator_brand"
	AccountScopeAgent         AccountScope = "agent"
)

func KnownAccountScopeValues

func KnownAccountScopeValues() []AccountScope

KnownAccountScopeValues returns the current schema-defined values for AccountScope.

func ParseAccountScope

func ParseAccountScope(s string) (AccountScope, error)

ParseAccountScope returns s as AccountScope when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type AccountSetup

type AccountSetup struct {
	URL       string `json:"url,omitempty"`
	Message   string `json:"message"`
	ExpiresAt string `json:"expires_at,omitempty"`
}

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"
)

func KnownAccountStatusValues

func KnownAccountStatusValues() []AccountStatus

KnownAccountStatusValues returns the current schema-defined values for AccountStatus.

func ParseAccountStatus

func ParseAccountStatus(s string) (AccountStatus, error)

ParseAccountStatus returns s as AccountStatus when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type AccountWithAuthorization

type AccountWithAuthorization 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.
	Status              AccountStatus            `json:"status"`                   // Account lifecycle status. See the Accounts Protocol overview for the
	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
	Billing             BillingParty             `json:"billing,omitempty"`        // Who is invoiced on this account. See billing_entity for the invoiced party's
	BillingEntity       *BusinessEntity          `json:"billing_entity,omitempty"` // Business entity details for the party responsible for payment. Contains the
	RateCard            string                   `json:"rate_card,omitempty"`      // Identifier for the rate card applied to this account
	PaymentTerms        PaymentTerms             `json:"payment_terms,omitempty"`  // Payment terms agreed for this account. Binding for all invoices when the
	CreditLimit         *AccountCreditLimit      `json:"credit_limit,omitempty"`   // Maximum outstanding balance allowed
	Setup               *AccountSetup            `json:"setup,omitempty"`          // Present when status is 'pending_approval'. Contains next steps for completing
	AccountScope        AccountScope             `json:"account_scope,omitempty"`
	GovernanceAgents    []AccountGovernanceAgent `json:"governance_agents,omitempty"`    // Governance agent endpoint registered on this account. Exactly one entry per
	ReportingBucket     *ReportingBucket         `json:"reporting_bucket,omitempty"`     // Cloud storage bucket where the seller delivers offline reporting files for
	Sandbox             *bool                    `json:"sandbox,omitempty"`              // When true, this is a sandbox account — no real platform calls, no real spend.
	NotificationConfigs []NotificationConfig     `json:"notification_configs,omitempty"` // Account-level webhook subscriptions for notifications whose lifecycle outlives
	Ext                 any                      `json:"ext,omitempty"`
	Authorization       *AccountAuthorization    `json:"authorization,omitempty"` // Optional. The caller's scope grant against this account. Vendor agents of any
}

AccountWithAuthorization — List-accounts response item: the full Account object plus optional caller-specific authorization

type ActionNotAllowedReason

type ActionNotAllowedReason = string

ActionNotAllowedReason — Reason a mutation on update_media_buy was rejected with ACTION_NOT_ALLOWED.

const (
	ActionNotAllowedReasonWrongStatus           ActionNotAllowedReason = "wrong_status"
	ActionNotAllowedReasonNotSupportedOnProduct ActionNotAllowedReason = "not_supported_on_product"
	ActionNotAllowedReasonNotSupportedOnBuy     ActionNotAllowedReason = "not_supported_on_buy"
	ActionNotAllowedReasonModeMismatch          ActionNotAllowedReason = "mode_mismatch"
)

func KnownActionNotAllowedReasonValues

func KnownActionNotAllowedReasonValues() []ActionNotAllowedReason

KnownActionNotAllowedReasonValues returns the current schema-defined values for ActionNotAllowedReason.

func ParseActionNotAllowedReason

func ParseActionNotAllowedReason(s string) (ActionNotAllowedReason, error)

ParseActionNotAllowedReason returns s as ActionNotAllowedReason when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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"
)

func KnownActionSourceValues

func KnownActionSourceValues() []ActionSource

KnownActionSourceValues returns the current schema-defined values for ActionSource.

func ParseActionSource

func ParseActionSource(s string) (ActionSource, error)

ParseActionSource returns s as ActionSource when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type ActivateSignalRequest

type ActivateSignalRequest struct {
	AdcpVersion          string             `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion     int                `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	Action               string             `json:"action,omitempty"`             // Whether to activate or deactivate the signal. Deactivating removes the segment
	SignalAgentSegmentID string             `json:"signal_agent_segment_id"`      // Opaque activation handle returned in the signal_agent_segment_id field of each
	Destinations         []DestinationInput `json:"destinations"`                 // Target destination(s) for activation. If the authenticated caller matches one
	PricingOptionID      string             `json:"pricing_option_id,omitempty"`  // The pricing option selected from the signal's pricing_options in the
	Account              *AccountReference  `json:"account,omitempty"`            // Account for this activation. Associates with a commercial relationship
	IdempotencyKey       string             `json:"idempotency_key"`              // Client-generated unique key for this request. Prevents duplicate activations
	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 ActivationKey struct {
	Type      string `json:"type"`
	SegmentID string `json:"segment_id,omitempty"`
	Key       string `json:"key,omitempty"`
	Value     string `json:"value,omitempty"`
}

type AdInventoryConfig

type AdInventoryConfig struct {
	ExpectedBreaks       int      `json:"expected_breaks"`                   // Number of planned ad breaks in the installment
	TotalAdSeconds       int      `json:"total_ad_seconds,omitempty"`        // Total seconds of ad time across all breaks
	MaxAdDurationSeconds int      `json:"max_ad_duration_seconds,omitempty"` // Maximum duration in seconds for a single ad within a break. Buyers need this
	UnplannedBreaks      *bool    `json:"unplanned_breaks,omitempty"`        // Whether ad breaks are dynamic and driven by live conditions (sports timeouts
	SupportedFormats     []string `json:"supported_formats,omitempty"`       // Ad format types supported in breaks (e.g., 'video', 'audio', 'display')
}

AdInventoryConfig — Break-based ad inventory configuration for an installment. Describes the ad breaks available

type AdcpError

type AdcpError = map[string]any

Type aliases for $ref targets from schemas not directly generated.

type AdcpProtocol

type AdcpProtocol = string

AdcpProtocol — AdCP protocols for task categorization — referenced by tasks-list-request

const (
	AdcpProtocolMediaBuy              AdcpProtocol = "media-buy"
	AdcpProtocolSignals               AdcpProtocol = "signals"
	AdcpProtocolGovernance            AdcpProtocol = "governance"
	AdcpProtocolCreative              AdcpProtocol = "creative"
	AdcpProtocolBrand                 AdcpProtocol = "brand"
	AdcpProtocolSponsoredIntelligence AdcpProtocol = "sponsored-intelligence"
	AdcpProtocolMeasurement           AdcpProtocol = "measurement"
)

func KnownAdcpProtocolValues

func KnownAdcpProtocolValues() []AdcpProtocol

KnownAdcpProtocolValues returns the current schema-defined values for AdcpProtocol.

func ParseAdcpProtocol

func ParseAdcpProtocol(s string) (AdcpProtocol, error)

ParseAdcpProtocol returns s as AdcpProtocol when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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"
)

func KnownAdjustmentKindValues

func KnownAdjustmentKindValues() []AdjustmentKind

KnownAdjustmentKindValues returns the current schema-defined values for AdjustmentKind.

func ParseAdjustmentKind

func ParseAdjustmentKind(s string) (AdjustmentKind, error)

ParseAdjustmentKind returns s as AdjustmentKind when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type AdvertiserIndustry

type AdvertiserIndustry = string

AdvertiserIndustry — Standardized advertiser industry classification. Top-level categories classify

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"
)

func KnownAdvertiserIndustryValues

func KnownAdvertiserIndustryValues() []AdvertiserIndustry

KnownAdvertiserIndustryValues returns the current schema-defined values for AdvertiserIndustry.

func ParseAdvertiserIndustry

func ParseAdvertiserIndustry(s string) (AdvertiserIndustry, error)

ParseAdvertiserIndustry returns s as AdvertiserIndustry when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type AgeRestriction

type AgeRestriction struct {
	Min                  int                     `json:"min"`                             // Minimum age required
	VerificationRequired *bool                   `json:"verification_required,omitempty"` // Whether verified age (not inferred) is required for compliance
	AcceptedMethods      []AgeVerificationMethod `json:"accepted_methods,omitempty"`      // Accepted verification methods. If omitted, any method the platform supports is
}

AgeRestriction — Age restriction for compliance. Use for legal requirements (alcohol, gambling), not audience

type AgeRestrictionCaps

type AgeRestrictionCaps struct {
	Supported           *bool    `json:"supported,omitempty"`
	VerificationMethods []string `json:"verification_methods,omitempty"`
}

type AgeVerificationMethod

type AgeVerificationMethod = string

AgeVerificationMethod — Methods for verifying user age for compliance. Does not include 'inferred' as

const (
	AgeVerificationMethodFacialAgeEstimation AgeVerificationMethod = "facial_age_estimation"
	AgeVerificationMethodIDDocument          AgeVerificationMethod = "id_document"
	AgeVerificationMethodDigitalID           AgeVerificationMethod = "digital_id"
	AgeVerificationMethodCreditCard          AgeVerificationMethod = "credit_card"
	AgeVerificationMethodWorldID             AgeVerificationMethod = "world_id"
)

func KnownAgeVerificationMethodValues

func KnownAgeVerificationMethodValues() []AgeVerificationMethod

KnownAgeVerificationMethodValues returns the current schema-defined values for AgeVerificationMethod.

func ParseAgeVerificationMethod

func ParseAgeVerificationMethod(s string) (AgeVerificationMethod, error)

ParseAgeVerificationMethod returns s as AgeVerificationMethod when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type Artifact

type Artifact struct {
	PropertyRID    string               `json:"property_rid"`               // Stable property identifier from the property catalog. Globally unique across
	ArtifactID     string               `json:"artifact_id"`                // Identifier for this artifact within the property. The property owner defines
	VariantID      string               `json:"variant_id,omitempty"`       // Identifies a specific variant of this artifact. Use for A/B tests
	FormatID       *FormatRef           `json:"format_id,omitempty"`        // Always a structured object {agent_url, id} — never a plain string. Optional
	URL            string               `json:"url,omitempty"`              // Optional URL for this artifact (web page, podcast feed, video page). Not all
	PublishedTime  string               `json:"published_time,omitempty"`   // When the artifact was published (ISO 8601 format)
	LastUpdateTime string               `json:"last_update_time,omitempty"` // When the artifact was last modified (ISO 8601 format)
	Assets         []any                `json:"assets"`                     // Artifact assets in document flow order - text blocks, images, video, audio
	Metadata       *ArtifactMetadata    `json:"metadata,omitempty"`         // Rich metadata extracted from the artifact
	Provenance     *Provenance          `json:"provenance,omitempty"`       // Provenance metadata for this artifact. Serves as the default provenance for
	Identifiers    *ArtifactIdentifiers `json:"identifiers,omitempty"`      // Platform-specific identifiers for this artifact
}

Artifact — Content artifact for safety and suitability evaluation. An artifact represents content adjacent to

type ArtifactIdentifiers

type ArtifactIdentifiers struct {
	ApplePodcastID      string `json:"apple_podcast_id,omitempty"`      // Apple Podcasts ID
	SpotifyCollectionID string `json:"spotify_collection_id,omitempty"` // Spotify collection ID
	PodcastGuid         string `json:"podcast_guid,omitempty"`          // Podcast GUID (from RSS feed)
	YoutubeVideoID      string `json:"youtube_video_id,omitempty"`      // YouTube video ID
	RssURL              string `json:"rss_url,omitempty"`               // RSS feed URL
}

ArtifactIdentifiers — Platform-specific identifiers for this artifact

type ArtifactMetadata

type ArtifactMetadata struct {
	Canonical   string           `json:"canonical,omitempty"`    // Canonical URL
	Author      string           `json:"author,omitempty"`       // Artifact author name
	Keywords    string           `json:"keywords,omitempty"`     // Artifact keywords
	OpenGraph   map[string]any   `json:"open_graph,omitempty"`   // Open Graph protocol metadata
	TwitterCard map[string]any   `json:"twitter_card,omitempty"` // Twitter Card metadata
	JSONLd      []map[string]any `json:"json_ld,omitempty"`      // JSON-LD structured data (schema.org)
}

ArtifactMetadata — Rich metadata extracted from the artifact

type ArtifactWebhookArtifact

type ArtifactWebhookArtifact struct {
	Artifact     Artifact `json:"artifact"`                // The content artifact
	DeliveredAt  string   `json:"delivered_at"`            // When the impression was delivered (ISO 8601)
	ImpressionID string   `json:"impression_id,omitempty"` // Optional impression identifier for correlation with delivery reports
	PackageID    string   `json:"package_id,omitempty"`    // Package within the media buy this artifact relates to
}

type ArtifactWebhookConfig

type ArtifactWebhookConfig struct {
	URL            string                      `json:"url"`                       // Webhook endpoint URL for artifact delivery
	Token          string                      `json:"token,omitempty"`           // Optional client-provided token for webhook validation. Echoed back in webhook
	Authentication LegacyWebhookAuthentication `json:"authentication"`            // Legacy authentication configuration for webhook delivery (A2A-compatible).
	DeliveryMode   string                      `json:"delivery_mode"`             // How artifacts are delivered. 'realtime' pushes artifacts as impressions occur.
	BatchFrequency string                      `json:"batch_frequency,omitempty"` // For batched delivery, how often to push artifacts. Required when delivery_mode
	SamplingRate   *float64                    `json:"sampling_rate,omitempty"`   // Fraction of impressions to include (0-1). 1.0 = all impressions, 0.1 = 10%
}

ArtifactWebhookConfig — Optional webhook configuration for content artifact delivery. Used by governance agents to

type ArtifactWebhookPagination

type ArtifactWebhookPagination struct {
	TotalArtifacts int `json:"total_artifacts,omitempty"` // Total artifacts in the delivery period
	BatchNumber    int `json:"batch_number,omitempty"`    // Current batch number (1-indexed)
	TotalBatches   int `json:"total_batches,omitempty"`   // Total batches for this delivery period
}

ArtifactWebhookPagination — Pagination info when batching large artifact sets

type ArtifactWebhookPayload

type ArtifactWebhookPayload struct {
	IdempotencyKey string                     `json:"idempotency_key"`      // Sender-generated key stable across retries of the same webhook event. Sales
	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
	Timestamp      string                     `json:"timestamp"`            // When this batch was generated (ISO 8601)
	Artifacts      []ArtifactWebhookArtifact  `json:"artifacts"`            // Content artifacts from delivered impressions
	Pagination     *ArtifactWebhookPagination `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

func (*ArtifactWebhookPayload) IdempotencyKeyPtr

func (p *ArtifactWebhookPayload) IdempotencyKeyPtr() *string

type AssessmentStatus

type AssessmentStatus = string

AssessmentStatus — Standardized quality level for health and readiness assessments. Comparable

const (
	AssessmentStatusInsufficient AssessmentStatus = "insufficient"
	AssessmentStatusMinimum      AssessmentStatus = "minimum"
	AssessmentStatusGood         AssessmentStatus = "good"
	AssessmentStatusExcellent    AssessmentStatus = "excellent"
)

func KnownAssessmentStatusValues

func KnownAssessmentStatusValues() []AssessmentStatus

KnownAssessmentStatusValues returns the current schema-defined values for AssessmentStatus.

func ParseAssessmentStatus

func ParseAssessmentStatus(s string) (AssessmentStatus, error)

ParseAssessmentStatus returns s as AssessmentStatus when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type AssetContentType

type AssetContentType = string

AssetContentType — Types of content that can be used as creative assets. Describes what KIND of

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"
	AssetContentTypePublishedPost AssetContentType = "published_post"
)

func KnownAssetContentTypeValues

func KnownAssetContentTypeValues() []AssetContentType

KnownAssetContentTypeValues returns the current schema-defined values for AssetContentType.

func ParseAssetContentType

func ParseAssetContentType(s string) (AssetContentType, error)

ParseAssetContentType returns s as AssetContentType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type AssetSlot

type AssetSlot struct {
	ItemType           string   `json:"item_type"`
	AssetID            string   `json:"asset_id"`
	AssetType          string   `json:"asset_type"`
	Required           bool     `json:"required"`
	Description        string   `json:"description,omitempty"`
	AcceptedMediaTypes []string `json:"accepted_media_types,omitempty"`
}

type AttestationClaim

type AttestationClaim = string

AttestationClaim — A claim a verified identity attestation can establish about a user. Personhood

const (
	AttestationClaimUniqueHuman AttestationClaim = "unique_human"
	AttestationClaimAgeOver13   AttestationClaim = "age_over_13"
	AttestationClaimAgeOver16   AttestationClaim = "age_over_16"
	AttestationClaimAgeOver18   AttestationClaim = "age_over_18"
	AttestationClaimAgeOver21   AttestationClaim = "age_over_21"
)

func KnownAttestationClaimValues

func KnownAttestationClaimValues() []AttestationClaim

KnownAttestationClaimValues returns the current schema-defined values for AttestationClaim.

func ParseAttestationClaim

func ParseAttestationClaim(s string) (AttestationClaim, error)

ParseAttestationClaim returns s as AttestationClaim when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type AttributionMethodology

type AttributionMethodology = string

AttributionMethodology — How attribution between ad exposure and outcome events was computed. Used as a

const (
	AttributionMethodologyDeterministicPurchase AttributionMethodology = "deterministic_purchase"
	AttributionMethodologyProbabilistic         AttributionMethodology = "probabilistic"
	AttributionMethodologyPanelBased            AttributionMethodology = "panel_based"
	AttributionMethodologyModeled               AttributionMethodology = "modeled"
)

func KnownAttributionMethodologyValues

func KnownAttributionMethodologyValues() []AttributionMethodology

KnownAttributionMethodologyValues returns the current schema-defined values for AttributionMethodology.

func ParseAttributionMethodology

func ParseAttributionMethodology(s string) (AttributionMethodology, error)

ParseAttributionMethodology returns s as AttributionMethodology when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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"
)

func KnownAttributionModelValues

func KnownAttributionModelValues() []AttributionModel

KnownAttributionModelValues returns the current schema-defined values for AttributionModel.

func ParseAttributionModel

func ParseAttributionModel(s string) (AttributionModel, error)

ParseAttributionModel returns s as AttributionModel when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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 []AudienceSelector `json:"include,omitempty"` // Desired audience criteria. The seller's targeting should align with these.
	Exclude []AudienceSelector `json:"exclude,omitempty"` // Excluded audience criteria. The seller's targeting must not overlap with
}

AudienceConstraints — Buyer-defined audience targeting constraints for a campaign plan. Specifies who the campaign

type AudienceSelector

type AudienceSelector struct {
	Type      string     `json:"type,omitempty"`       // Discriminator for description-based selectors
	SignalRef *SignalRef `json:"signal_ref,omitempty"` // The signal to target. New selectors SHOULD use signal_ref.
	// Deprecated: DEPRECATED.
	SignalID    *SignalID `json:"signal_id,omitempty"`   // DEPRECATED. Use signal_ref instead. Legacy SignalId retained for compatibility
	ValueType   string    `json:"value_type,omitempty"`  // Discriminator for numeric signals
	Value       *bool     `json:"value,omitempty"`       // Whether to include (true) or exclude (false) users matching this signal
	Values      []string  `json:"values,omitempty"`      // Values to target. Users with any of these values will be included.
	MinValue    *float64  `json:"min_value,omitempty"`   // Minimum value (inclusive). Omit for no minimum. Must be <= max_value when both
	MaxValue    *float64  `json:"max_value,omitempty"`   // Maximum value (inclusive). Omit for no maximum. Must be >= min_value when both
	Description string    `json:"description,omitempty"` // Natural language description of the audience (e.g., 'likely EV buyers', 'high
	Category    string    `json:"category,omitempty"`    // Optional grouping hint for the governance agent (e.g., 'demographic'
}

AudienceSelector — Selects an audience by signal reference or natural language description. Uses 'type' as the

func (AudienceSelector) Validate

func (s AudienceSelector) Validate(opts ...ValidationOption) []ValidationIssue

Validate checks AudienceSelector's current-schema oneOf invariants. It is intentionally opt-in and forward-compatible: unknown type/value_type values are ignored unless WithStrictEnums is supplied.

type AudienceSource

type AudienceSource = string

AudienceSource — Origin of an audience segment in delivery reporting breakdowns. Only 'synced'

const (
	AudienceSourceSynced      AudienceSource = "synced"
	AudienceSourcePlatform    AudienceSource = "platform"
	AudienceSourceThirdParty  AudienceSource = "third_party"
	AudienceSourceLookalike   AudienceSource = "lookalike"
	AudienceSourceRetargeting AudienceSource = "retargeting"
	AudienceSourceUnknown     AudienceSource = "unknown"
)

func KnownAudienceSourceValues

func KnownAudienceSourceValues() []AudienceSource

KnownAudienceSourceValues returns the current schema-defined values for AudienceSource.

func ParseAudienceSource

func ParseAudienceSource(s string) (AudienceSource, error)

ParseAudienceSource returns s as AudienceSource when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type AudienceStatus

type AudienceStatus = string

AudienceStatus — Matching status of a synced audience on a seller platform. Present when the

const (
	AudienceStatusProcessing AudienceStatus = "processing"
	AudienceStatusReady      AudienceStatus = "ready"
	AudienceStatusTooSmall   AudienceStatus = "too_small"
	AudienceStatusSuspended  AudienceStatus = "suspended"
)

func KnownAudienceStatusValues

func KnownAudienceStatusValues() []AudienceStatus

KnownAudienceStatusValues returns the current schema-defined values for AudienceStatus.

func ParseAudienceStatus

func ParseAudienceStatus(s string) (AudienceStatus, error)

ParseAudienceStatus returns s as AudienceStatus when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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 AudioChannelLayout

type AudioChannelLayout = string

AudioChannelLayout — Audio channel configuration for audio and video assets

const (
	AudioChannelLayoutMono   AudioChannelLayout = "mono"
	AudioChannelLayoutStereo AudioChannelLayout = "stereo"
	AudioChannelLayout51     AudioChannelLayout = "5.1"
	AudioChannelLayout71     AudioChannelLayout = "7.1"
)

func KnownAudioChannelLayoutValues

func KnownAudioChannelLayoutValues() []AudioChannelLayout

KnownAudioChannelLayoutValues returns the current schema-defined values for AudioChannelLayout.

func ParseAudioChannelLayout

func ParseAudioChannelLayout(s string) (AudioChannelLayout, error)

ParseAudioChannelLayout returns s as AudioChannelLayout when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type AudioDistributionType

type AudioDistributionType = string

AudioDistributionType — Declared audio distribution classification for radio, streaming-audio

const (
	AudioDistributionTypeMusicStreamingService AudioDistributionType = "music_streaming_service"
	AudioDistributionTypeFmAmBroadcast         AudioDistributionType = "fm_am_broadcast"
	AudioDistributionTypePodcast               AudioDistributionType = "podcast"
	AudioDistributionTypeCatchUpRadio          AudioDistributionType = "catch_up_radio"
	AudioDistributionTypeWebRadio              AudioDistributionType = "web_radio"
	AudioDistributionTypeVideoGame             AudioDistributionType = "video_game"
	AudioDistributionTypeTextToSpeech          AudioDistributionType = "text_to_speech"
)

func KnownAudioDistributionTypeValues

func KnownAudioDistributionTypeValues() []AudioDistributionType

KnownAudioDistributionTypeValues returns the current schema-defined values for AudioDistributionType.

func ParseAudioDistributionType

func ParseAudioDistributionType(s string) (AudioDistributionType, error)

ParseAudioDistributionType returns s as AudioDistributionType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type AuditObservation

type AuditObservation struct {
	Code     string                   `json:"code"`     // Machine-readable observation code. `OVERSIGHT_DISCLOSURE_CARVEOUT_CLAIMED`
	Severity string                   `json:"severity"` // Routing severity. `audit-worthy` means the observation should be retained and
	Recovery string                   `json:"recovery"` // Caller recovery category for audit observations, distinct from the canonical
	Field    string                   `json:"field"`    // Resolved creative manifest path for the risky claim side of the observation
	Message  string                   `json:"message"`  // Human-readable summary suitable for an audit queue. Do not include PII
	Details  *AuditObservationDetails `json:"details"`  // Audit-safe structured details. Mirrors the safe allowlist keys used for
	Ext      any                      `json:"ext,omitempty"`
}

AuditObservation — Non-blocking observation emitted by a creative governance agent. Audit observations surface claims

type AuditObservationClaimedValue

type AuditObservationClaimedValue struct {
	HumanOversight     string `json:"human_oversight"`     // Human oversight level declared by the creative provenance.
	DisclosureRequired bool   `json:"disclosure_required"` // Disclosure-required claim declared by the creative provenance.
}

AuditObservationClaimedValue — Compact object of claimed provenance values that triggered the observation.

type AuditObservationDetails

type AuditObservationDetails struct {
	AgentURL       string                       `json:"agent_url"`                 // Governance agent URL that produced the observation.
	FeatureID      string                       `json:"feature_id,omitempty"`      // Feature or policy check that produced the observation.
	ClaimedValue   AuditObservationClaimedValue `json:"claimed_value"`             // Compact object of claimed provenance values that triggered the observation.
	ObservedValue  any                          `json:"observed_value,omitempty"`  // Verifier observation relevant to the claim, when applicable.
	Confidence     float64                      `json:"confidence,omitempty"`      // Confidence score for the observation, when applicable.
	SubstitutedFor string                       `json:"substituted_for,omitempty"` // Buyer-nominated verifier URL when the seller or orchestrator used a different
}

AuditObservationDetails — Audit-safe structured details. Mirrors the safe allowlist keys used for

type AuthScheme

type AuthScheme = string

AuthScheme — Legacy authentication schemes for the webhook auth block. Bearer: token sent

const (
	AuthSchemeBearer     AuthScheme = "Bearer"
	AuthSchemeHMACSHA256 AuthScheme = "HMAC-SHA256"
)

func KnownAuthSchemeValues

func KnownAuthSchemeValues() []AuthScheme

KnownAuthSchemeValues returns the current schema-defined values for AuthScheme.

func ParseAuthScheme

func ParseAuthScheme(s string) (AuthScheme, error)

ParseAuthScheme returns s as AuthScheme when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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"
	AvailableMetricViews                AvailableMetric = "views"
	AvailableMetricCompletedViews       AvailableMetric = "completed_views"
	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"
	AvailableMetricLeads                AvailableMetric = "leads"
	AvailableMetricReach                AvailableMetric = "reach"
	AvailableMetricFrequency            AvailableMetric = "frequency"
	AvailableMetricGrps                 AvailableMetric = "grps"
	AvailableMetricEngagements          AvailableMetric = "engagements"
	AvailableMetricEngagementRate       AvailableMetric = "engagement_rate"
	AvailableMetricFollows              AvailableMetric = "follows"
	AvailableMetricSaves                AvailableMetric = "saves"
	AvailableMetricProfileVisits        AvailableMetric = "profile_visits"
	AvailableMetricViewability          AvailableMetric = "viewability"
	AvailableMetricQuartileData         AvailableMetric = "quartile_data"
	AvailableMetricDoohMetrics          AvailableMetric = "dooh_metrics"
	AvailableMetricCostPerClick         AvailableMetric = "cost_per_click"
	AvailableMetricCostPerCompletedView AvailableMetric = "cost_per_completed_view"
	AvailableMetricCPM                  AvailableMetric = "cpm"
	AvailableMetricDownloads            AvailableMetric = "downloads"
	AvailableMetricUnitsSold            AvailableMetric = "units_sold"
	AvailableMetricNewToBrandUnits      AvailableMetric = "new_to_brand_units"
	AvailableMetricPlays                AvailableMetric = "plays"
	AvailableMetricIncrementalSalesLift AvailableMetric = "incremental_sales_lift"
	AvailableMetricBrandLift            AvailableMetric = "brand_lift"
	AvailableMetricFootTraffic          AvailableMetric = "foot_traffic"
	AvailableMetricConversionLift       AvailableMetric = "conversion_lift"
	AvailableMetricBrandSearchLift      AvailableMetric = "brand_search_lift"
)

func KnownAvailableMetricValues

func KnownAvailableMetricValues() []AvailableMetric

KnownAvailableMetricValues returns the current schema-defined values for AvailableMetric.

func ParseAvailableMetric

func ParseAvailableMetric(s string) (AvailableMetric, error)

ParseAvailableMetric returns s as AvailableMetric when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type BankAccount

type BankAccount struct {
	AccountHolder string `json:"account_holder"`           // Name on the bank account
	Iban          string `json:"iban,omitempty"`           // International Bank Account Number (SEPA markets)
	Bic           string `json:"bic,omitempty"`            // Bank Identifier Code / SWIFT code (SEPA markets)
	RoutingNumber string `json:"routing_number,omitempty"` // Bank routing number for non-SEPA markets (e.g., US ABA routing number
	AccountNumber string `json:"account_number,omitempty"` // Bank account number for non-SEPA markets
}

BankAccount — Bank account details for payment processing. Write-only: included in requests to provide payment

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 BillingParty

type BillingParty = string

BillingParty — Which party the seller invoices for an account. Determines the billing entity

const (
	BillingPartyOperator   BillingParty = "operator"
	BillingPartyAgent      BillingParty = "agent"
	BillingPartyAdvertiser BillingParty = "advertiser"
)

func KnownBillingPartyValues

func KnownBillingPartyValues() []BillingParty

KnownBillingPartyValues returns the current schema-defined values for BillingParty.

func ParseBillingParty

func ParseBillingParty(s string) (BillingParty, error)

ParseBillingParty returns s as BillingParty when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type BinaryVerdict

type BinaryVerdict = string

BinaryVerdict — Strictly two-outcome evaluation result used for overall record-level verdicts

const (
	BinaryVerdictPass BinaryVerdict = "pass"
	BinaryVerdictFail BinaryVerdict = "fail"
)

func KnownBinaryVerdictValues

func KnownBinaryVerdictValues() []BinaryVerdict

KnownBinaryVerdictValues returns the current schema-defined values for BinaryVerdict.

func ParseBinaryVerdict

func ParseBinaryVerdict(s string) (BinaryVerdict, error)

ParseBinaryVerdict returns s as BinaryVerdict when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type BrandAgentType

type BrandAgentType = string

BrandAgentType — Functional roles for agents declared in brand.json. Each type represents a

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"
)

func KnownBrandAgentTypeValues

func KnownBrandAgentTypeValues() []BrandAgentType

KnownBrandAgentTypeValues returns the current schema-defined values for BrandAgentType.

func ParseBrandAgentType

func ParseBrandAgentType(s string) (BrandAgentType, error)

ParseBrandAgentType returns s as BrandAgentType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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 BuildCreativeMaxSpend

type BuildCreativeMaxSpend struct {
	Amount   float64 `json:"amount"`   // Maximum aggregate vendor_cost to incur on this call, in `currency`.
	Currency string  `json:"currency"` // ISO 4217 currency; MUST match the rate card.
}

BuildCreativeMaxSpend — Hard per-call spend ceiling. The agent produces leaves until the NEXT leaf would push the run's

type BuildCreativePreviewInput

type BuildCreativePreviewInput struct {
	Name               string            `json:"name"`                          // Human-readable name for this input set (e.g., 'Sunny morning on mobile'
	Macros             map[string]string `json:"macros,omitempty"`              // Macro values to use for this preview variant
	ContextDescription string            `json:"context_description,omitempty"` // Natural language description of the context for AI-generated content
}

type BuildCreativeRequest

type BuildCreativeRequest struct {
	AdcpVersion              string                         `json:"adcp_version,omitempty"`                 // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion         int                            `json:"adcp_major_version,omitempty"`           // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	Message                  string                         `json:"message,omitempty"`                      // Natural language instructions for the transformation or generation. For pure
	CreativeManifest         *CreativeManifest              `json:"creative_manifest,omitempty"`            // Creative manifest to transform or generate from. For pure generation, this
	CreativeID               string                         `json:"creative_id,omitempty"`                  // Reference to a creative in the agent's library. The creative agent resolves
	ConceptID                string                         `json:"concept_id,omitempty"`                   // Creative concept containing the creative. Creative agents SHOULD assign
	MediaBuyID               string                         `json:"media_buy_id,omitempty"`                 // Media buy identifier for tag generation context. When the creative agent is
	PackageID                string                         `json:"package_id,omitempty"`                   // Package identifier within the media buy. Used with media_buy_id when the
	TargetFormatID           *FormatRef                     `json:"target_format_id,omitempty"`             // Single format ID to generate. Mutually exclusive with target_format_ids. The
	TargetFormatIDs          []FormatRef                    `json:"target_format_ids,omitempty"`            // Array of format IDs to generate in a single call. Mutually exclusive with
	TransformerID            string                         `json:"transformer_id,omitempty"`               // Selects an account-scoped transformer (discovered via list_transformers) to
	Config                   map[string]any                 `json:"config,omitempty"`                       // Typed render configuration for the selected transformer, keyed by each param's
	RefineFromBuildVariantID string                         `json:"refine_from_build_variant_id,omitempty"` // Refine a previously produced variant: re-build from the referenced
	Mode                     string                         `json:"mode,omitempty"`                         // `execute` (default) produces and bills the creative(s). `estimate` is a DRY
	MaxSpend                 *BuildCreativeMaxSpend         `json:"max_spend,omitempty"`                    // Hard per-call spend ceiling. The agent produces leaves until the NEXT leaf
	MaxCreatives             int                            `json:"max_creatives,omitempty"`                // Caps how many DISTINCT creatives to produce along the catalog/item fan-out
	SignalConditions         []BuildCreativeSignalCondition `json:"signal_conditions,omitempty"`            // Advisory keep-all PRODUCTION axis: produce one distinct creative group per
	MaxVariants              int                            `json:"max_variants,omitempty"`                 // Caps how many ALTERNATIVES to produce per creative (different voices, themes
	VariantAxis              *BuildCreativeVariantAxis      `json:"variant_axis,omitempty"`                 // Declares the dimension along which variants differ. When `values` is provided
	KeepMode                 string                         `json:"keep_mode,omitempty"`                    // Advisory hint for how the buyer intends to use the variants. `keep_one`
	SelectionStrategy        CreativeSelectionStrategy      `json:"selection_strategy,omitempty"`           // Governs HOW the agent samples when max_creatives < items_total (folds #5262).
	Account                  *AccountReference              `json:"account,omitempty"`                      // Account reference for pricing and billing. When present, the creative agent
	Brand                    *BrandReference                `json:"brand,omitempty"`                        // Brand reference for creative generation. Resolved to full brand identity
	Quality                  CreativeQuality                `json:"quality,omitempty"`                      // Quality tier for generation. 'draft' produces fast, lower-fidelity output for
	Evaluator                any                            `json:"evaluator,omitempty"`                    // Optional advisory evaluator (buyer-attached pointer, #5280) declaring how
	ItemLimit                int                            `json:"item_limit,omitempty"`                   // Maximum number of catalog items a SINGLE creative consumes when generating
	IncludePreview           *bool                          `json:"include_preview,omitempty"`              // When true, requests the creative agent to include preview renders in the
	PreviewInputs            []BuildCreativePreviewInput    `json:"preview_inputs,omitempty"`               // Input sets for preview generation when include_preview is true. Each input set
	PreviewQuality           CreativeQuality                `json:"preview_quality,omitempty"`              // Render quality for inline preview when include_preview is true. 'draft'
	PreviewOutputFormat      PreviewOutputFormat            `json:"preview_output_format,omitempty"`        // Output format for preview renders when include_preview is true. 'url' returns
	MacroValues              map[string]string              `json:"macro_values,omitempty"`                 // Macro values to pre-substitute into the output manifest's assets. Keys are
	IdempotencyKey           string                         `json:"idempotency_key"`                        // Client-generated unique key for this request. Prevents duplicate creative
	PushNotificationConfig   *PushNotificationConfig        `json:"push_notification_config,omitempty"`     // Optional webhook configuration for async terminal completion/failure
	Context                  any                            `json:"context,omitempty"`
	Ext                      any                            `json:"ext,omitempty"`
}

BuildCreativeRequest — Request to transform, generate, refine, or retrieve a creative manifest. Supports four modes: (1)

type BuildCreativeResult

type BuildCreativeResult struct {
	CreativeManifest map[string]any `json:"creative_manifest"`
	Sandbox          bool           `json:"sandbox,omitempty"`
}

type BuildCreativeSignalCondition

type BuildCreativeSignalCondition struct {
	SignalRef *SignalRef `json:"signal_ref,omitempty"` // The signal to target. New targeting constraints SHOULD use signal_ref.
	// Deprecated: DEPRECATED.
	SignalID             *SignalID `json:"signal_id,omitempty"`               // DEPRECATED. Use signal_ref instead. Legacy SignalId retained for compatibility
	ValueType            string    `json:"value_type,omitempty"`              // Discriminator for numeric signals
	Value                *bool     `json:"value,omitempty"`                   // Whether to include (true) or exclude (false) users matching this signal
	Values               []string  `json:"values,omitempty"`                  // Values to target. Users with any of these values will be included.
	MinValue             *float64  `json:"min_value,omitempty"`               // Minimum value (inclusive). Omit for no minimum. Must be <= max_value when both
	MaxValue             *float64  `json:"max_value,omitempty"`               // Maximum value (inclusive). Omit for no maximum. Must be >= min_value when both
	SignalAgentSegmentID string    `json:"signal_agent_segment_id,omitempty"` // Optional opaque resolved-segment handle for this fan-out condition — the
}

type BuildCreativeVariantAxis

type BuildCreativeVariantAxis struct {
	Dimension string `json:"dimension"`        // What varies across variants. `transformer_config` varies a named config param
	Field     string `json:"field,omitempty"`  // The transformer `config` param `field` this axis sweeps. REQUIRED when
	Values    []any  `json:"values,omitempty"` // Caller-fixed set of values for the axis (e.g. ["isaac", "sara"] for dimension
	Label     string `json:"label,omitempty"`  // Human-readable description of the axis, especially for `custom`.
}

BuildCreativeVariantAxis — Declares the dimension along which variants differ. When `values` is provided, the agent produces

type BusinessAddress

type BusinessAddress struct {
	Street     string `json:"street"` // Street address including building number
	City       string `json:"city"`
	PostalCode string `json:"postal_code"`
	Region     string `json:"region,omitempty"` // State, province, or region
	Country    string `json:"country"`          // ISO 3166-1 alpha-2 country code
}

BusinessAddress — Postal address for invoicing and legal correspondence

type BusinessContact

type BusinessContact struct {
	Role  string `json:"role"`           // Contact's functional role in the business relationship
	Name  string `json:"name,omitempty"` // Full name of the contact
	Email string `json:"email,omitempty"`
	Phone string `json:"phone,omitempty"`
}

type BusinessEntity

type BusinessEntity struct {
	LegalName          string            `json:"legal_name"`                    // Registered legal name of the business entity
	VatID              string            `json:"vat_id,omitempty"`              // VAT identification number (e.g., DE123456789 for Germany, FR12345678901 for
	TaxID              string            `json:"tax_id,omitempty"`              // Tax identification number for jurisdictions that do not use VAT (e.g., US EIN)
	RegistrationNumber string            `json:"registration_number,omitempty"` // Company registration number (e.g., HRB 12345 for German Handelsregister)
	Address            *BusinessAddress  `json:"address,omitempty"`             // Postal address for invoicing and legal correspondence
	Contacts           []BusinessContact `json:"contacts,omitempty"`            // Contacts for billing, legal, and operational matters. Contains personal data
	Bank               *BankAccount      `json:"bank,omitempty"`                // Bank account details for payment processing. Write-only: included in requests
	Ext                any               `json:"ext,omitempty"`
}

BusinessEntity — Structured business identity for B2B invoicing and contracts. Contains the legal, tax, and payment

type C2PAWatermarkAction

type C2PAWatermarkAction = string

C2PAWatermarkAction — C2PA action classification for a content watermark. Distinguishes watermarks

const (
	C2PAWatermarkActionC2PAWatermarkedBound   C2PAWatermarkAction = "c2pa.watermarked.bound"
	C2PAWatermarkActionC2PAWatermarkedUnbound C2PAWatermarkAction = "c2pa.watermarked.unbound"
)

func KnownC2PAWatermarkActionValues

func KnownC2PAWatermarkActionValues() []C2PAWatermarkAction

KnownC2PAWatermarkActionValues returns the current schema-defined values for C2PAWatermarkAction.

func ParseC2PAWatermarkAction

func ParseC2PAWatermarkAction(s string) (C2PAWatermarkAction, error)

ParseC2PAWatermarkAction returns s as C2PAWatermarkAction when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type CanceledBy

type CanceledBy = string

CanceledBy — Identifies which party initiated a cancellation.

const (
	CanceledByBuyer  CanceledBy = "buyer"
	CanceledBySeller CanceledBy = "seller"
)

func KnownCanceledByValues

func KnownCanceledByValues() []CanceledBy

KnownCanceledByValues returns the current schema-defined values for CanceledBy.

func ParseCanceledBy

func ParseCanceledBy(s string) (CanceledBy, error)

ParseCanceledBy returns s as CanceledBy when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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 CanonicalProjectionRef

type CanonicalProjectionRef struct {
	Kind          string                            `json:"kind"`                     // The v2 canonical-format-kind this v1 format projects to (`image`, `html5`
	AssetSource   string                            `json:"asset_source,omitempty"`   // Where the rendered asset bytes come from on the projected v2 declaration.
	SlotsOverride []CanonicalProjectionSlotOverride `json:"slots_override,omitempty"` // When the v1 named format's slot shape differs from the canonical's default
}

CanonicalProjectionRef — Authoritative v1 → v2 projection annotation on a v1 named format. Tells SDKs which

type CanonicalProjectionSlotOverride

type CanonicalProjectionSlotOverride struct {
	AssetGroupID          string `json:"asset_group_id"`                    // Asset group identifier from `asset-group-vocabulary.json` (e.g.
	AssetType             string `json:"asset_type"`                        // Asset type — `image`, `video`, `audio`, `text`, `html`, `javascript`, `url`
	Required              *bool  `json:"required,omitempty"`                // Whether the slot is required in the projected declaration.
	MaxChars              int    `json:"max_chars,omitempty"`               // Max character count for text slots.
	ConsumedForProduction *bool  `json:"consumed_for_production,omitempty"` // When false, slot is for moderation/review only and is NOT consumed by the
}

CanonicalProjectionSlotOverride — A single slot override used when projecting a legacy named format to a v2 canonical

type CapabilitiesData

type CapabilitiesData struct {
	AdcpVersion             string                         `json:"adcp_version,omitempty"`
	AdcpMajorVersion        int                            `json:"adcp_major_version,omitempty"`
	ContextID               string                         `json:"context_id,omitempty"`
	TaskID                  string                         `json:"task_id,omitempty"`
	Status                  string                         `json:"status"`
	Message                 string                         `json:"message,omitempty"`
	Timestamp               string                         `json:"timestamp,omitempty"`
	Replayed                *bool                          `json:"replayed,omitempty"`
	AdcpError               AdcpError                      `json:"adcp_error,omitempty"`
	PushNotificationConfig  *PushNotificationConfig        `json:"push_notification_config,omitempty"`
	GovernanceContext       string                         `json:"governance_context,omitempty"`
	Payload                 map[string]any                 `json:"payload,omitempty"`
	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"`
	Measurement             any                            `json:"measurement,omitempty"`
	ComplianceTesting       *ComplianceTestingCapabilities `json:"compliance_testing,omitempty"`
	Specialisms             []string                       `json:"specialisms,omitempty"`
	ExtensionsSupported     []string                       `json:"extensions_supported,omitempty"`
	ExperimentalFeatures    []string                       `json:"experimental_features,omitempty"`
	WholesaleFeedVersioning *WholesaleFeedVersioningCaps   `json:"wholesale_feed_versioning,omitempty"`
	LastUpdated             string                         `json:"last_updated,omitempty"`
	Errors                  []AdcpError                    `json:"errors,omitempty"`
	Context                 any                            `json:"context,omitempty"`
	Ext                     any                            `json:"ext,omitempty"`
	WholesaleFeedWebhooks   *WholesaleFeedWebhooksCaps     `json:"wholesale_feed_webhooks,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 CapabilitiesWholesaleFeedVersioning

type CapabilitiesWholesaleFeedVersioning struct {
	Supported              bool  `json:"supported"`                          // Whether the agent returns wholesale_feed_version on responses and honors
	PricingVersionSeparate *bool `json:"pricing_version_separate,omitempty"` // Whether the agent tracks pricing_version independently of
	CacheScopeAccount      *bool `json:"cache_scope_account,omitempty"`      // Whether the agent ever returns cache_scope: 'account' (i.e., publishes
}

CapabilitiesWholesaleFeedVersioning — Conditional-fetch token capabilities for get_products and get_signals. Independent of wholesale

type CapabilitiesWholesaleFeedWebhooks

type CapabilitiesWholesaleFeedWebhooks struct {
	Supported  bool     `json:"supported"`             // Whether this agent can push wholesale feed change payloads through
	EventTypes []string `json:"event_types,omitempty"` // Wholesale feed webhook event types this agent can emit. Sales agents emit
}

CapabilitiesWholesaleFeedWebhooks — Per-agent wholesale product-feed and wholesale signals-feed webhook capabilities. Declared by

type Catalog

type Catalog struct {
	CatalogID         string                `json:"catalog_id,omitempty"`          // Buyer's identifier for this catalog. Required when syncing via sync_catalogs.
	Name              string                `json:"name,omitempty"`                // Human-readable name for this catalog (e.g., 'Summer Products 2025', 'Amsterdam
	Type              CatalogType           `json:"type"`                          // Catalog type. Structural types: 'offering' (AdCP Offering objects), 'product'
	URL               string                `json:"url,omitempty"`                 // URL to an external catalog feed. The platform fetches and resolves items from
	FeedFormat        FeedFormat            `json:"feed_format,omitempty"`         // Format of the external feed at url. Required when url points to a non-AdCP
	UpdateFrequency   UpdateFrequency       `json:"update_frequency,omitempty"`    // How often the platform should re-fetch the feed from url. Only applicable when
	Items             []map[string]any      `json:"items,omitempty"`               // Inline catalog data. The item schema depends on the catalog type: Offering
	IDs               []string              `json:"ids,omitempty"`                 // Filter catalog to specific item IDs. For offering-type catalogs, these are
	Gtins             []string              `json:"gtins,omitempty"`               // Filter product-type catalogs by GTIN identifiers for cross-retailer catalog
	Tags              []string              `json:"tags,omitempty"`                // Filter catalog to items with these tags. Tags are matched using OR logic —
	Category          string                `json:"category,omitempty"`            // Filter catalog to items in this category (e.g., 'beverages/soft-drinks'
	Query             string                `json:"query,omitempty"`               // Natural language filter for catalog items (e.g., 'all pasta sauces under $5'
	ConversionEvents  []EventType           `json:"conversion_events,omitempty"`   // Event types that represent conversions for items in this catalog. Declares
	ContentIDType     ContentIDType         `json:"content_id_type,omitempty"`     // Identifier type that the event's content_ids field should be matched against
	FeedFieldMappings []CatalogFieldMapping `json:"feed_field_mappings,omitempty"` // Declarative normalization rules for external feeds. Maps non-standard feed
}

Catalog — A typed data feed. Catalogs carry the items, locations, stock levels, or pricing that publishers

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"
)

func KnownCatalogActionValues

func KnownCatalogActionValues() []CatalogAction

KnownCatalogActionValues returns the current schema-defined values for CatalogAction.

func ParseCatalogAction

func ParseCatalogAction(s string) (CatalogAction, error)

ParseCatalogAction returns s as CatalogAction when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type CatalogFieldMapping

type CatalogFieldMapping struct {
	FeedField    string  `json:"feed_field,omitempty"`     // Field name in the external feed record. Omit when injecting a static literal
	CatalogField string  `json:"catalog_field,omitempty"`  // Target field on the catalog item schema, using dot notation for nested fields
	AssetGroupID string  `json:"asset_group_id,omitempty"` // Places the feed field value (a URL) into a typed asset pool on the catalog
	Value        any     `json:"value,omitempty"`          // Static literal value to inject into catalog_field for every item, regardless
	Transform    string  `json:"transform,omitempty"`      // Named transform to apply to the feed field value before writing to the catalog
	Format       string  `json:"format,omitempty"`         // For transform 'date': the input date format string (e.g., 'YYYYMMDD'
	Timezone     string  `json:"timezone,omitempty"`       // For transform 'date': the timezone of the input value. IANA timezone
	By           float64 `json:"by,omitempty"`             // For transform 'divide': the divisor to apply (e.g., 100 to convert integer
	Separator    string  `json:"separator,omitempty"`      // For transform 'split': the separator character or string to split on. Defaults
	Default      any     `json:"default,omitempty"`        // Fallback value to use when feed_field is absent, null, or empty. Applied after
	Ext          any     `json:"ext,omitempty"`
}

CatalogFieldMapping — Declares how a field in an external feed maps to the AdCP catalog item schema. Used in

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

const (
	CatalogItemStatusApproved  CatalogItemStatus = "approved"
	CatalogItemStatusPending   CatalogItemStatus = "pending"
	CatalogItemStatusRejected  CatalogItemStatus = "rejected"
	CatalogItemStatusWarning   CatalogItemStatus = "warning"
	CatalogItemStatusWithdrawn CatalogItemStatus = "withdrawn"
)

func KnownCatalogItemStatusValues

func KnownCatalogItemStatusValues() []CatalogItemStatus

KnownCatalogItemStatusValues returns the current schema-defined values for CatalogItemStatus.

func ParseCatalogItemStatus

func ParseCatalogItemStatus(s string) (CatalogItemStatus, error)

ParseCatalogItemStatus returns s as CatalogItemStatus when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type CatalogResult

type CatalogResult struct {
	CatalogID     string `json:"catalog_id"`
	Action        string `json:"action"`
	ItemCount     int    `json:"item_count"`
	ItemsApproved int    `json:"items_approved"`
}

type CatalogType

type CatalogType = string

CatalogType — The type of catalog feed. Determines the item schema and how the platform

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"
)

func KnownCatalogTypeValues

func KnownCatalogTypeValues() []CatalogType

KnownCatalogTypeValues returns the current schema-defined values for CatalogType.

func ParseCatalogType

func ParseCatalogType(s string) (CatalogType, error)

ParseCatalogType returns s as CatalogType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type Channels

type Channels = string

Channels — Standardized advertising media channels describing how buyers allocate budget.

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"
)

func KnownChannelsValues

func KnownChannelsValues() []Channels

KnownChannelsValues returns the current schema-defined values for Channels.

func ParseChannels

func ParseChannels(s string) (Channels, error)

ParseChannels returns s as Channels when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type CheckGovernanceCondition

type CheckGovernanceCondition struct {
	Field string `json:"field"`
	// RequiredValue is emitted only when HasRequiredValue is true. Decode
	// numeric JSON values as float64, following encoding/json's any behavior.
	RequiredValue any `json:"-"`
	// HasRequiredValue distinguishes absent required_value from explicit
	// required_value, including JSON null. Set it true whenever RequiredValue
	// should be present on the wire.
	HasRequiredValue bool   `json:"-"`
	Reason           string `json:"reason"`
}

CheckGovernanceCondition is a typed condition item returned by check_governance. RequiredValue is intentionally dynamic because a condition can require any JSON literal or object. HasRequiredValue distinguishes an absent advisory value from an explicit required_value, including JSON null.

func (CheckGovernanceCondition) MarshalJSON

func (c CheckGovernanceCondition) MarshalJSON() ([]byte, error)

func (*CheckGovernanceCondition) UnmarshalJSON

func (c *CheckGovernanceCondition) UnmarshalJSON(data []byte) error

type CheckGovernanceFinding

type CheckGovernanceFinding struct {
	CategoryID        string             `json:"category_id"`              // Validation category that flagged the issue (e.g., 'budget_compliance'
	PolicyID          string             `json:"policy_id,omitempty"`      // ID of the policy that triggered this finding. May reference a registry policy
	SourcePlanID      string             `json:"source_plan_id,omitempty"` // For portfolio or aggregated evaluations where findings draw on bespoke
	Severity          EscalationSeverity `json:"severity"`
	Explanation       string             `json:"explanation"`                  // Human-readable description of the issue.
	Details           map[string]any     `json:"details,omitempty"`            // Structured details for programmatic consumption.
	Confidence        *float64           `json:"confidence,omitempty"`         // Confidence score (0-1) in this finding. Distinguishes 'this definitely
	UncertaintyReason string             `json:"uncertainty_reason,omitempty"` // Explanation of why confidence is below 1.0 (e.g., 'Targeting includes regions
}

type CheckGovernanceRequest

type CheckGovernanceRequest struct {
	AdcpVersion         string                     `json:"adcp_version,omitempty"`         // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion    int                        `json:"adcp_major_version,omitempty"`   // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	PlanID              string                     `json:"plan_id"`                        // Campaign governance plan identifier. The plan uniquely scopes the account and
	Caller              string                     `json:"caller"`                         // URL of the agent making the request.
	PurchaseType        PurchaseType               `json:"purchase_type,omitempty"`        // The type of financial commitment being checked. Determines which budget
	Tool                string                     `json:"tool,omitempty"`                 // The AdCP tool being checked (e.g., 'create_media_buy', 'acquire_rights'
	Payload             map[string]any             `json:"payload,omitempty"`              // The full tool arguments as they would be sent to the seller. Present on intent
	GovernanceContext   string                     `json:"governance_context,omitempty"`   // Governance context token from a prior check_governance response. Pass this on
	Phase               GovernancePhase            `json:"phase,omitempty"`                // The phase of the governed action's lifecycle. 'purchase': initial commitment
	PlannedDelivery     *PlannedDelivery           `json:"planned_delivery,omitempty"`     // What the seller will actually deliver. Present on execution checks.
	DeliveryMetrics     *GovernanceDeliveryMetrics `json:"delivery_metrics,omitempty"`     // Actual delivery performance data. MUST be present for 'delivery' phase. The
	ModificationSummary string                     `json:"modification_summary,omitempty"` // Human-readable summary of what changed. SHOULD be present for 'modification'
	InvoiceRecipient    *BusinessEntity            `json:"invoice_recipient,omitempty"`    // Invoice recipient from the purchase request. MUST be present when the tool
	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

type CheckGovernanceResponse

type CheckGovernanceResponse struct {
	AdcpVersion         string                     `json:"adcp_version,omitempty"`         // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion    int                        `json:"adcp_major_version,omitempty"`   // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	CheckID             string                     `json:"check_id"`                       // Unique identifier for this governance check record. Use in report_plan_outcome
	Verdict             GovernanceDecision         `json:"verdict"`                        // Governance verdict: approved | denied | conditions. Renamed from `status` in
	PlanID              string                     `json:"plan_id"`                        // Echoed from request.
	Explanation         string                     `json:"explanation"`                    // Human-readable explanation of the governance decision.
	Findings            []CheckGovernanceFinding   `json:"findings,omitempty"`             // Specific issues found during the governance check. Present when verdict is
	Conditions          []CheckGovernanceCondition `json:"conditions,omitempty"`           // Present when verdict is 'conditions'. Specific adjustments the caller must
	ExpiresAt           string                     `json:"expires_at,omitempty"`           // When this approval expires. Present when verdict is 'approved' or
	NextCheck           string                     `json:"next_check,omitempty"`           // When the seller should next call check_governance with delivery metrics.
	CategoriesEvaluated []string                   `json:"categories_evaluated,omitempty"` // Governance categories evaluated during this check. Each value is an
	PoliciesEvaluated   []string                   `json:"policies_evaluated,omitempty"`   // Policy IDs evaluated during this check. Includes registry policy IDs (resolved
	Mode                GovernanceMode             `json:"mode,omitempty"`                 // Governance enforcement mode active when this check was evaluated. Allows
	GovernanceContext   string                     `json:"governance_context,omitempty"`   // Governance context token for this governed action. The buyer MUST attach this
	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

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"
)

func KnownCloudStorageProtocolValues

func KnownCloudStorageProtocolValues() []CloudStorageProtocol

KnownCloudStorageProtocolValues returns the current schema-defined values for CloudStorageProtocol.

func ParseCloudStorageProtocol

func ParseCloudStorageProtocol(s string) (CloudStorageProtocol, error)

ParseCloudStorageProtocol returns s as CloudStorageProtocol when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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"
)

func KnownCoBrandingRequirementValues

func KnownCoBrandingRequirementValues() []CoBrandingRequirement

KnownCoBrandingRequirementValues returns the current schema-defined values for CoBrandingRequirement.

func ParseCoBrandingRequirement

func ParseCoBrandingRequirement(s string) (CoBrandingRequirement, error)

ParseCoBrandingRequirement returns s as CoBrandingRequirement when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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"
)

func KnownCollectionCadenceValues

func KnownCollectionCadenceValues() []CollectionCadence

KnownCollectionCadenceValues returns the current schema-defined values for CollectionCadence.

func ParseCollectionCadence

func ParseCollectionCadence(s string) (CollectionCadence, error)

ParseCollectionCadence returns s as CollectionCadence when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type CollectionChangeSummary

type CollectionChangeSummary struct {
	CollectionsAdded   int `json:"collections_added,omitempty"`   // Number of collections added since last resolution
	CollectionsRemoved int `json:"collections_removed,omitempty"` // Number of collections removed since last resolution
	TotalCollections   int `json:"total_collections,omitempty"`   // Total collections in the resolved list
}

CollectionChangeSummary — Summary of changes to the resolved list

type CollectionKind

type CollectionKind = string

CollectionKind — What kind of content program a collection represents. Determines how

const (
	CollectionKindSeries      CollectionKind = "series"
	CollectionKindPublication CollectionKind = "publication"
	CollectionKindEventSeries CollectionKind = "event_series"
	CollectionKindRotation    CollectionKind = "rotation"
)

func KnownCollectionKindValues

func KnownCollectionKindValues() []CollectionKind

KnownCollectionKindValues returns the current schema-defined values for CollectionKind.

func ParseCollectionKind

func ParseCollectionKind(s string) (CollectionKind, error)

ParseCollectionKind returns s as CollectionKind when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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.
	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   *CollectionChangeSummary `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}
	Ext             any                      `json:"ext,omitempty"`
}

CollectionListChangedWebhook — Webhook notification sent when a collection list's resolved collections change. Contains a summary

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

const (
	CollectionRelationshipSpinoff   CollectionRelationship = "spinoff"
	CollectionRelationshipCompanion CollectionRelationship = "companion"
	CollectionRelationshipSequel    CollectionRelationship = "sequel"
	CollectionRelationshipPrequel   CollectionRelationship = "prequel"
	CollectionRelationshipCrossover CollectionRelationship = "crossover"
)

func KnownCollectionRelationshipValues

func KnownCollectionRelationshipValues() []CollectionRelationship

KnownCollectionRelationshipValues returns the current schema-defined values for CollectionRelationship.

func ParseCollectionRelationship

func ParseCollectionRelationship(s string) (CollectionRelationship, error)

ParseCollectionRelationship returns s as CollectionRelationship when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type CollectionRequestPagination

type CollectionRequestPagination struct {
	MaxResults int    `json:"max_results,omitempty"` // Maximum number of collections to return per page
	Cursor     string `json:"cursor,omitempty"`      // Opaque cursor from a previous response to fetch the next page
}

CollectionRequestPagination — Pagination parameters. Uses higher limits than standard pagination because collection lists can

type CollectionSelector

type CollectionSelector struct {
	PublisherDomain string   `json:"publisher_domain"` // Domain where the adagents.json declaring these collections is hosted (e.g.
	CollectionIDs   []string `json:"collection_ids"`   // Collection IDs from the adagents.json collections array. Each ID must match a
}

CollectionSelector — References collections declared in an adagents.json. Buyers resolve full collection objects by

type CollectionStatus

type CollectionStatus = string

CollectionStatus — Lifecycle status of a collection

const (
	CollectionStatusActive   CollectionStatus = "active"
	CollectionStatusHiatus   CollectionStatus = "hiatus"
	CollectionStatusEnded    CollectionStatus = "ended"
	CollectionStatusUpcoming CollectionStatus = "upcoming"
)

func KnownCollectionStatusValues

func KnownCollectionStatusValues() []CollectionStatus

KnownCollectionStatusValues returns the current schema-defined values for CollectionStatus.

func ParseCollectionStatus

func ParseCollectionStatus(s string) (CollectionStatus, error)

ParseCollectionStatus returns s as CollectionStatus when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type CommittedMetric

type CommittedMetric struct {
	Scope       string           `json:"scope,omitempty"`        // Vendor-defined metric, identified by the tuple `(vendor, metric_id)`.
	MetricID    string           `json:"metric_id,omitempty"`    // Identifier for the metric within the vendor's vocabulary.
	Qualifier   *MetricQualifier `json:"qualifier,omitempty"`    // Disambiguates metrics whose definition varies by qualifier. Today carries five
	CommittedAt string           `json:"committed_at,omitempty"` // ISO 8601 timestamp when this vendor metric became part of the contract.
	Vendor      *BrandReference  `json:"vendor,omitempty"`       // Vendor that defines and computes this metric. The vendor's `brand.json`
}

CommittedMetric — One metric in a package's binding reporting contract. Each entry uses `scope` as the discriminator

type CompletionSource

type CompletionSource = string

CompletionSource — Trust-source disambiguator for `completion_rate` — *who* attested to the

const (
	CompletionSourceSellerAttested CompletionSource = "seller_attested"
	CompletionSourceVendorAttested CompletionSource = "vendor_attested"
)

func KnownCompletionSourceValues

func KnownCompletionSourceValues() []CompletionSource

KnownCompletionSourceValues returns the current schema-defined values for CompletionSource.

func ParseCompletionSource

func ParseCompletionSource(s string) (CompletionSource, error)

ParseCompletionSource returns s as CompletionSource when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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 {
	AdcpVersion      string         `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion int            `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	Scenario         string         `json:"scenario"`                     // Test scenario to execute. 'list_scenarios' discovers supported scenarios.
	Params           map[string]any `json:"params,omitempty"`             // Scenario-specific parameters. Required for all scenarios except list_scenarios.
	Context          any            `json:"context,omitempty"`
	Ext              any            `json:"ext,omitempty"`
	Account          any            `json:"account"` // Sandbox account assertion. The runner MUST set sandbox: true on every
}

ComplyTestControllerRequest — Request payload for the comply_test_controller tool. Triggers seller-side state transitions for

type ComplyTestControllerResponse

type ComplyTestControllerResponse interface {
	// contains filtered or unexported methods
}

ComplyTestControllerResponse is a discriminated union — use one of the generated variant structs.

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) (CreateMediaBuyResponse, error)
	GetMediaBuys   func(ctx context.Context, acct any, req *GetMediaBuysRequest) (*GetMediaBuysResponse, 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)

const (
	ConsentBasisConsent            ConsentBasis = "consent"
	ConsentBasisLegitimateInterest ConsentBasis = "legitimate_interest"
	ConsentBasisContract           ConsentBasis = "contract"
	ConsentBasisLegalObligation    ConsentBasis = "legal_obligation"
)

func KnownConsentBasisValues

func KnownConsentBasisValues() []ConsentBasis

KnownConsentBasisValues returns the current schema-defined values for ConsentBasis.

func ParseConsentBasis

func ParseConsentBasis(s string) (ConsentBasis, error)

ParseConsentBasis returns s as ConsentBasis when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type ContentIDType

type ContentIDType = string

ContentIDType — Identifier type used in content_ids on conversion events to match back to

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"
)

func KnownContentIDTypeValues

func KnownContentIDTypeValues() []ContentIDType

KnownContentIDTypeValues returns the current schema-defined values for ContentIDType.

func ParseContentIDType

func ParseContentIDType(s string) (ContentIDType, error)

ParseContentIDType returns s as ContentIDType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type ContentRating

type ContentRating struct {
	System string `json:"system"`
	Rating string `json:"rating"`
}

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"
)

func KnownContentRatingSystemValues

func KnownContentRatingSystemValues() []ContentRatingSystem

KnownContentRatingSystemValues returns the current schema-defined values for ContentRatingSystem.

func ParseContentRatingSystem

func ParseContentRatingSystem(s string) (ContentRatingSystem, error)

ParseContentRatingSystem returns s as ContentRatingSystem when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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. `JCS_NON_FINITE_NUMBER` is reserved for digest-mode
	ErrorDetail  string  `json:"error_detail,omitempty"`  // Human-readable explanation of the failure
	CurrentState *string `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 or could not produce a conformant response — invalid transition, unknown

type ConversionTrackingCaps

type ConversionTrackingCaps struct {
	MultiSourceEventDedup      *bool                     `json:"multi_source_event_dedup,omitempty"`
	PerCreativeAttribution     *bool                     `json:"per_creative_attribution,omitempty"`
	SupportedEventTypes        []string                  `json:"supported_event_types,omitempty"`
	SupportedTargets           []string                  `json:"supported_targets,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 {
	AdcpVersion      string                 `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion int                    `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	Account          *AccountReference      `json:"account,omitempty"`            // Account that will own the list. Pass a natural key (brand, operator, optional
	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
	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
	IdempotencyKey   string                 `json:"idempotency_key"`              // Client-generated unique key for this request. Prevents duplicate collection
	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"` // Opaque media-buy-level correlation data echoed unchanged from the
	Ext     any         `json:"ext,omitempty"`
}

CreateMediaBuyError — Error response - operation failed, no media buy created

type CreateMediaBuyRequest

type CreateMediaBuyRequest struct {
	AdcpVersion            string                  `json:"adcp_version,omitempty"`           // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion       int                     `json:"adcp_major_version,omitempty"`     // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	IdempotencyKey         string                  `json:"idempotency_key"`                  // Client-generated unique key for this request. If a request with the same
	PlanID                 string                  `json:"plan_id,omitempty"`                // Campaign governance plan identifier. Required when the account has
	Account                AccountReference        `json:"account"`                          // Account to bill for this media buy. Pass a natural key (brand, operator
	ProposalID             string                  `json:"proposal_id,omitempty"`            // ID of a committed proposal from get_products to execute. When provided with
	TotalBudget            *MediaBuyBudget         `json:"total_budget,omitempty"`           // Total budget for the media buy when executing a proposal. The publisher
	Packages               []PackageInput          `json:"packages,omitempty"`               // Array of package configurations. Required when not using proposal_id. When
	Brand                  BrandReference          `json:"brand"`                            // Brand reference for this media buy. Resolved to full brand identity at
	AdvertiserIndustry     AdvertiserIndustry      `json:"advertiser_industry,omitempty"`    // Industry classification for this specific campaign. A brand may operate across
	InvoiceRecipient       *BusinessEntity         `json:"invoice_recipient,omitempty"`      // Override the account's default billing entity for this specific buy. When
	IoAcceptance           *IOAcceptance           `json:"io_acceptance,omitempty"`          // Acceptance of an insertion order from a committed proposal. Required when the
	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
	StartTime              string                  `json:"start_time"`
	EndTime                string                  `json:"end_time"`                           // Campaign end date/time in ISO 8601 format
	Paused                 *bool                   `json:"paused,omitempty"`                   // Create the media buy in a paused delivery state. When true, and the buy would
	PushNotificationConfig *PushNotificationConfig `json:"push_notification_config,omitempty"` // Optional webhook configuration for async task status notifications. Publisher
	ReportingWebhook       *ReportingWebhook       `json:"reporting_webhook,omitempty"`        // Optional webhook configuration for automated reporting delivery
	ArtifactWebhook        *ArtifactWebhookConfig  `json:"artifact_webhook,omitempty"`         // Optional webhook configuration for content artifact delivery. Used by
	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

type CreateMediaBuyResponse

type CreateMediaBuyResponse interface {
	// contains filtered or unexported methods
}

CreateMediaBuyResponse is a discriminated union — use one of the generated variant structs.

type CreateMediaBuyResult deprecated

type CreateMediaBuyResult = CreateMediaBuyResponse

CreateMediaBuyResult is an alias for the generated create_media_buy response union.

Deprecated: use CreateMediaBuyResponse.

type CreateMediaBuySubmitted

type CreateMediaBuySubmitted struct {
	Status  string      `json:"status"`            // Task-level status literal. Discriminates this async envelope from the
	TaskID  string      `json:"task_id"`           // Task handle the buyer uses with tasks/get, and that the seller references on
	Message string      `json:"message,omitempty"` // Optional human-readable explanation of why the task is submitted — e.g.
	Errors  []AdcpError `json:"errors,omitempty"`  // Optional advisory errors accompanying the submitted envelope. Use only for
	Context any         `json:"context,omitempty"` // Opaque media-buy-level correlation data echoed unchanged from the
	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
	InvoiceRecipient *BusinessEntity `json:"invoice_recipient,omitempty"` // Per-buy invoice recipient, echoed from the request when provided. Confirms the
	MediaBuyStatus   MediaBuyStatus  `json:"media_buy_status,omitempty"`  // Initial media buy status. Either 'pending_creatives' (awaiting creative
	// Deprecated: DEPRECATED in 3.1, removed in 3.2 (#4906).
	Status           MediaBuyStatus            `json:"status,omitempty"`            // DEPRECATED in 3.1, removed in 3.2 (#4906). Use `media_buy_status` instead.
	ConfirmedAt      *string                   `json:"confirmed_at"`                // ISO 8601 timestamp when this media buy was committed by the seller. Stable
	CreativeDeadline string                    `json:"creative_deadline,omitempty"` // ISO 8601 timestamp for creative upload deadline
	Revision         int                       `json:"revision"`                    // Initial revision number for this media buy. Use in subsequent update_media_buy
	Currency         string                    `json:"currency,omitempty"`          // ISO 4217 currency code (e.g., USD, EUR, GBP) for monetary values at this media
	TotalBudget      float64                   `json:"total_budget,omitempty"`      // Total budget amount across all packages, denominated in currency. Note: the
	ValidActions     []MediaBuyValidAction     `json:"valid_actions,omitempty"`     // Flat-vocabulary actions the buyer can perform on this media buy after
	AvailableActions []MediaBuyAvailableAction `json:"available_actions,omitempty"` // Structured per-buy resolution of actions available immediately after creation.
	Packages         []Package                 `json:"packages"`                    // Array of created packages with complete state information
	PlannedDelivery  *PlannedDelivery          `json:"planned_delivery,omitempty"`  // The seller's interpreted delivery parameters. Describes what the seller will
	Sandbox          *bool                     `json:"sandbox,omitempty"`           // When true, this response contains simulated data from sandbox mode.
	Context          any                       `json:"context,omitempty"`           // Opaque media-buy-level correlation data echoed unchanged from the
	Ext              any                       `json:"ext,omitempty"`
}

CreateMediaBuySuccess — Success response - media buy created successfully

type CreativeAcceptedVerifier

type CreativeAcceptedVerifier struct {
	AgentURL  string   `json:"agent_url"`            // URL of the governance agent. MUST use the `https://` scheme. The seller calls
	FeatureID string   `json:"feature_id,omitempty"` // Optional canonical `feature_id` the seller will request against this agent
	Providers []string `json:"providers,omitempty"`  // Optional `provider` labels this agent verifies (e.g., `['Encypher'
}

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"
)

func KnownCreativeActionValues

func KnownCreativeActionValues() []CreativeAction

KnownCreativeActionValues returns the current schema-defined values for CreativeAction.

func ParseCreativeAction

func ParseCreativeAction(s string) (CreativeAction, error)

ParseCreativeAction returns s as CreativeAction when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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"
)

func KnownCreativeAgentCapabilityValues

func KnownCreativeAgentCapabilityValues() []CreativeAgentCapability

KnownCreativeAgentCapabilityValues returns the current schema-defined values for CreativeAgentCapability.

func ParseCreativeAgentCapability

func ParseCreativeAgentCapability(s string) (CreativeAgentCapability, error)

ParseCreativeAgentCapability returns s as CreativeAgentCapability when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type CreativeAgentRef

type CreativeAgentRef struct {
	AgentURL     string                    `json:"agent_url"`              // Base URL for the creative agent (e.g., 'https://reference.example.com'
	AgentName    string                    `json:"agent_name,omitempty"`   // Human-readable name for the creative agent
	Capabilities []CreativeAgentCapability `json:"capabilities,omitempty"` // Capabilities this creative agent provides
}

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"
)

func KnownCreativeApprovalStatusValues

func KnownCreativeApprovalStatusValues() []CreativeApprovalStatus

KnownCreativeApprovalStatusValues returns the current schema-defined values for CreativeApprovalStatus.

func ParseCreativeApprovalStatus

func ParseCreativeApprovalStatus(s string) (CreativeApprovalStatus, error)

ParseCreativeApprovalStatus returns s as CreativeApprovalStatus when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type CreativeAsset

type CreativeAsset struct {
	CreativeID          string               `json:"creative_id"`                    // Unique identifier for the creative. Stable across legacy named-format and 3.1+
	Name                string               `json:"name"`                           // Human-readable creative name
	FormatID            *FormatRef           `json:"format_id,omitempty"`            // Legacy named-format path. Always a structured object {agent_url, id} — never a
	FormatKind          string               `json:"format_kind,omitempty"`          // 3.1+ canonical-format path. The canonical format name this creative targets
	FormatOptionRef     *FormatOptionRef     `json:"format_option_ref,omitempty"`    // 3.1+ format-option path, optional. Structured format option reference matching
	Assets              map[string]any       `json:"assets"`                         // Assets required by the format, keyed by asset_id or canonical asset_group_id.
	Inputs              []CreativeAssetInput `json:"inputs,omitempty"`               // Preview contexts for generative formats - defines what scenarios to generate
	Tags                []string             `json:"tags,omitempty"`                 // User-defined tags for organization and searchability
	Status              CreativeStatus       `json:"status,omitempty"`               // For generative creatives: set to 'approved' to finalize, 'rejected' to request
	Weight              *float64             `json:"weight,omitempty"`               // Optional delivery weight for creative rotation when uploading via
	PlacementRefs       []PlacementRef       `json:"placement_refs,omitempty"`       // Optional structured placement references where this uploaded creative should
	PlacementIDs        []string             `json:"placement_ids,omitempty"`        // Legacy shorthand array of placement IDs where this creative should run when
	IndustryIdentifiers []IndustryIdentifier `json:"industry_identifiers,omitempty"` // Industry-standard or market-specific identifiers for this creative (e.g.
	Provenance          *Provenance          `json:"provenance,omitempty"`           // Provenance metadata for this creative. Serves as the default provenance for
}

CreativeAsset — Creative asset for upload to library — supports static assets, generative formats, and third-party

type CreativeAssetInput

type CreativeAssetInput struct {
	Name               string            `json:"name"`                          // Human-readable name for this preview variant
	Macros             map[string]string `json:"macros,omitempty"`              // Macro values to apply for this preview
	ContextDescription string            `json:"context_description,omitempty"` // Natural language description of the context for AI-generated content
}

type CreativeAssignment

type CreativeAssignment struct {
	CreativeID    string         `json:"creative_id"`
	Weight        *float64       `json:"weight,omitempty"`
	PlacementRefs []PlacementRef `json:"placement_refs,omitempty"`
	PlacementIDs  []string       `json:"placement_ids,omitempty"`
	Extra         map[string]any `json:"-"`
}

CreativeAssignment assigns an existing creative to a package.

func (CreativeAssignment) MarshalJSON

func (a CreativeAssignment) MarshalJSON() ([]byte, error)

MarshalJSON preserves schema-allowed vendor fields while keeping typed fields authoritative when keys collide.

func (*CreativeAssignment) UnmarshalJSON

func (a *CreativeAssignment) UnmarshalJSON(data []byte) error

UnmarshalJSON captures schema-allowed vendor fields so agents can round-trip platform-specific assignment metadata.

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.
	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       *CreativeBriefMessaging  `json:"messaging,omitempty"`        // Messaging framework for the campaign
	ReferenceAssets []ReferenceAsset         `json:"reference_assets,omitempty"` // Visual and strategic reference materials such as mood boards, product shots
	Compliance      *CreativeBriefCompliance `json:"compliance,omitempty"`       // Regulatory and legal compliance requirements for this campaign.
}

CreativeBrief — Campaign-level creative context for AI-powered creative generation. Provides the layer between

type CreativeBriefCompliance

type CreativeBriefCompliance struct {
	RequiredDisclosures []CreativeBriefDisclosure `json:"required_disclosures,omitempty"` // Disclosures that must appear in creatives for this campaign. Each disclosure
	ProhibitedClaims    []string                  `json:"prohibited_claims,omitempty"`    // Claims that must not appear in creatives for this campaign. Creative agents
}

CreativeBriefCompliance — Regulatory and legal compliance requirements for this campaign. Campaign-specific, regional, and

type CreativeBriefDisclosure

type CreativeBriefDisclosure struct {
	Text          string                `json:"text"`                      // The disclosure text that must appear in the creative
	Position      DisclosurePosition    `json:"position,omitempty"`        // Where the disclosure should appear within the creative. prominent: clearly
	Jurisdictions []string              `json:"jurisdictions,omitempty"`   // Jurisdictions where this disclosure is required. ISO 3166-1 alpha-2 country
	Regulation    string                `json:"regulation,omitempty"`      // The regulation or legal authority requiring this disclosure (e.g., 'SEC Rule
	MinDurationMs int                   `json:"min_duration_ms,omitempty"` // Minimum display duration in milliseconds. For video/audio disclosures, how
	Language      string                `json:"language,omitempty"`        // Language of the disclosure text as a BCP 47 language tag (e.g., 'en', 'fr-CA'
	Persistence   DisclosurePersistence `json:"persistence,omitempty"`     // How long the disclosure must persist during content playback or display. When
}

type CreativeBriefMessaging

type CreativeBriefMessaging struct {
	Headline    string   `json:"headline,omitempty"`     // Primary headline
	Tagline     string   `json:"tagline,omitempty"`      // Supporting tagline or sub-headline
	CTA         string   `json:"cta,omitempty"`          // Call-to-action text
	KeyMessages []string `json:"key_messages,omitempty"` // Key messages to communicate in priority order
}

CreativeBriefMessaging — Messaging framework for the campaign

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"`
	SupportsTransformers      *bool                     `json:"supports_transformers,omitempty"`
	SupportsRefinement        *bool                     `json:"supports_refinement,omitempty"`
	SupportsEvaluator         *bool                     `json:"supports_evaluator,omitempty"`
	SupportsSpendControls     *bool                     `json:"supports_spend_controls,omitempty"`
	RefinableRetentionSeconds *int                      `json:"refinable_retention_seconds,omitempty"`
	Multiplicity              *CreativeMultiplicityCaps `json:"multiplicity,omitempty"`
	SupportedFormats          []CreativeSupportedFormat `json:"supported_formats,omitempty"`
	BillsThroughAdcp          *bool                     `json:"bills_through_adcp,omitempty"`
	CanonicalCatalogVersion   string                    `json:"canonical_catalog_version,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 CreativeEventReasonCode

type CreativeEventReasonCode = string

CreativeEventReasonCode — Categorical reason carried on creative lifecycle webhooks

const (
	CreativeEventReasonCodeReviewPassed                 CreativeEventReasonCode = "review_passed"
	CreativeEventReasonCodeReviewFailure                CreativeEventReasonCode = "review_failure"
	CreativeEventReasonCodeProcessingFailure            CreativeEventReasonCode = "processing_failure"
	CreativeEventReasonCodeSellerRereview               CreativeEventReasonCode = "seller_rereview"
	CreativeEventReasonCodePolicyRevocation             CreativeEventReasonCode = "policy_revocation"
	CreativeEventReasonCodeContentDrift                 CreativeEventReasonCode = "content_drift"
	CreativeEventReasonCodeIdentityAuthorizationRevoked CreativeEventReasonCode = "identity_authorization_revoked"
	CreativeEventReasonCodeIdentityAuthorizationExpired CreativeEventReasonCode = "identity_authorization_expired"
	CreativeEventReasonCodeSourcePrivate                CreativeEventReasonCode = "source_private"
	CreativeEventReasonCodeSourceDeleted                CreativeEventReasonCode = "source_deleted"
	CreativeEventReasonCodeTakedownRequest              CreativeEventReasonCode = "takedown_request"
	CreativeEventReasonCodeAdvertiserRequest            CreativeEventReasonCode = "advertiser_request"
	CreativeEventReasonCodeSellerArchive                CreativeEventReasonCode = "seller_archive"
	CreativeEventReasonCodeAccountClosed                CreativeEventReasonCode = "account_closed"
	CreativeEventReasonCodeAccountSuspended             CreativeEventReasonCode = "account_suspended"
	CreativeEventReasonCodeRetentionExpired             CreativeEventReasonCode = "retention_expired"
	CreativeEventReasonCodeLegalErasure                 CreativeEventReasonCode = "legal_erasure"
)

func KnownCreativeEventReasonCodeValues

func KnownCreativeEventReasonCodeValues() []CreativeEventReasonCode

KnownCreativeEventReasonCodeValues returns the current schema-defined values for CreativeEventReasonCode.

func ParseCreativeEventReasonCode

func ParseCreativeEventReasonCode(s string) (CreativeEventReasonCode, error)

ParseCreativeEventReasonCode returns s as CreativeEventReasonCode when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type CreativeFilters

type CreativeFilters struct {
	CreativeIDs []string    `json:"creative_ids,omitempty"`
	FormatIDs   []FormatRef `json:"format_ids,omitempty"`
}

CreativeFilters contains filters for list_creatives.

type CreativeFormat

type CreativeFormat struct {
	FormatID          FormatRef           `json:"format_id"`                    // This format's own identifier — a structured object {agent_url, id}, not a
	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 []FormatIDParameter `json:"accepts_parameters,omitempty"` // List of parameters this format accepts in format_id. Template formats define
	Renders           []Render            `json:"renders,omitempty"`            // Specification of rendered pieces for this format. Most formats produce a
	Assets            []AssetSlot         `json:"assets,omitempty"`             // Array of all assets supported for this format. Each asset is identified by its
	Delivery          map[string]any      `json:"delivery,omitempty"`           // Delivery method specifications (e.g., hosted, VAST, third-party tags)
	SupportedMacros   []string            `json:"supported_macros,omitempty"`   // List of universal macros supported by this format (e.g., MEDIA_BUY_ID
	// Deprecated: **DEPRECATED in 3.1.
	InputFormatIDs []FormatRef `json:"input_format_ids,omitempty"` // **DEPRECATED in 3.1. Removed at 4.0.** Use `list_transformers` instead — a
	// Deprecated: **DEPRECATED in 3.1.
	OutputFormatIDs              []FormatRef                          `json:"output_format_ids,omitempty"`              // **DEPRECATED in 3.1. Removed at 4.0.** Use `list_transformers` instead — a
	FormatCard                   *CreativeFormatCard                  `json:"format_card,omitempty"`                    // Optional standard visual card (300x400px) for displaying this format in user
	Accessibility                *CreativeFormatAccessibility         `json:"accessibility,omitempty"`                  // Accessibility posture of this format. Declares the WCAG conformance level that
	SupportedDisclosurePositions []DisclosurePosition                 `json:"supported_disclosure_positions,omitempty"` // Disclosure positions this format can render. Buyers use this to determine
	DisclosureCapabilities       []CreativeFormatDisclosureCapability `json:"disclosure_capabilities,omitempty"`        // Structured disclosure capabilities per position with persistence modes.
	FormatCardDetailed           *CreativeFormatCardDetailed          `json:"format_card_detailed,omitempty"`           // Optional detailed card with carousel and full specifications. Provides rich
	ReportedMetrics              []AvailableMetric                    `json:"reported_metrics,omitempty"`               // Metrics this format can produce in delivery reporting. Buyers receive the
	// Deprecated: **DEPRECATED in 3.1.
	PricingOptions []VendorPricingOption   `json:"pricing_options,omitempty"` // **DEPRECATED in 3.1. Removed at 4.0.** Use `transformer.pricing_options` (via
	Canonical      *CanonicalProjectionRef `json:"canonical,omitempty"`       // Optional v2 canonical-projection annotation. Always an object — bare-string
	// Deprecated: **DEPRECATED in 3.1.
	CanonicalParameters *ProductFormatDeclaration `json:"canonical_parameters,omitempty"` // **DEPRECATED in 3.1. Removed at 4.0.** Use `v1_format_ref` on the v2
}

CreativeFormat — Represents a creative format with its requirements

type CreativeFormatAccessibility

type CreativeFormatAccessibility struct {
	WcagLevel                WcagLevel `json:"wcag_level"`                           // WCAG conformance level that this format achieves. For format-rendered
	RequiresAccessibleAssets *bool     `json:"requires_accessible_assets,omitempty"` // When true, all assets with x-accessibility fields must include those fields.
}

CreativeFormatAccessibility — Accessibility posture of this format. Declares the WCAG conformance level that creatives produced

type CreativeFormatCard

type CreativeFormatCard struct {
	FormatID FormatRef      `json:"format_id"` // Creative format defining the card layout (typically format_card_standard)
	Manifest map[string]any `json:"manifest"`  // Asset manifest for rendering the card, structure defined by the format
}

CreativeFormatCard — Optional standard visual card (300x400px) for displaying this format in user interfaces. Can be

type CreativeFormatCardDetailed

type CreativeFormatCardDetailed struct {
	FormatID FormatRef      `json:"format_id"` // Creative format defining the detailed card layout (typically
	Manifest map[string]any `json:"manifest"`  // Asset manifest for rendering the detailed card, structure defined by the format
}

CreativeFormatCardDetailed — Optional detailed card with carousel and full specifications. Provides rich format documentation

type CreativeFormatDisclosureCapability

type CreativeFormatDisclosureCapability struct {
	Position    DisclosurePosition      `json:"position"`    // The disclosure position
	Persistence []DisclosurePersistence `json:"persistence"` // Persistence modes this position supports
}

type CreativeIdentifierType

type CreativeIdentifierType = string

CreativeIdentifierType — Industry-standard or market-specific identifier types for advertising

const (
	CreativeIdentifierTypeAdID           CreativeIdentifierType = "ad_id"
	CreativeIdentifierTypeIsci           CreativeIdentifierType = "isci"
	CreativeIdentifierTypeClearcastClock CreativeIdentifierType = "clearcast_clock"
	CreativeIdentifierTypeIdcrea         CreativeIdentifierType = "idcrea"
)

func KnownCreativeIdentifierTypeValues

func KnownCreativeIdentifierTypeValues() []CreativeIdentifierType

KnownCreativeIdentifierTypeValues returns the current schema-defined values for CreativeIdentifierType.

func ParseCreativeIdentifierType

func ParseCreativeIdentifierType(s string) (CreativeIdentifierType, error)

ParseCreativeIdentifierType returns s as CreativeIdentifierType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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 CreativeListItem struct {
	CreativeID string    `json:"creative_id"`
	Name       string    `json:"name"`
	FormatID   FormatRef `json:"format_id"`
	Status     string    `json:"status"`
}

type CreativeManifest

type CreativeManifest struct {
	FormatID            *FormatRef           `json:"format_id,omitempty"`            // Legacy named-format path. Always a structured object {agent_url, id} — never a
	FormatKind          string               `json:"format_kind,omitempty"`          // 3.1+ canonical-format path. The canonical format name this manifest targets
	FormatOptionRef     *FormatOptionRef     `json:"format_option_ref,omitempty"`    // 3.1+ format-option path, optional. Structured format option reference matching
	Assets              map[string]any       `json:"assets"`                         // Map of slot keys to actual asset content. Legacy named-format path: each key
	Brand               *BrandReference      `json:"brand,omitempty"`                // Brand identity reference (BrandRef — `domain` plus optional `brand_id` for
	Rights              []RightsConstraint   `json:"rights,omitempty"`               // Rights constraints attached to this creative. Each entry represents
	IndustryIdentifiers []IndustryIdentifier `json:"industry_identifiers,omitempty"` // Industry-standard or market-specific identifiers for this specific manifest
	Provenance          *Provenance          `json:"provenance,omitempty"`           // Provenance metadata for this creative manifest. Serves as the default
	Ext                 any                  `json:"ext,omitempty"`
}

CreativeManifest — Complete specification of a creative: format identification + assets. A manifest carries EITHER a

type CreativeMultiplicityCaps

type CreativeMultiplicityCaps struct {
	SupportsCatalogFanout    *bool    `json:"supports_catalog_fanout,omitempty"`
	MaxCreativesLimit        *int     `json:"max_creatives_limit,omitempty"`
	SupportsSignalFanout     *bool    `json:"supports_signal_fanout,omitempty"`
	MaxSignalConditionsLimit *int     `json:"max_signal_conditions_limit,omitempty"`
	SupportsVariants         *bool    `json:"supports_variants,omitempty"`
	MaxVariantsLimit         *int     `json:"max_variants_limit,omitempty"`
	VariantDimensions        []string `json:"variant_dimensions,omitempty"`
	SelectionStrategies      []string `json:"selection_strategies,omitempty"`
}

CreativeMultiplicityCaps declares pre-call build_creative fan-out discriminators so a buyer can tell, before sending max_creatives / max_variants, whether this agent supports catalog/signal fan-out or variants and what per-call limits apply.

type CreativePolicy

type CreativePolicy struct {
	CoBranding             CoBrandingRequirement           `json:"co_branding"`                       // Co-branding requirement
	LandingPage            LandingPageRequirement          `json:"landing_page"`                      // Landing page requirements
	TemplatesAvailable     bool                            `json:"templates_available"`               // Whether creative templates are provided
	ProvenanceRequired     *bool                           `json:"provenance_required,omitempty"`     // Whether creatives must include provenance metadata. When true, the seller
	ProvenanceRequirements *CreativeProvenanceRequirements `json:"provenance_requirements,omitempty"` // Structured provenance requirements for creatives. Refines
	AcceptedVerifiers      []CreativeAcceptedVerifier      `json:"accepted_verifiers,omitempty"`      // Governance agents the seller operates, has allowlisted, or otherwise trusts to
}

CreativePolicy — Creative requirements and restrictions for a product

type CreativeProvenanceRequirements

type CreativeProvenanceRequirements struct {
	RequireDigitalSourceType  *bool `json:"require_digital_source_type,omitempty"` // When true, the seller requires creatives to include a `digital_source_type`
	RequireDisclosureMetadata *bool `json:"require_disclosure_metadata,omitempty"` // When true, the seller requires creatives to include a `disclosure` object in
	RequireEmbeddedProvenance *bool `json:"require_embedded_provenance,omitempty"` // When true, the seller requires creatives to include at least one
}

CreativeProvenanceRequirements — Structured provenance requirements for creatives. Refines `provenance_required`: when

type CreativeQuality

type CreativeQuality = string

CreativeQuality — Quality tier for creative generation, controlling the fidelity and cost tradeoff

const (
	CreativeQualityDraft      CreativeQuality = "draft"
	CreativeQualityProduction CreativeQuality = "production"
)

func KnownCreativeQualityValues

func KnownCreativeQualityValues() []CreativeQuality

KnownCreativeQualityValues returns the current schema-defined values for CreativeQuality.

func ParseCreativeQuality

func ParseCreativeQuality(s string) (CreativeQuality, error)

ParseCreativeQuality returns s as CreativeQuality when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type CreativeResult

type CreativeResult struct {
	CreativeID      string   `json:"creative_id"`
	Action          string   `json:"action"`
	Status          string   `json:"status,omitempty"`
	RejectionReason string   `json:"rejection_reason,omitempty"`
	Errors          []string `json:"errors,omitempty"`
}

type CreativeSelectionStrategy

type CreativeSelectionStrategy = string

CreativeSelectionStrategy — How a creative agent samples which catalog items / signal conditions to

const (
	CreativeSelectionStrategyAudienceRelevance CreativeSelectionStrategy = "audience_relevance"
	CreativeSelectionStrategyContextualFit     CreativeSelectionStrategy = "contextual_fit"
	CreativeSelectionStrategyPerformance       CreativeSelectionStrategy = "performance"
	CreativeSelectionStrategyProximity         CreativeSelectionStrategy = "proximity"
	CreativeSelectionStrategyInventoryPriority CreativeSelectionStrategy = "inventory_priority"
	CreativeSelectionStrategyRandom            CreativeSelectionStrategy = "random"
)

func KnownCreativeSelectionStrategyValues

func KnownCreativeSelectionStrategyValues() []CreativeSelectionStrategy

KnownCreativeSelectionStrategyValues returns the current schema-defined values for CreativeSelectionStrategy.

func ParseCreativeSelectionStrategy

func ParseCreativeSelectionStrategy(s string) (CreativeSelectionStrategy, error)

ParseCreativeSelectionStrategy returns s as CreativeSelectionStrategy when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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"
)

func KnownCreativeSortFieldValues

func KnownCreativeSortFieldValues() []CreativeSortField

KnownCreativeSortFieldValues returns the current schema-defined values for CreativeSortField.

func ParseCreativeSortField

func ParseCreativeSortField(s string) (CreativeSortField, error)

ParseCreativeSortField returns s as CreativeSortField when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type CreativeSpecsCaps

type CreativeSpecsCaps struct {
	VASTVersions  []string `json:"vast_versions,omitempty"`
	MRAIDVersions []string `json:"mraid_versions,omitempty"`
	VPAID         *bool    `json:"vpaid,omitempty"`
	SIMID         *bool    `json:"simid,omitempty"`
}

type CreativeStatus

type CreativeStatus = string

CreativeStatus — Lifecycle status of a creative asset in a creative library. See the Creative

const (
	CreativeStatusProcessing    CreativeStatus = "processing"
	CreativeStatusPendingReview CreativeStatus = "pending_review"
	CreativeStatusApproved      CreativeStatus = "approved"
	CreativeStatusSuspended     CreativeStatus = "suspended"
	CreativeStatusRejected      CreativeStatus = "rejected"
	CreativeStatusArchived      CreativeStatus = "archived"
)

func KnownCreativeStatusValues

func KnownCreativeStatusValues() []CreativeStatus

KnownCreativeStatusValues returns the current schema-defined values for CreativeStatus.

func ParseCreativeStatus

func ParseCreativeStatus(s string) (CreativeStatus, error)

ParseCreativeStatus returns s as CreativeStatus when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type CreativeSupportedFormat

type CreativeSupportedFormat struct {
	CapabilityID string                   `json:"capability_id,omitempty"`
	Format       ProductFormatDeclaration `json:"format"`
}

type CreativeVariable

type CreativeVariable struct {
	VariableID   string `json:"variable_id"`             // Variable identifier on the creative platform
	Name         string `json:"name"`                    // Human-readable variable name
	VariableType string `json:"variable_type"`           // Data type of the variable. Each type represents a semantic content slot: text
	DefaultValue string `json:"default_value,omitempty"` // Default value used when no dynamic value is provided at serve time. All types
	Required     *bool  `json:"required,omitempty"`      // Whether this variable must have a value for the creative to serve
}

CreativeVariable — A dynamic content variable (DCO slot) on a creative. Variables represent content that can change

type DaastTrackingEvent

type DaastTrackingEvent = string

DaastTrackingEvent — Tracking events for audio ads. Aligned to the IAB DAAST 1.1 `Tracking@event`

const (
	DaastTrackingEventImpression           DaastTrackingEvent = "impression"
	DaastTrackingEventCreativeView         DaastTrackingEvent = "creativeView"
	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"
	DaastTrackingEventRewind               DaastTrackingEvent = "rewind"
	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"
)

func KnownDaastTrackingEventValues

func KnownDaastTrackingEventValues() []DaastTrackingEvent

KnownDaastTrackingEventValues returns the current schema-defined values for DaastTrackingEvent.

func ParseDaastTrackingEvent

func ParseDaastTrackingEvent(s string) (DaastTrackingEvent, error)

ParseDaastTrackingEvent returns s as DaastTrackingEvent when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type DaastVersion

type DaastVersion = string

DaastVersion — Supported DAAST (Digital Audio Ad Serving Template) specification versions

const (
	DaastVersion10 DaastVersion = "1.0"
	DaastVersion11 DaastVersion = "1.1"
)

func KnownDaastVersionValues

func KnownDaastVersionValues() []DaastVersion

KnownDaastVersionValues returns the current schema-defined values for DaastVersion.

func ParseDaastVersion

func ParseDaastVersion(s string) (DaastVersion, error)

ParseDaastVersion returns s as DaastVersion when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type DataProviderSignalSelector

type DataProviderSignalSelector struct {
	DataProviderDomain string   `json:"data_provider_domain,omitempty"` // Domain where data provider's adagents.json is hosted (e.g., 'polk.com')
	SelectionType      string   `json:"selection_type,omitempty"`       // Discriminator indicating selection by signal tags
	SignalIDs          []string `json:"signal_ids,omitempty"`           // Specific signal IDs from the data provider's published signal definitions
	SignalTags         []string `json:"signal_tags,omitempty"`          // Signal tags from the data provider's published signal definitions. Selector
}

DataProviderSignalSelector — Selects signals from a data provider's adagents.json signals[]. Used for product definitions and

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 DateRange

type DateRange struct {
	Start string `json:"start"` // Start date (inclusive), ISO 8601
	End   string `json:"end"`   // End date (inclusive), ISO 8601
}

DateRange — A date range with inclusive start and end dates (ISO 8601 calendar dates). Used for billing

type DatetimeRange

type DatetimeRange struct {
	Start string `json:"start"` // Start timestamp (inclusive), ISO 8601
	End   string `json:"end"`   // End timestamp (inclusive), ISO 8601
}

DatetimeRange — A datetime range with inclusive start and end timestamps (ISO 8601 with timezone). Used for

type DayOfWeek

type DayOfWeek = string

DayOfWeek — Days of the week for daypart targeting

const (
	DayOfWeekMonday    DayOfWeek = "monday"
	DayOfWeekTuesday   DayOfWeek = "tuesday"
	DayOfWeekWednesday DayOfWeek = "wednesday"
	DayOfWeekThursday  DayOfWeek = "thursday"
	DayOfWeekFriday    DayOfWeek = "friday"
	DayOfWeekSaturday  DayOfWeek = "saturday"
	DayOfWeekSunday    DayOfWeek = "sunday"
)

func KnownDayOfWeekValues

func KnownDayOfWeekValues() []DayOfWeek

KnownDayOfWeekValues returns the current schema-defined values for DayOfWeek.

func ParseDayOfWeek

func ParseDayOfWeek(s string) (DayOfWeek, error)

ParseDayOfWeek returns s as DayOfWeek when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type DaypartTarget

type DaypartTarget struct {
	Days      []DayOfWeek `json:"days"`            // Days of week this window applies to. Use multiple days for compact targeting
	StartHour int         `json:"start_hour"`      // Start hour (inclusive), 0-23 in 24-hour format. 0 = midnight, 6 = 6:00am, 18 =
	EndHour   int         `json:"end_hour"`        // End hour (exclusive), 1-24 in 24-hour format. 10 = 10:00am, 24 = midnight.
	Label     string      `json:"label,omitempty"` // Optional human-readable name for this time window (e.g., 'Morning Drive'
}

DaypartTarget — A time window for daypart targeting. Specifies days of week and an hour range. start_hour is

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"
)

func KnownDelegationAuthorityValues

func KnownDelegationAuthorityValues() []DelegationAuthority

KnownDelegationAuthorityValues returns the current schema-defined values for DelegationAuthority.

func ParseDelegationAuthority

func ParseDelegationAuthority(s string) (DelegationAuthority, error)

ParseDelegationAuthority returns s as DelegationAuthority when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type DeleteCollectionListRequest

type DeleteCollectionListRequest struct {
	AdcpVersion      string            `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion int               `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	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
	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
}

DeleteCollectionListRequest — Request parameters for deleting a collection list

type DeliveryActionSourceMetrics

type DeliveryActionSourceMetrics struct {
	ActionSource  ActionSource `json:"action_source"`             // Where the conversion occurred
	EventSourceID string       `json:"event_source_id,omitempty"` // Event source that produced these conversions (for disambiguation when multiple
	Count         float64      `json:"count"`                     // Number of conversions from this action source
	Value         float64      `json:"value,omitempty"`           // Total monetary value of conversions from this action source
}

type DeliveryAggregatedTotals

type DeliveryAggregatedTotals struct {
	Impressions        float64                   `json:"impressions"`                    // Total impressions delivered across all media buys
	Spend              float64                   `json:"spend"`                          // Total amount spent across all media buys
	Clicks             float64                   `json:"clicks,omitempty"`               // Total clicks across all media buys (if applicable)
	CompletedViews     float64                   `json:"completed_views,omitempty"`      // Total audio/video completions across all media buys (if applicable)
	Views              float64                   `json:"views,omitempty"`                // Total views across all media buys (if applicable)
	Conversions        float64                   `json:"conversions,omitempty"`          // Total conversions across all media buys (if applicable)
	ConversionValue    float64                   `json:"conversion_value,omitempty"`     // Total conversion value across all media buys (if applicable)
	Roas               float64                   `json:"roas,omitempty"`                 // Aggregate return on ad spend across all media buys (total conversion_value /
	NewToBrandRate     float64                   `json:"new_to_brand_rate,omitempty"`    // Fraction of total conversions across all media buys from first-time brand
	CostPerAcquisition float64                   `json:"cost_per_acquisition,omitempty"` // Aggregate cost per conversion across all media buys (total spend / total
	CompletionRate     float64                   `json:"completion_rate,omitempty"`      // Aggregate completion rate across all media buys (weighted by impressions, not
	Reach              float64                   `json:"reach,omitempty"`                // Deduplicated reach across all media buys (if the seller can deduplicate across
	ReachUnit          *ReachUnit                `json:"reach_unit,omitempty"`           // Unit of measurement for reach. Only present when all aggregated media buys use
	Frequency          float64                   `json:"frequency,omitempty"`            // Average frequency per reach unit across all media buys (impressions / reach
	MediaBuyCount      int                       `json:"media_buy_count"`                // Number of media buys included in the response
	MetricAggregates   []DeliveryMetricAggregate `json:"metric_aggregates,omitempty"`    // Cross-buy delivery aggregates partitioned by qualifier. Row-symmetric with
}

DeliveryAggregatedTotals — Combined metrics across all returned media buys. Only included in API responses

type DeliveryAttributionWindow

type DeliveryAttributionWindow struct {
	PostClick *Duration        `json:"post_click,omitempty"` // Post-click attribution window to apply.
	PostView  *Duration        `json:"post_view,omitempty"`  // Post-view attribution window to apply.
	Model     AttributionModel `json:"model,omitempty"`      // Attribution model to use. When omitted, the seller applies their default model.
}

DeliveryAttributionWindow — Attribution window to apply for conversion metrics. When provided, the seller returns conversion

type DeliveryDOOHMetrics

type DeliveryDOOHMetrics struct {
	LoopPlays         int                          `json:"loop_plays,omitempty"`          // Number of times ad played in rotation
	ScreensUsed       int                          `json:"screens_used,omitempty"`        // Number of unique screens displaying the ad
	ScreenTimeSeconds int                          `json:"screen_time_seconds,omitempty"` // Total display time in seconds
	SovAchieved       float64                      `json:"sov_achieved,omitempty"`        // Actual share of voice delivered (0.0 to 1.0)
	CalculationNotes  string                       `json:"calculation_notes,omitempty"`   // Per-row supplementary methodology notes for DOOH impression calculation (e.g.
	VenueBreakdown    []DeliveryDOOHVenueBreakdown `json:"venue_breakdown,omitempty"`     // Per-venue performance breakdown
}

DeliveryDOOHMetrics — DOOH-specific metrics (only included for DOOH campaigns)

type DeliveryDOOHVenueBreakdown

type DeliveryDOOHVenueBreakdown struct {
	VenueID     string `json:"venue_id"`               // Venue identifier
	VenueName   string `json:"venue_name,omitempty"`   // Human-readable venue name
	VenueType   string `json:"venue_type,omitempty"`   // Venue type (e.g., 'airport', 'transit', 'retail', 'billboard')
	Impressions int    `json:"impressions"`            // Impressions delivered at this venue
	LoopPlays   int    `json:"loop_plays,omitempty"`   // Loop plays at this venue
	ScreensUsed int    `json:"screens_used,omitempty"` // Number of screens used at this venue
}

type DeliveryData

type DeliveryData struct {
	ReportingPeriod    ReportingPeriod    `json:"reporting_period"`
	Currency           string             `json:"currency"`
	MediaBuyDeliveries []MediaBuyDelivery `json:"media_buy_deliveries"`
	Context            any                `json:"context,omitempty"`
}

type DeliveryEventTypeMetrics

type DeliveryEventTypeMetrics struct {
	EventType     EventType `json:"event_type"`                // The event type
	EventSourceID string    `json:"event_source_id,omitempty"` // Event source that produced these conversions (for disambiguation when multiple
	Count         float64   `json:"count"`                     // Number of events of this type
	Value         float64   `json:"value,omitempty"`           // Total monetary value of events of this type
}

type DeliveryForecast

type DeliveryForecast struct {
	Points            []ForecastPoint   `json:"points"`                        // Forecasted delivery data points. For spend curves (default), points at
	ForecastRangeUnit ForecastRangeUnit `json:"forecast_range_unit,omitempty"` // How to interpret the points array. 'spend' (default when omitted): points at
	Method            ForecastMethod    `json:"method"`                        // Method used to produce this forecast
	Currency          string            `json:"currency"`                      // ISO 4217 currency code for monetary values in this forecast (spend, budget)
	DemographicSystem DemographicSystem `json:"demographic_system,omitempty"`  // Measurement system for the demographic field. Ensures buyer and seller agree
	Demographic       string            `json:"demographic,omitempty"`         // Target demographic code within the specified demographic_system. For Nielsen
	MeasurementSource string            `json:"measurement_source,omitempty"`  // Third-party measurement provider whose data was used to produce this forecast.
	ReachUnit         ReachUnit         `json:"reach_unit,omitempty"`          // Unit of measurement for reach and audience_size metrics in this forecast.
	GeneratedAt       string            `json:"generated_at,omitempty"`        // When this forecast was computed
	ValidUntil        string            `json:"valid_until,omitempty"`         // When this forecast expires. After this time, the forecast should be refreshed.
	Ext               any               `json:"ext,omitempty"`
}

DeliveryForecast — Forecasted delivery metrics for a proposal or product allocation. Publishers attach points to help

type DeliveryMetricAggregate

type DeliveryMetricAggregate struct {
	Scope                 string           `json:"scope,omitempty"`                  // Vendor-defined metric, identified by the tuple `(vendor, metric_id)`.
	MetricID              string           `json:"metric_id,omitempty"`              // Identifier for the metric within the vendor's vocabulary.
	Qualifier             *MetricQualifier `json:"qualifier,omitempty"`              // Optional qualifier keys for vendor metrics that need disambiguation (rare
	Value                 float64          `json:"value,omitempty"`                  // Aggregated vendor-attested value. Unit semantics defined by the vendor — see
	MeasurableImpressions float64          `json:"measurable_impressions,omitempty"` // Coverage denominator — vendor measurement is rarely 100% of delivery (only
	ViewableImpressions   float64          `json:"viewable_impressions,omitempty"`   // Component for `viewable_rate` (numerator).
	Impressions           float64          `json:"impressions,omitempty"`            // Component for rate metrics whose denominator is total impressions (e.g.
	CompletedViews        float64          `json:"completed_views,omitempty"`        // Component for `completion_rate` (numerator).
	Spend                 float64          `json:"spend,omitempty"`                  // Component for cost-per metrics (denominator-ish; the cost half of the ratio).
	Conversions           float64          `json:"conversions,omitempty"`            // Component for `cost_per_acquisition` and ROAS-family metrics.
	ConversionValue       float64          `json:"conversion_value,omitempty"`       // Component for `roas` (numerator).
	Clicks                float64          `json:"clicks,omitempty"`                 // Component for `cost_per_click` and click-rate metrics.
	Vendor                *BrandReference  `json:"vendor,omitempty"`                 // Vendor that defines and computes this metric. The vendor's `brand.json`
}

DeliveryMetricAggregate — One cross-buy delivery aggregate partitioned by metric scope and qualifier. Row-symmetric with

type DeliveryQuartileData

type DeliveryQuartileData struct {
	Q1Views float64 `json:"q1_views,omitempty"` // 25% completion views
	Q2Views float64 `json:"q2_views,omitempty"` // 50% completion views
	Q3Views float64 `json:"q3_views,omitempty"` // 75% completion views
	Q4Views float64 `json:"q4_views,omitempty"` // 100% completion views
}

DeliveryQuartileData — Audio/video quartile completion data

type DeliveryReportingDimension

type DeliveryReportingDimension struct {
	Limit  int        `json:"limit,omitempty"`   // Maximum number of entries to return. When omitted, all entries are returned
	SortBy SortMetric `json:"sort_by,omitempty"` // Metric to sort breakdown rows by (descending). Falls back to 'spend' if the
}

DeliveryReportingDimension — Request device type breakdown.

type DeliveryReportingDimensions

type DeliveryReportingDimensions struct {
	Geo            *DeliveryReportingGeoDimension `json:"geo,omitempty"`             // Request geographic breakdown. Check
	DeviceType     *DeliveryReportingDimension    `json:"device_type,omitempty"`     // Request device type breakdown.
	DevicePlatform *DeliveryReportingDimension    `json:"device_platform,omitempty"` // Request device platform breakdown.
	Audience       *DeliveryReportingDimension    `json:"audience,omitempty"`        // Request audience segment breakdown.
	Placement      *DeliveryReportingDimension    `json:"placement,omitempty"`       // Request placement breakdown.
}

DeliveryReportingDimensions — Request dimensional breakdowns in delivery reporting. Each key enables a specific breakdown

type DeliveryReportingGeoDimension

type DeliveryReportingGeoDimension struct {
	GeoLevel GeoLevel   `json:"geo_level"`         // Geographic granularity level for the breakdown
	System   string     `json:"system,omitempty"`  // Optional classification system for metro or postal_area levels. Metro uses
	Country  string     `json:"country,omitempty"` // ISO 3166-1 alpha-2 country code. Required for native postal_area requests
	Limit    int        `json:"limit,omitempty"`   // Maximum number of geo entries to return. Defaults to 25. When truncated
	SortBy   SortMetric `json:"sort_by,omitempty"` // Metric to sort breakdown rows by (descending). Falls back to 'spend' if the
}

DeliveryReportingGeoDimension — Request geographic breakdown. Check reporting_capabilities.supports_geo_breakdown for available

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
	CompletedViews       float64                       `json:"completed_views,omitempty"`         // Video/audio completions. When the package has a completed_views optimization
	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
	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` (transactions) from first-time brand buyers, 0 =
	Leads                float64                       `json:"leads,omitempty"`                   // Leads generated (convenience alias for by_event_type where event_type='lead')
	IncrementalSalesLift float64                       `json:"incremental_sales_lift,omitempty"`  // Incremental sales lift attributed to the campaign — sales above the
	BrandLift            float64                       `json:"brand_lift,omitempty"`              // Brand lift — measured change in a brand metric (awareness, consideration
	FootTraffic          float64                       `json:"foot_traffic,omitempty"`            // Store visits attributed to ad exposure. Count of incremental visits over
	ConversionLift       float64                       `json:"conversion_lift,omitempty"`         // Incremental conversions attributed to the campaign — conversions above the
	BrandSearchLift      float64                       `json:"brand_search_lift,omitempty"`       // Lift in brand search query volume attributed to the campaign — measured via
	Plays                float64                       `json:"plays,omitempty"`                   // Number of times the ad creative was displayed on a DOOH screen or played in a
	ByEventType          []DeliveryEventTypeMetrics    `json:"by_event_type,omitempty"`           // Conversion metrics broken down by event type. Spend-derived metrics (ROAS
	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
	ReachUnit            *ReachUnit                    `json:"reach_unit,omitempty"`              // Unit of measurement for the reach field. Aligns with the reach_unit declared
	ReachWindow          *ReachWindow                  `json:"reach_window,omitempty"`            // Measurement window for the reported `reach` and `frequency` values in this
	Frequency            float64                       `json:"frequency,omitempty"`               // Average frequency per reach unit, measured over the window declared in
	QuartileData         *DeliveryQuartileData         `json:"quartile_data,omitempty"`           // Audio/video quartile completion data
	DoohMetrics          *DeliveryDOOHMetrics          `json:"dooh_metrics,omitempty"`            // DOOH-specific metrics (only included for DOOH campaigns)
	Viewability          *DeliveryViewability          `json:"viewability,omitempty"`             // Viewability metrics. Viewable rate should be calculated as
	Engagements          float64                       `json:"engagements,omitempty"`             // Total engagements — direct interactions with the ad beyond viewing. Includes
	Follows              float64                       `json:"follows,omitempty"`                 // New followers, page likes, artist/podcast/channel follows, or free
	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
	EngagementRate       float64                       `json:"engagement_rate,omitempty"`         // Platform-specific engagement rate (0.0 to 1.0). Typically
	CostPerClick         float64                       `json:"cost_per_click,omitempty"`          // Cost per click (spend / clicks)
	CostPerCompletedView float64                       `json:"cost_per_completed_view,omitempty"` // Cost per completed view (spend / completed_views). Primary CPCV pricing scalar
	CPM                  float64                       `json:"cpm,omitempty"`                     // Cost per thousand impressions, computed as (spend / impressions) × 1000.
	Downloads            float64                       `json:"downloads,omitempty"`               // Audio/podcast downloads (IAB Podcast Measurement Technical Guidelines 2.x
	UnitsSold            float64                       `json:"units_sold,omitempty"`              // Items sold attributed to this delivery. Retail-media scalar distinct from
	NewToBrandUnits      float64                       `json:"new_to_brand_units,omitempty"`      // Units sold to first-time brand buyers (count, not rate). Retail-media scalar —
	ByActionSource       []DeliveryActionSourceMetrics `json:"by_action_source,omitempty"`        // Conversion metrics broken down by action source (website, app, in_store
	VendorMetricValues   []VendorMetricValue           `json:"vendor_metric_values,omitempty"`    // Reported values for vendor-defined metrics that the product's
}

DeliveryTotals — Standard delivery metrics that can be reported at media buy, package, or creative level

func (DeliveryTotals) MarshalJSON

func (d DeliveryTotals) MarshalJSON() ([]byte, error)

MarshalJSON preserves the schema-required spend field even when it is zero.

type DeliveryType

type DeliveryType = string

DeliveryType — Type of inventory delivery

const (
	DeliveryTypeGuaranteed    DeliveryType = "guaranteed"
	DeliveryTypeNonGuaranteed DeliveryType = "non_guaranteed"
)

func KnownDeliveryTypeValues

func KnownDeliveryTypeValues() []DeliveryType

KnownDeliveryTypeValues returns the current schema-defined values for DeliveryType.

func ParseDeliveryType

func ParseDeliveryType(s string) (DeliveryType, error)

ParseDeliveryType returns s as DeliveryType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type DeliveryViewability

type DeliveryViewability struct {
	Vendor                *BrandReference     `json:"vendor,omitempty"`                 // Vendor that produced these viewability values. Optional but RECOMMENDED so the
	MeasurableImpressions float64             `json:"measurable_impressions,omitempty"` // Impressions where viewability could be measured. Excludes environments without
	ViewableImpressions   float64             `json:"viewable_impressions,omitempty"`   // Impressions that met the viewability threshold defined by the measurement
	ViewableRate          float64             `json:"viewable_rate,omitempty"`          // Viewable impression rate (viewable_impressions / measurable_impressions).
	ViewedSeconds         float64             `json:"viewed_seconds,omitempty"`         // Average in-view duration per measurable impression, in seconds. Reporting-side
	Standard              ViewabilityStandard `json:"standard,omitempty"`               // Viewability measurement standard applied to these metrics. Governs the in-view
}

DeliveryViewability — Viewability metrics. Viewable rate should be calculated as viewable_impressions /

type DeliveryWindow

type DeliveryWindow struct {
	WindowStart       string                  `json:"window_start"`                 // ISO 8601 start of the window slice (inclusive). UTC.
	WindowEnd         string                  `json:"window_end"`                   // ISO 8601 end of the window slice (exclusive). The next row's window_start
	Totals            *DeliveryTotals         `json:"totals"`                       // Aggregate metrics for this window slice across all packages. Shape-aligned
	ByPackage         []DeliveryWindowPackage `json:"by_package,omitempty"`         // Per-package metrics for this window slice. Same shape as the parent
	IsFinal           *bool                   `json:"is_final,omitempty"`           // Whether the slice data is final for this window. Same semantics as the
	MeasurementWindow string                  `json:"measurement_window,omitempty"` // Which measurement-window stage this slice represents (e.g., 'live', 'c3'
}

type DeliveryWindowPackage

type DeliveryWindowPackage 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
	CompletedViews       float64                       `json:"completed_views,omitempty"`         // Video/audio completions. When the package has a completed_views optimization
	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
	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` (transactions) from first-time brand buyers, 0 =
	Leads                float64                       `json:"leads,omitempty"`                   // Leads generated (convenience alias for by_event_type where event_type='lead')
	IncrementalSalesLift float64                       `json:"incremental_sales_lift,omitempty"`  // Incremental sales lift attributed to the campaign — sales above the
	BrandLift            float64                       `json:"brand_lift,omitempty"`              // Brand lift — measured change in a brand metric (awareness, consideration
	FootTraffic          float64                       `json:"foot_traffic,omitempty"`            // Store visits attributed to ad exposure. Count of incremental visits over
	ConversionLift       float64                       `json:"conversion_lift,omitempty"`         // Incremental conversions attributed to the campaign — conversions above the
	BrandSearchLift      float64                       `json:"brand_search_lift,omitempty"`       // Lift in brand search query volume attributed to the campaign — measured via
	Plays                float64                       `json:"plays,omitempty"`                   // Number of times the ad creative was displayed on a DOOH screen or played in a
	ByEventType          []DeliveryEventTypeMetrics    `json:"by_event_type,omitempty"`           // Conversion metrics broken down by event type. Spend-derived metrics (ROAS
	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
	ReachUnit            *ReachUnit                    `json:"reach_unit,omitempty"`              // Unit of measurement for the reach field. Aligns with the reach_unit declared
	ReachWindow          *ReachWindow                  `json:"reach_window,omitempty"`            // Measurement window for the reported `reach` and `frequency` values in this
	Frequency            float64                       `json:"frequency,omitempty"`               // Average frequency per reach unit, measured over the window declared in
	QuartileData         *DeliveryQuartileData         `json:"quartile_data,omitempty"`           // Audio/video quartile completion data
	DoohMetrics          *DeliveryDOOHMetrics          `json:"dooh_metrics,omitempty"`            // DOOH-specific metrics (only included for DOOH campaigns)
	Viewability          *DeliveryViewability          `json:"viewability,omitempty"`             // Viewability metrics. Viewable rate should be calculated as
	Engagements          float64                       `json:"engagements,omitempty"`             // Total engagements — direct interactions with the ad beyond viewing. Includes
	Follows              float64                       `json:"follows,omitempty"`                 // New followers, page likes, artist/podcast/channel follows, or free
	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
	EngagementRate       float64                       `json:"engagement_rate,omitempty"`         // Platform-specific engagement rate (0.0 to 1.0). Typically
	CostPerClick         float64                       `json:"cost_per_click,omitempty"`          // Cost per click (spend / clicks)
	CostPerCompletedView float64                       `json:"cost_per_completed_view,omitempty"` // Cost per completed view (spend / completed_views). Primary CPCV pricing scalar
	CPM                  float64                       `json:"cpm,omitempty"`                     // Cost per thousand impressions, computed as (spend / impressions) × 1000.
	Downloads            float64                       `json:"downloads,omitempty"`               // Audio/podcast downloads (IAB Podcast Measurement Technical Guidelines 2.x
	UnitsSold            float64                       `json:"units_sold,omitempty"`              // Items sold attributed to this delivery. Retail-media scalar distinct from
	NewToBrandUnits      float64                       `json:"new_to_brand_units,omitempty"`      // Units sold to first-time brand buyers (count, not rate). Retail-media scalar —
	ByActionSource       []DeliveryActionSourceMetrics `json:"by_action_source,omitempty"`        // Conversion metrics broken down by action source (website, app, in_store
	VendorMetricValues   []VendorMetricValue           `json:"vendor_metric_values,omitempty"`    // Reported values for vendor-defined metrics that the product's
	PackageID            string                        `json:"package_id"`                        // Seller's package identifier
}

type DemographicSystem

type DemographicSystem = string

DemographicSystem — Audience measurement systems for demographic notation in GRP forecasts and

const (
	DemographicSystemNielsen     DemographicSystem = "nielsen"
	DemographicSystemBarb        DemographicSystem = "barb"
	DemographicSystemAgf         DemographicSystem = "agf"
	DemographicSystemOztam       DemographicSystem = "oztam"
	DemographicSystemMediametrie DemographicSystem = "mediametrie"
	DemographicSystemCustom      DemographicSystem = "custom"
)

func KnownDemographicSystemValues

func KnownDemographicSystemValues() []DemographicSystem

KnownDemographicSystemValues returns the current schema-defined values for DemographicSystem.

func ParseDemographicSystem

func ParseDemographicSystem(s string) (DemographicSystem, error)

ParseDemographicSystem returns s as DemographicSystem when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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,omitempty"`
	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

const (
	DerivativeTypeClip      DerivativeType = "clip"
	DerivativeTypeHighlight DerivativeType = "highlight"
	DerivativeTypeRecap     DerivativeType = "recap"
	DerivativeTypeTrailer   DerivativeType = "trailer"
	DerivativeTypeBonus     DerivativeType = "bonus"
)

func KnownDerivativeTypeValues

func KnownDerivativeTypeValues() []DerivativeType

KnownDerivativeTypeValues returns the current schema-defined values for DerivativeType.

func ParseDerivativeType

func ParseDerivativeType(s string) (DerivativeType, error)

ParseDerivativeType returns s as DerivativeType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type Destination

type Destination struct {
	Type     string `json:"type,omitempty"`      // Discriminator indicating this is an agent URL-based deployment
	Platform string `json:"platform,omitempty"`  // Platform identifier for DSPs (e.g., 'the-trade-desk', 'amazon-dsp')
	Account  string `json:"account,omitempty"`   // Optional account identifier on the agent
	AgentURL string `json:"agent_url,omitempty"` // URL identifying the deployment agent (for sales agents, etc.)
}

Destination — A deployment target where signals can be activated (DSP, sales agent, etc.)

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

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"
)

func KnownDevicePlatformValues

func KnownDevicePlatformValues() []DevicePlatform

KnownDevicePlatformValues returns the current schema-defined values for DevicePlatform.

func ParseDevicePlatform

func ParseDevicePlatform(s string) (DevicePlatform, error)

ParseDevicePlatform returns s as DevicePlatform when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type DeviceType

type DeviceType = string

DeviceType — Device form factor categories for targeting and reporting. Complements

const (
	DeviceTypeDesktop DeviceType = "desktop"
	DeviceTypeMobile  DeviceType = "mobile"
	DeviceTypeTablet  DeviceType = "tablet"
	DeviceTypeCtv     DeviceType = "ctv"
	DeviceTypeDooh    DeviceType = "dooh"
	DeviceTypeUnknown DeviceType = "unknown"
)

func KnownDeviceTypeValues

func KnownDeviceTypeValues() []DeviceType

KnownDeviceTypeValues returns the current schema-defined values for DeviceType.

func ParseDeviceType

func ParseDeviceType(s string) (DeviceType, error)

ParseDeviceType returns s as DeviceType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type DiagnosticIssue

type DiagnosticIssue struct {
	Severity string `json:"severity"` // 'error': blocks optimization until resolved. 'warning': optimization works but
	Message  string `json:"message"`  // Human/agent-readable description of the issue and how to resolve it.
}

DiagnosticIssue — An actionable issue detected during a health or readiness assessment. Used by event source health

type DigitalSourceType

type DigitalSourceType = string

DigitalSourceType — Classification of AI involvement in content creation, aligned with IPTC

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"
)

func KnownDigitalSourceTypeValues

func KnownDigitalSourceTypeValues() []DigitalSourceType

KnownDigitalSourceTypeValues returns the current schema-defined values for DigitalSourceType.

func ParseDigitalSourceType

func ParseDigitalSourceType(s string) (DigitalSourceType, error)

ParseDigitalSourceType returns s as DigitalSourceType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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"
)

func KnownDimensionUnitValues

func KnownDimensionUnitValues() []DimensionUnit

KnownDimensionUnitValues returns the current schema-defined values for DimensionUnit.

func ParseDimensionUnit

func ParseDimensionUnit(s string) (DimensionUnit, error)

ParseDimensionUnit returns s as DimensionUnit when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type DisclosurePersistence

type DisclosurePersistence = string

DisclosurePersistence — How long a disclosure must persist during content playback or display.

const (
	DisclosurePersistenceContinuous DisclosurePersistence = "continuous"
	DisclosurePersistenceInitial    DisclosurePersistence = "initial"
	DisclosurePersistenceFlexible   DisclosurePersistence = "flexible"
)

func KnownDisclosurePersistenceValues

func KnownDisclosurePersistenceValues() []DisclosurePersistence

KnownDisclosurePersistenceValues returns the current schema-defined values for DisclosurePersistence.

func ParseDisclosurePersistence

func ParseDisclosurePersistence(s string) (DisclosurePersistence, error)

ParseDisclosurePersistence returns s as DisclosurePersistence when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type DisclosurePosition

type DisclosurePosition = string

DisclosurePosition — Where a required disclosure should appear within a creative. Used by creative

const (
	DisclosurePositionProminent DisclosurePosition = "prominent"
	DisclosurePositionFooter    DisclosurePosition = "footer"
	DisclosurePositionAudio     DisclosurePosition = "audio"
	DisclosurePositionSubtitle  DisclosurePosition = "subtitle"
	DisclosurePositionOverlay   DisclosurePosition = "overlay"
	DisclosurePositionEndCard   DisclosurePosition = "end_card"
	DisclosurePositionPreRoll   DisclosurePosition = "pre_roll"
	DisclosurePositionCompanion DisclosurePosition = "companion"
)

func KnownDisclosurePositionValues

func KnownDisclosurePositionValues() []DisclosurePosition

KnownDisclosurePositionValues returns the current schema-defined values for DisclosurePosition.

func ParseDisclosurePosition

func ParseDisclosurePosition(s string) (DisclosurePosition, error)

ParseDisclosurePosition returns s as DisclosurePosition when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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"
)

func KnownDistanceUnitValues

func KnownDistanceUnitValues() []DistanceUnit

KnownDistanceUnitValues returns the current schema-defined values for DistanceUnit.

func ParseDistanceUnit

func ParseDistanceUnit(s string) (DistanceUnit, error)

ParseDistanceUnit returns s as DistanceUnit when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type DistributionID

type DistributionID struct {
	Type  string `json:"type"`
	Value string `json:"value"`
}

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

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"
	DistributionIdentifierTypeYoutubeChannelHandle DistributionIdentifierType = "youtube_channel_handle"
	DistributionIdentifierTypeYoutubeChannelURL    DistributionIdentifierType = "youtube_channel_url"
	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"
)

func KnownDistributionIdentifierTypeValues

func KnownDistributionIdentifierTypeValues() []DistributionIdentifierType

KnownDistributionIdentifierTypeValues returns the current schema-defined values for DistributionIdentifierType.

func ParseDistributionIdentifierType

func ParseDistributionIdentifierType(s string) (DistributionIdentifierType, error)

ParseDistributionIdentifierType returns s as DistributionIdentifierType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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 EmbeddedProvenanceMethod

type EmbeddedProvenanceMethod = string

EmbeddedProvenanceMethod — How provenance data is carried within the content stream. Distinguishes

const (
	EmbeddedProvenanceMethodManifestWrapper   EmbeddedProvenanceMethod = "manifest_wrapper"
	EmbeddedProvenanceMethodProvenanceMarkers EmbeddedProvenanceMethod = "provenance_markers"
)

func KnownEmbeddedProvenanceMethodValues

func KnownEmbeddedProvenanceMethodValues() []EmbeddedProvenanceMethod

KnownEmbeddedProvenanceMethodValues returns the current schema-defined values for EmbeddedProvenanceMethod.

func ParseEmbeddedProvenanceMethod

func ParseEmbeddedProvenanceMethod(s string) (EmbeddedProvenanceMethod, error)

ParseEmbeddedProvenanceMethod returns s as EmbeddedProvenanceMethod when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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

const (
	ErrorCodeINVALIDREQUEST                     ErrorCode = "INVALID_REQUEST"
	ErrorCodeAUTHREQUIRED                       ErrorCode = "AUTH_REQUIRED"
	ErrorCodeAUTHMISSING                        ErrorCode = "AUTH_MISSING"
	ErrorCodeAUTHINVALID                        ErrorCode = "AUTH_INVALID"
	ErrorCodeAUTHORIZATIONREQUIRED              ErrorCode = "AUTHORIZATION_REQUIRED"
	ErrorCodeRATELIMITED                        ErrorCode = "RATE_LIMITED"
	ErrorCodeSERVICEUNAVAILABLE                 ErrorCode = "SERVICE_UNAVAILABLE"
	ErrorCodeCONFIGURATIONERROR                 ErrorCode = "CONFIGURATION_ERROR"
	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"
	ErrorCodeCREATIVEVALUENOTALLOWED            ErrorCode = "CREATIVE_VALUE_NOT_ALLOWED"
	ErrorCodeUNSUPPORTEDFEATURE                 ErrorCode = "UNSUPPORTED_FEATURE"
	ErrorCodeUNPRICEABLEOUTPUT                  ErrorCode = "UNPRICEABLE_OUTPUT"
	ErrorCodeUNSUPPORTEDGRANULARITY             ErrorCode = "UNSUPPORTED_GRANULARITY"
	ErrorCodeUNSUPPORTEDPROVISIONING            ErrorCode = "UNSUPPORTED_PROVISIONING"
	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"
	ErrorCodeBUDGETCAPREACHED                   ErrorCode = "BUDGET_CAP_REACHED"
	ErrorCodeCONFLICT                           ErrorCode = "CONFLICT"
	ErrorCodeIDEMPOTENCYCONFLICT                ErrorCode = "IDEMPOTENCY_CONFLICT"
	ErrorCodeIDEMPOTENCYEXPIRED                 ErrorCode = "IDEMPOTENCY_EXPIRED"
	ErrorCodeIDEMPOTENCYINFLIGHT                ErrorCode = "IDEMPOTENCY_IN_FLIGHT"
	ErrorCodeCREATIVEDEADLINEEXCEEDED           ErrorCode = "CREATIVE_DEADLINE_EXCEEDED"
	ErrorCodeCREATIVEINACCESSIBLE               ErrorCode = "CREATIVE_INACCESSIBLE"
	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"
	ErrorCodeSIGNALTARGETINGINCOMPATIBLE        ErrorCode = "SIGNAL_TARGETING_INCOMPATIBLE"
	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"
	ErrorCodePROPOSALNOTFOUND                   ErrorCode = "PROPOSAL_NOT_FOUND"
	ErrorCodeMULTIFINALIZEUNSUPPORTED           ErrorCode = "MULTI_FINALIZE_UNSUPPORTED"
	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"
	ErrorCodeSCOPEINSUFFICIENT                  ErrorCode = "SCOPE_INSUFFICIENT"
	ErrorCodeREADONLYSCOPE                      ErrorCode = "READ_ONLY_SCOPE"
	ErrorCodeFIELDNOTPERMITTED                  ErrorCode = "FIELD_NOT_PERMITTED"
	ErrorCodePROVENANCEREQUIRED                 ErrorCode = "PROVENANCE_REQUIRED"
	ErrorCodePROVENANCEDIGITALSOURCETYPEMISSING ErrorCode = "PROVENANCE_DIGITAL_SOURCE_TYPE_MISSING"
	ErrorCodePROVENANCEDISCLOSUREMISSING        ErrorCode = "PROVENANCE_DISCLOSURE_MISSING"
	ErrorCodePROVENANCEEMBEDDEDMISSING          ErrorCode = "PROVENANCE_EMBEDDED_MISSING"
	ErrorCodePROVENANCEVERIFIERNOTACCEPTED      ErrorCode = "PROVENANCE_VERIFIER_NOT_ACCEPTED"
	ErrorCodePROVENANCECLAIMCONTRADICTED        ErrorCode = "PROVENANCE_CLAIM_CONTRADICTED"
	ErrorCodeEVALUATORAGENTNOTACCEPTED          ErrorCode = "EVALUATOR_AGENT_NOT_ACCEPTED"
	ErrorCodeBILLINGNOTSUPPORTED                ErrorCode = "BILLING_NOT_SUPPORTED"
	ErrorCodeBILLINGNOTPERMITTEDFORAGENT        ErrorCode = "BILLING_NOT_PERMITTED_FOR_AGENT"
	ErrorCodeBILLINGOUTOFBAND                   ErrorCode = "BILLING_OUT_OF_BAND"
	ErrorCodePAYMENTTERMSNOTSUPPORTED           ErrorCode = "PAYMENT_TERMS_NOT_SUPPORTED"
	ErrorCodeBRANDREQUIRED                      ErrorCode = "BRAND_REQUIRED"
	ErrorCodeAGENTSUSPENDED                     ErrorCode = "AGENT_SUSPENDED"
	ErrorCodeAGENTBLOCKED                       ErrorCode = "AGENT_BLOCKED"
	ErrorCodeCREDENTIALINARGS                   ErrorCode = "CREDENTIAL_IN_ARGS"
	ErrorCodeACTIONNOTALLOWED                   ErrorCode = "ACTION_NOT_ALLOWED"
	ErrorCodePRIVATEFIELDINPUBLICPLACEMENT      ErrorCode = "PRIVATE_FIELD_IN_PUBLIC_PLACEMENT"
	ErrorCodeFORMATPROJECTIONFAILED             ErrorCode = "FORMAT_PROJECTION_FAILED"
	ErrorCodeFORMATDECLARATIONDIVERGENT         ErrorCode = "FORMAT_DECLARATION_DIVERGENT"
	ErrorCodeFORMATDECLARATIONV1AMBIGUOUS       ErrorCode = "FORMAT_DECLARATION_V1_AMBIGUOUS"
	ErrorCodeFORMATOPTIONUNRESOLVED             ErrorCode = "FORMAT_OPTION_UNRESOLVED"
	ErrorCodeFORMATDECLARATIONV1LOSSYMULTISIZE  ErrorCode = "FORMAT_DECLARATION_V1_LOSSY_MULTI_SIZE"
	ErrorCodeFORMATNOTSUPPORTED                 ErrorCode = "FORMAT_NOT_SUPPORTED"
	ErrorCodePIXELTRACKERLOSSYDOWNGRADE         ErrorCode = "PIXEL_TRACKER_LOSSY_DOWNGRADE"
	ErrorCodePIXELTRACKERUPGRADEINFERRED        ErrorCode = "PIXEL_TRACKER_UPGRADE_INFERRED"
	ErrorCodeSTALERESPONSE                      ErrorCode = "STALE_RESPONSE"
	ErrorCodeFEEDFETCHFAILED                    ErrorCode = "FEED_FETCH_FAILED"
	ErrorCodeINVALIDFEEDFORMAT                  ErrorCode = "INVALID_FEED_FORMAT"
	ErrorCodeITEMVALIDATIONFAILED               ErrorCode = "ITEM_VALIDATION_FAILED"
	ErrorCodeCATALOGLIMITEXCEEDED               ErrorCode = "CATALOG_LIMIT_EXCEEDED"
)

func KnownErrorCodeValues

func KnownErrorCodeValues() []ErrorCode

KnownErrorCodeValues returns the current schema-defined values for ErrorCode.

func ParseErrorCode

func ParseErrorCode(s string) (ErrorCode, error)

ParseErrorCode returns s as ErrorCode when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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 ErrorScope

type ErrorScope = string

ErrorScope — Shared discriminator vocabulary for `error.details.scope` across

const (
	ErrorScopeCapability ErrorScope = "capability"
	ErrorScopeAccount    ErrorScope = "account"
	ErrorScopeAgent      ErrorScope = "agent"
)

func KnownErrorScopeValues

func KnownErrorScopeValues() []ErrorScope

KnownErrorScopeValues returns the current schema-defined values for ErrorScope.

func ParseErrorScope

func ParseErrorScope(s string) (ErrorScope, error)

ParseErrorScope returns s as ErrorScope when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type EscalationSeverity

type EscalationSeverity = string

EscalationSeverity — The severity level of a governance escalation.

const (
	EscalationSeverityInfo     EscalationSeverity = "info"
	EscalationSeverityWarning  EscalationSeverity = "warning"
	EscalationSeverityCritical EscalationSeverity = "critical"
)

func KnownEscalationSeverityValues

func KnownEscalationSeverityValues() []EscalationSeverity

KnownEscalationSeverityValues returns the current schema-defined values for EscalationSeverity.

func ParseEscalationSeverity

func ParseEscalationSeverity(s string) (EscalationSeverity, error)

ParseEscalationSeverity returns s as EscalationSeverity when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type Event

type Event struct {
	EventID         string           `json:"event_id"`                    // Unique identifier for deduplication (scoped to event_type + event_source_id)
	EventType       EventType        `json:"event_type"`                  // Standard event type
	EventTime       string           `json:"event_time"`                  // ISO 8601 timestamp when the event occurred
	UserMatch       *UserMatch       `json:"user_match,omitempty"`        // User identifiers for attribution matching
	CustomData      *EventCustomData `json:"custom_data,omitempty"`       // Event-specific data (value, currency, items, etc.)
	ActionSource    ActionSource     `json:"action_source,omitempty"`     // Where the event originated
	Surface         *EventSurface    `json:"surface,omitempty"`           // Optional structured surface context for the event, such as an owned channel
	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 EventContentItem

type EventContentItem struct {
	ID       string  `json:"id"`                 // Product or content identifier
	Quantity int     `json:"quantity,omitempty"` // Quantity of this item
	Price    float64 `json:"price,omitempty"`    // Price per unit of this item
	Brand    string  `json:"brand,omitempty"`    // Brand name of this item
}

type EventCustomData

type EventCustomData struct {
	Value           float64            `json:"value,omitempty"`            // Monetary value of the event (should be accompanied by currency)
	Currency        string             `json:"currency,omitempty"`         // ISO 4217 currency code
	OrderID         string             `json:"order_id,omitempty"`         // Unique order or transaction identifier
	ContentIDs      []string           `json:"content_ids,omitempty"`      // Item identifiers for catalog attribution. Values are matched against catalog
	ContentType     string             `json:"content_type,omitempty"`     // Category of content associated with the event (e.g., 'product', 'job'
	ContentName     string             `json:"content_name,omitempty"`     // Name of the product or content
	ContentCategory string             `json:"content_category,omitempty"` // Category of the product or content
	NumItems        int                `json:"num_items,omitempty"`        // Number of items in the event
	SearchString    string             `json:"search_string,omitempty"`    // Search query for search events
	ProgressPercent float64            `json:"progress_percent,omitempty"` // Content progress percentage reached, primarily for `watch_milestone` events.
	ProgressSeconds float64            `json:"progress_seconds,omitempty"` // Content progress duration reached in seconds, primarily for `watch_milestone`
	Contents        []EventContentItem `json:"contents,omitempty"`         // Per-item details for e-commerce events
	Ext             any                `json:"ext,omitempty"`
}

EventCustomData — Event-specific data for attribution and reporting

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 EventSurface

type EventSurface struct {
	Category     string `json:"category"`                // Generic surface category. `owned_property` covers durable creator or
	PropertyType string `json:"property_type,omitempty"` // Open vocabulary describing the kind of property, for example `channel`
	Namespace    string `json:"namespace,omitempty"`     // Platform, publisher, or system namespace for the property, such as
	PropertyID   string `json:"property_id,omitempty"`   // Optional identifier for the property within `namespace`.
	Ext          any    `json:"ext,omitempty"`
}

EventSurface — Structured context for the surface where an event source or logged event originated. Use this when

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"
	EventTypeShare                EventType = "share"
	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"
	EventTypeFollow               EventType = "follow"
	EventTypeContentView          EventType = "content_view"
	EventTypeWatchMilestone       EventType = "watch_milestone"
	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"
)

func KnownEventTypeValues

func KnownEventTypeValues() []EventType

KnownEventTypeValues returns the current schema-defined values for EventType.

func ParseEventType

func ParseEventType(s string) (EventType, error)

ParseEventType returns s as EventType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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"
)

func KnownExclusivityValues

func KnownExclusivityValues() []Exclusivity

KnownExclusivityValues returns the current schema-defined values for Exclusivity.

func ParseExclusivity

func ParseExclusivity(s string) (Exclusivity, error)

ParseExclusivity returns s as Exclusivity when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type FeatureCheckStatus

type FeatureCheckStatus = string

FeatureCheckStatus — Per-feature evaluation outcome in content standards checks. For the

const (
	FeatureCheckStatusPassed      FeatureCheckStatus = "passed"
	FeatureCheckStatusFailed      FeatureCheckStatus = "failed"
	FeatureCheckStatusWarning     FeatureCheckStatus = "warning"
	FeatureCheckStatusUnevaluated FeatureCheckStatus = "unevaluated"
)

func KnownFeatureCheckStatusValues

func KnownFeatureCheckStatusValues() []FeatureCheckStatus

KnownFeatureCheckStatusValues returns the current schema-defined values for FeatureCheckStatus.

func ParseFeatureCheckStatus

func ParseFeatureCheckStatus(s string) (FeatureCheckStatus, error)

ParseFeatureCheckStatus returns s as FeatureCheckStatus when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type FeatureRange

type FeatureRange struct {
	Min float64 `json:"min"`
	Max float64 `json:"max"`
}

type FeedFormat

type FeedFormat = string

FeedFormat — Catalog feed formats. Determines how the platform (seller) parses items from

const (
	FeedFormatGoogleMerchantCenter FeedFormat = "google_merchant_center"
	FeedFormatFacebookCatalog      FeedFormat = "facebook_catalog"
	FeedFormatShopify              FeedFormat = "shopify"
	FeedFormatLinkedinJobs         FeedFormat = "linkedin_jobs"
	FeedFormatTiktokShop           FeedFormat = "tiktok_shop"
	FeedFormatPinterestCatalog     FeedFormat = "pinterest_catalog"
	FeedFormatOpenaiProductFeed    FeedFormat = "openai_product_feed"
	FeedFormatCustom               FeedFormat = "custom"
)

func KnownFeedFormatValues

func KnownFeedFormatValues() []FeedFormat

KnownFeedFormatValues returns the current schema-defined values for FeedFormat.

func ParseFeedFormat

func ParseFeedFormat(s string) (FeedFormat, error)

ParseFeedFormat returns s as FeedFormat when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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"
)

func KnownFeedbackSourceValues

func KnownFeedbackSourceValues() []FeedbackSource

KnownFeedbackSourceValues returns the current schema-defined values for FeedbackSource.

func ParseFeedbackSource

func ParseFeedbackSource(s string) (FeedbackSource, error)

ParseFeedbackSource returns s as FeedbackSource when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type FilterExclusionDiagnostic

type FilterExclusionDiagnostic struct {
	Count  int    `json:"count"`            // Number of products excluded by this filter, interpreted per the parent
	Values []any  `json:"values,omitempty"` // Optional list of the specific filter values that contributed to exclusions
	Notes  string `json:"notes,omitempty"`  // Optional human-readable note about why this filter narrowed the set (e.g., 'no
}

type ForcedDirective

type ForcedDirective struct {
	Arm    string `json:"arm"`               // Arm the seller will emit on the next forced operation response.
	TaskID string `json:"task_id,omitempty"` // Echo of the registered task_id. Present only when arm is 'submitted' (the arm
}

ForcedDirective — Echo of the registered directive. The next matching operation call from this sandbox account will

type ForcedDirectiveSuccess

type ForcedDirectiveSuccess struct {
	Success bool            `json:"success"`
	Forced  ForcedDirective `json:"forced"`            // Echo of the registered directive. The next matching operation call from this
	Message string          `json:"message,omitempty"` // Human-readable acknowledgement.
	Context any             `json:"context,omitempty"`
	Ext     any             `json:"ext,omitempty"`
}

ForcedDirectiveSuccess — A forced response-arm directive was registered. The directive shapes the next matching operation

type ForecastMethod

type ForecastMethod = string

ForecastMethod — Method used to produce a delivery forecast

const (
	ForecastMethodEstimate   ForecastMethod = "estimate"
	ForecastMethodModeled    ForecastMethod = "modeled"
	ForecastMethodGuaranteed ForecastMethod = "guaranteed"
)

func KnownForecastMethodValues

func KnownForecastMethodValues() []ForecastMethod

KnownForecastMethodValues returns the current schema-defined values for ForecastMethod.

func ParseForecastMethod

func ParseForecastMethod(s string) (ForecastMethod, error)

ParseForecastMethod returns s as ForecastMethod when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type ForecastPoint

type ForecastPoint struct {
	Label              string                      `json:"label,omitempty"`                // Human-readable name for this forecast point. Required when forecast_range_unit
	Budget             *float64                    `json:"budget,omitempty"`               // Budget amount for this forecast point. Required for spend curves; omit for
	ProductID          string                      `json:"product_id,omitempty"`           // Optional product context for this forecast row. Usually omitted on
	Dimensions         []ForecastPointDimension    `json:"dimensions,omitempty"`           // Dimension constraints represented by this forecast point, such as country
	Metrics            map[string]ForecastRange    `json:"metrics"`                        // Forecasted metric values. Keys are forecastable-metric enum values for
	Viewability        *ForecastViewability        `json:"viewability,omitempty"`          // Forecasted viewability metrics. Mirrors delivery-metrics.viewability, but
	VendorMetricValues []ForecastVendorMetricValue `json:"vendor_metric_values,omitempty"` // Forecasted values for vendor-defined metrics that the product's
}

ForecastPoint — A forecast data point. When budget is present, the point pairs a spend level with expected

type ForecastPointDimension

type ForecastPointDimension struct {
	Kind            string         `json:"kind,omitempty"`              // Dimension family discriminator.
	GeoLevel        GeoLevel       `json:"geo_level,omitempty"`         // Geographic level for this forecast point.
	System          string         `json:"system,omitempty"`            // Classification system for metro or postal_area levels. Required when geo_level
	Country         string         `json:"country,omitempty"`           // ISO 3166-1 alpha-2 country code. Required for native postal_area rows and
	GeoCode         string         `json:"geo_code,omitempty"`          // Geographic code within the level and system. Country: ISO 3166-1 alpha-2
	GeoName         string         `json:"geo_name,omitempty"`          // Human-readable geographic name (e.g., 'United States', 'California', 'New York
	PlacementRef    *PlacementRef  `json:"placement_ref,omitempty"`     // Structured placement reference for this forecast row. References an entry from
	PlacementName   string         `json:"placement_name,omitempty"`    // Human-readable placement name, useful when the buyer has not resolved the
	DeviceType      DeviceType     `json:"device_type,omitempty"`       // Device form factor for this forecast row.
	DevicePlatform  DevicePlatform `json:"device_platform,omitempty"`   // Operating system or platform for this forecast row.
	AudienceID      string         `json:"audience_id,omitempty"`       // Audience segment identifier for this forecast row.
	AudienceSource  AudienceSource `json:"audience_source,omitempty"`   // Origin of the audience segment.
	AudienceName    string         `json:"audience_name,omitempty"`     // Human-readable audience segment name.
	SignalRef       *SignalRef     `json:"signal_ref,omitempty"`        // Canonical signal reference for this forecast row. Required when the row needs
	SignalID        string         `json:"signal_id,omitempty"`         // Signal identifier shorthand for this forecast row. Use only when the enclosing
	SignalValue     any            `json:"signal_value,omitempty"`      // Signal value bucket represented by this point. Use null with presence 'absent'
	Presence        string         `json:"presence,omitempty"`          // Whether the signal is present for this point. Use 'absent' for the explicit
	SignalName      string         `json:"signal_name,omitempty"`       // Human-readable signal name, useful when the buyer has not resolved the signal
	SignalValueName string         `json:"signal_value_name,omitempty"` // Human-readable label for the signal value bucket.
}

type ForecastRange

type ForecastRange struct {
	Low  float64 `json:"low,omitempty"`  // Conservative (low-end) forecast value
	Mid  float64 `json:"mid,omitempty"`  // Expected (most likely) forecast value
	High float64 `json:"high,omitempty"` // Optimistic (high-end) forecast value
}

ForecastRange — A forecast value with optional confidence bounds. Either mid (point estimate) or both low and high

type ForecastRangeUnit

type ForecastRangeUnit = string

ForecastRangeUnit — Describes how to interpret the points array in a DeliveryForecast — what axis

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"
)

func KnownForecastRangeUnitValues

func KnownForecastRangeUnitValues() []ForecastRangeUnit

KnownForecastRangeUnitValues returns the current schema-defined values for ForecastRangeUnit.

func ParseForecastRangeUnit

func ParseForecastRangeUnit(s string) (ForecastRangeUnit, error)

ParseForecastRangeUnit returns s as ForecastRangeUnit when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type ForecastVendorMetricValue

type ForecastVendorMetricValue struct {
	Vendor                BrandReference `json:"vendor"`                           // Vendor that defines and forecasts this metric. Matches a
	MetricID              string         `json:"metric_id"`                        // Identifier for the metric within the vendor's vocabulary. Matches a
	Value                 ForecastRange  `json:"value"`                            // Forecasted vendor metric value. Unit semantics are vendor-defined; see unit
	Unit                  string         `json:"unit,omitempty"`                   // Unit of the value. Free-form to accommodate heterogeneous vendor metrics
	MeasurableImpressions *ForecastRange `json:"measurable_impressions,omitempty"` // Forecasted number of impressions the vendor expects to be able to measure.
	Breakdown             map[string]any `json:"breakdown,omitempty"`              // Optional structured payload for vendor metrics that do not fit a single
}

ForecastVendorMetricValue — A forecasted value for a vendor-defined metric, emitted on ForecastPoint.vendor_metric_values

type ForecastViewability

type ForecastViewability struct {
	Vendor                *BrandReference     `json:"vendor,omitempty"`                 // Vendor expected to produce or verify these viewability values.
	MeasurableImpressions *ForecastRange      `json:"measurable_impressions,omitempty"` // Forecasted impressions where viewability can be measured. Coverage denominator
	ViewableImpressions   *ForecastRange      `json:"viewable_impressions,omitempty"`   // Forecasted impressions expected to meet the viewability threshold defined by
	ViewableRate          *ForecastRange      `json:"viewable_rate,omitempty"`          // Forecasted viewable impression rate (viewable_impressions /
	ViewedSeconds         *ForecastRange      `json:"viewed_seconds,omitempty"`         // Forecasted average in-view duration per measurable impression, in seconds.
	Standard              ViewabilityStandard `json:"standard,omitempty"`               // Viewability measurement standard applied to these forecasted values.
}

ForecastViewability — Forecasted viewability metrics. Mirrors delivery-metrics.viewability, but numeric values are

type ForecastableMetric

type ForecastableMetric = string

ForecastableMetric — Standard delivery, engagement, and availability metric names for forecasts.

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"
	ForecastableMetricCoverageRate        ForecastableMetric = "coverage_rate"
)

func KnownForecastableMetricValues

func KnownForecastableMetricValues() []ForecastableMetric

KnownForecastableMetricValues returns the current schema-defined values for ForecastableMetric.

func ParseForecastableMetric

func ParseForecastableMetric(s string) (ForecastableMetric, error)

ParseForecastableMetric returns s as ForecastableMetric when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type FormatIDParameter

type FormatIDParameter = string

FormatIDParameter — Types of parameters that template formats accept in format_id objects to

const (
	FormatIDParameterDimensions FormatIDParameter = "dimensions"
	FormatIDParameterDuration   FormatIDParameter = "duration"
)

func KnownFormatIDParameterValues

func KnownFormatIDParameterValues() []FormatIDParameter

KnownFormatIDParameterValues returns the current schema-defined values for FormatIDParameter.

func ParseFormatIDParameter

func ParseFormatIDParameter(s string) (FormatIDParameter, error)

ParseFormatIDParameter returns s as FormatIDParameter when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type FormatOptionRef

type FormatOptionRef struct {
	Scope          string `json:"scope,omitempty"`            // Reference resolves only against the target product's inline `format_options[]`.
	FormatOptionID string `json:"format_option_id,omitempty"` // Stable format option ID from the target product's inline `format_options[]`.
}

FormatOptionRef — Discriminated reference to a product format option. The global canonical shape is still named by

type FormatRef

type FormatRef struct {
	AgentURL   string  `json:"agent_url"`             // URL of the agent that defines this format (e.g.
	ID         string  `json:"id"`                    // Format identifier within the agent's namespace (e.g., 'display_static'
	Width      int     `json:"width,omitempty"`       // Width in pixels for visual formats. When specified, height must also be
	Height     int     `json:"height,omitempty"`      // Height in pixels for visual formats. When specified, width must also be
	DurationMs float64 `json:"duration_ms,omitempty"` // Duration in milliseconds for time-based formats (video, audio). When
}

FormatRef — A JSON object — never a plain string — that identifies a creative format by its declaring agent

type FrameRateType

type FrameRateType = string

FrameRateType — Whether the video uses a constant or variable frame rate. Broadcast and SSAI

const (
	FrameRateTypeConstant FrameRateType = "constant"
	FrameRateTypeVariable FrameRateType = "variable"
)

func KnownFrameRateTypeValues

func KnownFrameRateTypeValues() []FrameRateType

KnownFrameRateTypeValues returns the current schema-defined values for FrameRateType.

func ParseFrameRateType

func ParseFrameRateType(s string) (FrameRateType, error)

ParseFrameRateType returns s as FrameRateType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type FrequencyCap

type FrequencyCap struct {
	Suppress        *Duration  `json:"suppress,omitempty"`         // Cooldown period between consecutive exposures to the same entity. Prevents
	SuppressMinutes float64    `json:"suppress_minutes,omitempty"` // Deprecated — use suppress instead. Cooldown period in minutes between
	MaxImpressions  int        `json:"max_impressions,omitempty"`  // Maximum number of impressions per entity per window. For duration windows
	Per             *ReachUnit `json:"per,omitempty"`              // Entity granularity for impression counting. Required when max_impressions is
	Window          *Duration  `json:"window,omitempty"`           // Time window for the max_impressions cap (e.g. {"interval": 7, "unit": "days"}
}

FrequencyCap — Frequency capping settings for package-level application. Two types of frequency control can be

type FrequencyCapScope

type FrequencyCapScope = string

FrequencyCapScope — Scope for frequency cap application

const (
	FrequencyCapScopePackage FrequencyCapScope = "package"
)

func KnownFrequencyCapScopeValues

func KnownFrequencyCapScopeValues() []FrequencyCapScope

KnownFrequencyCapScopeValues returns the current schema-defined values for FrequencyCapScope.

func ParseFrequencyCapScope

func ParseFrequencyCapScope(s string) (FrequencyCapScope, error)

ParseFrequencyCapScope returns s as FrequencyCapScope when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type FrequencyCappingCaps

type FrequencyCappingCaps struct {
	SupportedPerUnits    []string `json:"supported_per_units,omitempty"`
	SupportedWindowUnits []string `json:"supported_window_units,omitempty"`
}

type GenreTaxonomy

type GenreTaxonomy = string

GenreTaxonomy — Taxonomy systems for genre classification. When declared, genre values should

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"
)

func KnownGenreTaxonomyValues

func KnownGenreTaxonomyValues() []GenreTaxonomy

KnownGenreTaxonomyValues returns the current schema-defined values for GenreTaxonomy.

func ParseGenreTaxonomy

func ParseGenreTaxonomy(s string) (GenreTaxonomy, error)

ParseGenreTaxonomy returns s as GenreTaxonomy when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type GeoBreakdownSupport

type GeoBreakdownSupport struct {
	Country    *bool           `json:"country,omitempty"`     // Supports country-level geo breakdown (ISO 3166-1 alpha-2)
	Region     *bool           `json:"region,omitempty"`      // Supports region/state-level geo breakdown (ISO 3166-2)
	Metro      map[string]bool `json:"metro,omitempty"`       // Metro area breakdown support. Keys are metro-system enum values; true means
	PostalArea any             `json:"postal_area,omitempty"` // Postal area breakdown support. Prefer the native country-keyed map where each
}

GeoBreakdownSupport — Declares which geographic levels and classification systems are available for by_geo reporting

type GeoLevel

type GeoLevel = string

GeoLevel — Geographic targeting granularity levels. Some levels (metro, postal_area)

const (
	GeoLevelCountry    GeoLevel = "country"
	GeoLevelRegion     GeoLevel = "region"
	GeoLevelMetro      GeoLevel = "metro"
	GeoLevelPostalArea GeoLevel = "postal_area"
)

func KnownGeoLevelValues

func KnownGeoLevelValues() []GeoLevel

KnownGeoLevelValues returns the current schema-defined values for GeoLevel.

func ParseGeoLevel

func ParseGeoLevel(s string) (GeoLevel, error)

ParseGeoLevel returns s as GeoLevel when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type GeoMetroTarget

type GeoMetroTarget struct {
	System MetroSystem `json:"system"` // Metro area classification system (e.g., 'nielsen_dma', 'uk_itl2')
	Values []string    `json:"values"` // Metro codes within the system (e.g., ['501', '602'] for Nielsen DMAs)
}

type GeoMetrosCaps

type GeoMetrosCaps struct {
	NielsenDMA    *bool `json:"nielsen_dma,omitempty"`
	UKITL1        *bool `json:"uk_itl1,omitempty"`
	UKITL2        *bool `json:"uk_itl2,omitempty"`
	EurostatNUTS2 *bool `json:"eurostat_nuts2,omitempty"`
}

type GeoPostalAreaTarget

type GeoPostalAreaTarget struct {
	Country string             `json:"country,omitempty"` // ISO 3166-1 alpha-2 country code for the postal values.
	System  LegacyPostalSystem `json:"system,omitempty"`  // Deprecated country-fused postal code system (e.g., 'us_zip', 'gb_outward').
	Values  []string           `json:"values,omitempty"`  // Postal codes within the legacy system.
}

type GeoPostalAreasCaps

type GeoPostalAreasCaps struct {
	// Native support keyed by ISO 3166-1 alpha-2 country, each listing the
	// country-local postal systems the seller honors.
	US []string `json:"US,omitempty"`
	GB []string `json:"GB,omitempty"`
	CA []string `json:"CA,omitempty"`
	DE []string `json:"DE,omitempty"`
	CH []string `json:"CH,omitempty"`
	AT []string `json:"AT,omitempty"`
	FR []string `json:"FR,omitempty"`
	AU []string `json:"AU,omitempty"`
	BR []string `json:"BR,omitempty"`
	IN []string `json:"IN,omitempty"`
	ZA []string `json:"ZA,omitempty"`
	// Deprecated country-fused boolean aliases retained for migration.
	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 GeoProximityCaps struct {
	Radius         *bool    `json:"radius,omitempty"`
	TravelTime     *bool    `json:"travel_time,omitempty"`
	Geometry       *bool    `json:"geometry,omitempty"`
	TransportModes []string `json:"transport_modes,omitempty"`
}

type GeoProximityGeometry

type GeoProximityGeometry struct {
	Type        string `json:"type"`        // GeoJSON geometry type.
	Coordinates []any  `json:"coordinates"` // GeoJSON coordinates array. For Polygon: array of linear rings. For
}

GeoProximityGeometry — Pre-computed GeoJSON geometry defining the proximity boundary. Use when the buyer has already

type GeoProximityRadius

type GeoProximityRadius struct {
	Value float64      `json:"value"` // Radius distance.
	Unit  DistanceUnit `json:"unit"`  // Distance unit.
}

GeoProximityRadius — Simple radius from the point. The platform draws a circle of this distance around the coordinates.

type GeoProximityTarget

type GeoProximityTarget struct {
	Lat           *float64                `json:"lat,omitempty"`            // Latitude in decimal degrees (WGS 84). Required for travel_time and radius
	Lng           *float64                `json:"lng,omitempty"`            // Longitude in decimal degrees (WGS 84). Required for travel_time and radius
	Label         string                  `json:"label,omitempty"`          // Human-readable label for this entry (e.g., 'Düsseldorf', 'Heathrow Airport'
	TravelTime    *GeoProximityTravelTime `json:"travel_time,omitempty"`    // Travel time limit for isochrone calculation. The platform resolves this to a
	TransportMode TransportMode           `json:"transport_mode,omitempty"` // Transportation mode for isochrone calculation. Required when travel_time is
	Radius        *GeoProximityRadius     `json:"radius,omitempty"`         // Simple radius from the point. The platform draws a circle of this distance
	Geometry      *GeoProximityGeometry   `json:"geometry,omitempty"`       // Pre-computed GeoJSON geometry defining the proximity boundary. Use when the
	Ext           any                     `json:"ext,omitempty"`
}

type GeoProximityTravelTime

type GeoProximityTravelTime struct {
	Value float64        `json:"value"` // Travel time limit.
	Unit  TravelTimeUnit `json:"unit"`
}

GeoProximityTravelTime — Travel time limit for isochrone calculation. The platform resolves this to a geographic boundary

type GetAdcpCapabilitiesRequest

type GetAdcpCapabilitiesRequest struct {
	AdcpVersion      string   `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion int      `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	Protocols        []string `json:"protocols,omitempty"`          // Specific protocols to query capabilities for. If omitted, returns capabilities
	Context          any      `json:"context,omitempty"`
	Ext              any      `json:"ext,omitempty"`
}

GetAdcpCapabilitiesRequest — Request payload for get_adcp_capabilities task. Protocol-level capability discovery that works

type GetAdcpCapabilitiesResponse

type GetAdcpCapabilitiesResponse struct {
	AdcpVersion             string                               `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion        int                                  `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	ContextID               string                               `json:"context_id,omitempty"`         // Session/conversation identifier for tracking related operations across
	Context                 any                                  `json:"context,omitempty"`
	TaskID                  string                               `json:"task_id,omitempty"`                   // Unique identifier for tracking asynchronous operations. Present when a task
	Status                  TaskStatus                           `json:"status"`                              // Current task execution state. Indicates whether the task is completed, in
	Message                 string                               `json:"message,omitempty"`                   // Human-readable summary of the task result. Provides natural language
	Timestamp               string                               `json:"timestamp,omitempty"`                 // ISO 8601 timestamp when the response was generated. Useful for debugging
	Replayed                *bool                                `json:"replayed,omitempty"`                  // Set to true when this response was returned from the idempotency cache rather
	AdcpError               AdcpError                            `json:"adcp_error,omitempty"`                // Transport-envelope error signal for fatal task failures. Per the two-layer
	PushNotificationConfig  *PushNotificationConfig              `json:"push_notification_config,omitempty"`  // Push notification configuration for async task updates (A2A and REST
	GovernanceContext       string                               `json:"governance_context,omitempty"`        // Governance context token issued by the account's governance agent during
	Payload                 map[string]any                       `json:"payload,omitempty"`                   // Conceptual grouping for the task-specific response data defined by individual
	Adcp                    ADCPVersion                          `json:"adcp"`                                // Core AdCP protocol information
	SupportedProtocols      []string                             `json:"supported_protocols"`                 // AdCP protocols this agent supports.
	Account                 *AccountCapabilities                 `json:"account,omitempty"`                   // Account management capabilities. Describes how accounts are established, what
	MediaBuy                *MediaBuyCapabilities                `json:"media_buy,omitempty"`                 // Media-buy protocol capabilities. Expected when media_buy is in
	Signals                 *SignalsCapabilities                 `json:"signals,omitempty"`                   // Signals protocol capabilities. Only present if signals is in
	Governance              *GovernanceCapabilities              `json:"governance,omitempty"`                // Governance protocol capabilities. Only present if governance is in
	SponsoredIntelligence   *SICapabilities                      `json:"sponsored_intelligence,omitempty"`    // Sponsored Intelligence protocol capabilities. Only present if
	Brand                   *BrandCapabilities                   `json:"brand,omitempty"`                     // Brand protocol capabilities. Only present if brand is in supported_protocols.
	Creative                *CreativeCapabilities                `json:"creative,omitempty"`                  // Creative protocol capabilities. Only present if creative is in
	RequestSigning          *RequestSigningCapabilities          `json:"request_signing,omitempty"`           // RFC 9421 HTTP Signatures support for incoming requests. Optional in 3.0 —
	WebhookSigning          *WebhookSigningCapabilities          `json:"webhook_signing,omitempty"`           // RFC 9421 webhook-signature support for outbound webhook callbacks (top-level
	Identity                *IdentityCapabilities                `json:"identity,omitempty"`                  // Operator identity posture — trust-root pointer (`brand_json_url`) plus
	Measurement             any                                  `json:"measurement,omitempty"`               // Experimental measurement capability block. Presence indicates this agent
	ComplianceTesting       *ComplianceTestingCapabilities       `json:"compliance_testing,omitempty"`        // Compliance testing capabilities. The presence of this block declares that the
	Specialisms             []Specialism                         `json:"specialisms,omitempty"`               // Optional — specialized compliance claims this agent supports. Values MUST be
	ExtensionsSupported     []string                             `json:"extensions_supported,omitempty"`      // Extension namespaces this agent supports. Buyers can expect meaningful data in
	ExperimentalFeatures    []string                             `json:"experimental_features,omitempty"`     // Experimental AdCP surfaces this agent implements. A surface is experimental
	WholesaleFeedVersioning *CapabilitiesWholesaleFeedVersioning `json:"wholesale_feed_versioning,omitempty"` // Conditional-fetch token capabilities for get_products and get_signals.
	LastUpdated             string                               `json:"last_updated,omitempty"`              // ISO 8601 timestamp of when capabilities were last updated. Buyers can use this
	Errors                  []AdcpError                          `json:"errors,omitempty"`                    // Task-specific errors and warnings
	Ext                     any                                  `json:"ext,omitempty"`
	WholesaleFeedWebhooks   *CapabilitiesWholesaleFeedWebhooks   `json:"wholesale_feed_webhooks,omitempty"` // Per-agent wholesale product-feed and wholesale signals-feed webhook
}

GetAdcpCapabilitiesResponse — Response payload for get_adcp_capabilities task. Protocol-level capability discovery across all

type GetCollectionListRequest

type GetCollectionListRequest struct {
	AdcpVersion      string                       `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion int                          `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	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
	Resolve          *bool                        `json:"resolve,omitempty"`            // Whether to apply filters and return resolved collections (default: true)
	Pagination       *CollectionRequestPagination `json:"pagination,omitempty"`         // Pagination parameters. Uses higher limits than standard pagination because
	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 {
	AdcpVersion                  string                       `json:"adcp_version,omitempty"`                    // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion             int                          `json:"adcp_major_version,omitempty"`              // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	Account                      *AccountReference            `json:"account,omitempty"`                         // Filter delivery data to a specific account. When omitted, returns data across
	MediaBuyIDs                  []string                     `json:"media_buy_ids,omitempty"`                   // Array of media buy IDs to get delivery data for
	StatusFilter                 *MediaBuyStatusFilter        `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
	EndDate                      string                       `json:"end_date,omitempty"`                        // End date for reporting period (YYYY-MM-DD). When omitted along with
	IncludePackageDailyBreakdown *bool                        `json:"include_package_daily_breakdown,omitempty"` // When true, include daily_breakdown arrays within each package in by_package.
	TimeGranularity              ReportingFrequency           `json:"time_granularity,omitempty"`                // Per-window slice granularity for the pull, using the same vocabulary as
	IncludeWindowBreakdown       *bool                        `json:"include_window_breakdown,omitempty"`        // When true, the response includes media_buy_deliveries[].windows[] — an array
	AttributionWindow            *DeliveryAttributionWindow   `json:"attribution_window,omitempty"`              // Attribution window to apply for conversion metrics. When provided, the seller
	ReportingDimensions          *DeliveryReportingDimensions `json:"reporting_dimensions,omitempty"`            // Request dimensional breakdowns in delivery reporting. Each key enables a
	Context                      any                          `json:"context,omitempty"`
	Ext                          any                          `json:"ext,omitempty"`
}

GetMediaBuyDeliveryRequest — Request parameters for retrieving comprehensive delivery metrics

type GetMediaBuyDeliveryResponse

type GetMediaBuyDeliveryResponse struct {
	AdcpVersion            string                    `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion       int                       `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	ContextID              string                    `json:"context_id,omitempty"`         // Session/conversation identifier for tracking related operations across
	Context                any                       `json:"context,omitempty"`
	TaskID                 string                    `json:"task_id,omitempty"`                  // Unique identifier for tracking asynchronous operations. Present when a task
	Status                 TaskStatus                `json:"status"`                             // Current task execution state. Indicates whether the task is completed, in
	Message                string                    `json:"message,omitempty"`                  // Human-readable summary of the task result. Provides natural language
	Timestamp              string                    `json:"timestamp,omitempty"`                // ISO 8601 timestamp when the response was generated. Useful for debugging
	Replayed               *bool                     `json:"replayed,omitempty"`                 // Set to true when this response was returned from the idempotency cache rather
	AdcpError              AdcpError                 `json:"adcp_error,omitempty"`               // Transport-envelope error signal for fatal task failures. Per the two-layer
	PushNotificationConfig *PushNotificationConfig   `json:"push_notification_config,omitempty"` // Push notification configuration for async task updates (A2A and REST
	GovernanceContext      string                    `json:"governance_context,omitempty"`       // Governance context token issued by the account's governance agent during
	Payload                map[string]any            `json:"payload,omitempty"`                  // Conceptual grouping for the task-specific response data defined by individual
	NotificationType       string                    `json:"notification_type,omitempty"`        // Type of webhook notification (only present in webhook deliveries): scheduled =
	PartialData            *bool                     `json:"partial_data,omitempty"`             // Indicates if any media buys in this webhook have missing/delayed data (only
	UnavailableCount       int                       `json:"unavailable_count,omitempty"`        // Number of media buys with reporting_delayed or failed status (only present in
	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
	ReportingPeriod        ReportingPeriod           `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
	AggregatedTotals       *DeliveryAggregatedTotals `json:"aggregated_totals,omitempty"`        // Combined metrics across all returned media buys. Only included in API
	MediaBuyDeliveries     []MediaBuyDelivery        `json:"media_buy_deliveries"`               // Array of delivery data for media buys. When used in webhook notifications, may
	Errors                 []AdcpError               `json:"errors,omitempty"`                   // Task-specific errors and warnings (e.g., missing delivery data, reporting
	Sandbox                *bool                     `json:"sandbox,omitempty"`                  // When true, this response contains simulated data from sandbox mode.
	Ext                    any                       `json:"ext,omitempty"`
}

GetMediaBuyDeliveryResponse — Response payload for get_media_buy_delivery task

type GetMediaBuysRequest

type GetMediaBuysRequest struct {
	AdcpVersion            string                `json:"adcp_version,omitempty"`             // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion       int                   `json:"adcp_major_version,omitempty"`       // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	Account                *AccountReference     `json:"account,omitempty"`                  // Account to retrieve media buys for. When omitted, returns data across all
	MediaBuyIDs            []string              `json:"media_buy_ids,omitempty"`            // Array of media buy IDs to retrieve. When omitted, returns a paginated set of
	StatusFilter           *MediaBuyStatusFilter `json:"status_filter,omitempty"`            // Filter by status. Can be a single status or array of statuses. Defaults to
	IncludeSnapshot        *bool                 `json:"include_snapshot,omitempty"`         // When true, include a near-real-time delivery snapshot for each package.
	IncludeHistory         int                   `json:"include_history,omitempty"`          // When present, include the last N revision history entries for each media buy
	IncludeWebhookActivity *bool                 `json:"include_webhook_activity,omitempty"` // When true, each returned media buy includes a `webhook_activity` array
	WebhookActivityLimit   int                   `json:"webhook_activity_limit,omitempty"`   // Maximum number of webhook delivery records to return per media buy, ordered
	Pagination             *PaginationRequest    `json:"pagination,omitempty"`               // Cursor-based pagination controls. Strongly recommended when querying broad
	Context                any                   `json:"context,omitempty"`
	Ext                    any                   `json:"ext,omitempty"`
}

GetMediaBuysRequest — Request parameters for retrieving media buy status, creative approval state, and optional delivery

type GetMediaBuysResponse

type GetMediaBuysResponse struct {
	AdcpVersion            string                  `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion       int                     `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	ContextID              string                  `json:"context_id,omitempty"`         // Session/conversation identifier for tracking related operations across
	Context                any                     `json:"context,omitempty"`
	TaskID                 string                  `json:"task_id,omitempty"`                  // Unique identifier for tracking asynchronous operations. Present when a task
	Status                 TaskStatus              `json:"status"`                             // Current task execution state. Indicates whether the task is completed, in
	Message                string                  `json:"message,omitempty"`                  // Human-readable summary of the task result. Provides natural language
	Timestamp              string                  `json:"timestamp,omitempty"`                // ISO 8601 timestamp when the response was generated. Useful for debugging
	Replayed               *bool                   `json:"replayed,omitempty"`                 // Set to true when this response was returned from the idempotency cache rather
	AdcpError              AdcpError               `json:"adcp_error,omitempty"`               // Transport-envelope error signal for fatal task failures. Per the two-layer
	PushNotificationConfig *PushNotificationConfig `json:"push_notification_config,omitempty"` // Push notification configuration for async task updates (A2A and REST
	GovernanceContext      string                  `json:"governance_context,omitempty"`       // Governance context token issued by the account's governance agent during
	Payload                map[string]any          `json:"payload,omitempty"`                  // Conceptual grouping for the task-specific response data defined by individual
	MediaBuys              []MediaBuyData          `json:"media_buys"`                         // Array of media buys with status, creative approval state, and optional
	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.
	Ext                    any                     `json:"ext,omitempty"`
}

GetMediaBuysResponse — Response payload for get_media_buys task. Returns media buy configuration, creative approval

type GetPlanAuditLogsRequest

type GetPlanAuditLogsRequest struct {
	AdcpVersion        string         `json:"adcp_version,omitempty"`        // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion   int            `json:"adcp_major_version,omitempty"`  // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	PlanIDs            []string       `json:"plan_ids,omitempty"`            // Plan IDs to retrieve. For a single plan, pass a one-element array. Plans
	PortfolioPlanIDs   []string       `json:"portfolio_plan_ids,omitempty"`  // Portfolio plan IDs. The governance agent expands each to its member_plan_ids
	GovernanceContexts []string       `json:"governance_contexts,omitempty"` // Filter audit entries by governance context. Returns only checks and outcomes
	PurchaseTypes      []PurchaseType `json:"purchase_types,omitempty"`      // Filter audit entries by purchase type. Returns only checks and outcomes
	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 {
	AdcpVersion            string                  `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion       int                     `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	ContextID              string                  `json:"context_id,omitempty"`         // Session/conversation identifier for tracking related operations across
	Context                any                     `json:"context,omitempty"`
	TaskID                 string                  `json:"task_id,omitempty"`                  // Unique identifier for tracking asynchronous operations. Present when a task
	Status                 TaskStatus              `json:"status"`                             // Current task execution state. Indicates whether the task is completed, in
	Message                string                  `json:"message,omitempty"`                  // Human-readable summary of the task result. Provides natural language
	Timestamp              string                  `json:"timestamp,omitempty"`                // ISO 8601 timestamp when the response was generated. Useful for debugging
	Replayed               *bool                   `json:"replayed,omitempty"`                 // Set to true when this response was returned from the idempotency cache rather
	AdcpError              AdcpError               `json:"adcp_error,omitempty"`               // Transport-envelope error signal for fatal task failures. Per the two-layer
	PushNotificationConfig *PushNotificationConfig `json:"push_notification_config,omitempty"` // Push notification configuration for async task updates (A2A and REST
	GovernanceContext      string                  `json:"governance_context,omitempty"`       // Governance context token issued by the account's governance agent during
	Payload                map[string]any          `json:"payload,omitempty"`                  // Conceptual grouping for the task-specific response data defined by individual
	Plans                  []PlanAuditLog          `json:"plans"`                              // Audit data for each requested plan.
	Ext                    any                     `json:"ext,omitempty"`
}

GetPlanAuditLogsResponse — Governance state and audit trail for one or more plans.

type GetProductsFilterDiagnostics

type GetProductsFilterDiagnostics struct {
	Semantics       string                               `json:"semantics,omitempty"`        // How `excluded_by[*].count` values are computed across multiple filters.
	TotalCandidates int                                  `json:"total_candidates,omitempty"` // Number of products the seller considered before applying `filters`. Baseline
	ExcludedBy      map[string]FilterExclusionDiagnostic `json:"excluded_by,omitempty"`      // Per-filter exclusion counts, keyed by the filter property name as it appears
}

GetProductsFilterDiagnostics — Optional non-fatal diagnostic block describing how the request's `filters` narrowed the candidate

type GetProductsIncompleteItem

type GetProductsIncompleteItem struct {
	Scope         string    `json:"scope"`                    // 'products': not all inventory sources were searched. 'pricing': products
	Description   string    `json:"description"`              // Human-readable explanation of what is missing and why.
	EstimatedWait *Duration `json:"estimated_wait,omitempty"` // How much additional time would resolve this scope. Allows the buyer to decide
}

type GetProductsRefineItem

type GetProductsRefineItem struct {
	Scope      string `json:"scope,omitempty"`       // Change scoped to a specific proposal.
	Ask        string `json:"ask,omitempty"`         // What the buyer is asking for on this proposal (e.g., 'shift more budget toward
	ProductID  string `json:"product_id,omitempty"`  // Product ID from a previous get_products response.
	Action     string `json:"action,omitempty"`      // 'include' (default): return this proposal with updated allocations and
	ProposalID string `json:"proposal_id,omitempty"` // Proposal ID from a previous get_products response.
}

type GetProductsRefinementAppliedItem

type GetProductsRefinementAppliedItem struct {
	Scope      string `json:"scope,omitempty"`       // Echoes scope 'proposal' from the corresponding refine entry.
	Status     string `json:"status,omitempty"`      // 'applied': the ask was fulfilled. 'partial': the ask was partially fulfilled —
	Notes      string `json:"notes,omitempty"`       // Seller explanation of what was done, what couldn't be done, or why.
	ProductID  string `json:"product_id,omitempty"`  // Echoes product_id from the corresponding refine entry.
	ProposalID string `json:"proposal_id,omitempty"` // Echoes proposal_id from the corresponding refine entry.
}

type GetProductsRequest

type GetProductsRequest struct {
	AdcpVersion            string                  `json:"adcp_version,omitempty"`             // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion       int                     `json:"adcp_major_version,omitempty"`       // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	BuyingMode             string                  `json:"buying_mode"`                        // Declares buyer intent for this request. 'brief': publisher curates product
	Brief                  string                  `json:"brief,omitempty"`                    // Natural language description of campaign requirements. Required when
	Refine                 []GetProductsRefineItem `json:"refine,omitempty"`                   // Array of change requests for iterating on products and proposals from a
	Brand                  *BrandReference         `json:"brand,omitempty"`                    // Brand reference for product discovery context. Resolved to full brand identity
	Catalog                *Catalog                `json:"catalog,omitempty"`                  // Catalog of items the buyer wants to promote. The seller matches catalog items
	Account                *AccountReference       `json:"account,omitempty"`                  // Account for product lookup. Returns products with pricing specific to this
	PreferredDeliveryTypes []DeliveryType          `json:"preferred_delivery_types,omitempty"` // Delivery types the buyer prefers, in priority order. Unlike
	Filters                *ProductFilters         `json:"filters,omitempty"`
	PropertyList           *PropertyListRef        `json:"property_list,omitempty"`             // [AdCP 3.0] Reference to an externally managed property list. When provided
	Fields                 []string                `json:"fields,omitempty"`                    // Specific product fields to include in the response. When omitted, all fields
	TimeBudget             *Duration               `json:"time_budget,omitempty"`               // Maximum time the buyer will commit to this request. The seller returns the
	PushNotificationConfig *PushNotificationConfig `json:"push_notification_config,omitempty"`  // Optional webhook configuration for async terminal completion/failure
	Pagination             *PaginationRequest      `json:"pagination,omitempty"`                // Cursor-based pagination controls for get_products. Valid in all buying modes.
	IfWholesaleFeedVersion string                  `json:"if_wholesale_feed_version,omitempty"` // Opaque wholesale_feed_version token returned by a prior wholesale-mode
	IfPricingVersion       string                  `json:"if_pricing_version,omitempty"`        // Opaque pricing_version token from a prior get_products response. MUST only be
	Context                any                     `json:"context,omitempty"`
	RequiredPolicies       []string                `json:"required_policies,omitempty"` // Registry policy IDs that the buyer requires to be enforced for products in
	Ext                    any                     `json:"ext,omitempty"`
}

GetProductsRequest — Request parameters for discovering or refining advertising products. buying_mode declares the

type GetProductsResponse

type GetProductsResponse struct {
	AdcpVersion            string                             `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion       int                                `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	ContextID              string                             `json:"context_id,omitempty"`         // Session/conversation identifier for tracking related operations across
	Context                any                                `json:"context,omitempty"`
	TaskID                 string                             `json:"task_id,omitempty"`                  // Unique identifier for tracking asynchronous operations. Present when a task
	Status                 TaskStatus                         `json:"status"`                             // Current task execution state. Indicates whether the task is completed, in
	Message                string                             `json:"message,omitempty"`                  // Human-readable summary of the task result. Provides natural language
	Timestamp              string                             `json:"timestamp,omitempty"`                // ISO 8601 timestamp when the response was generated. Useful for debugging
	Replayed               *bool                              `json:"replayed,omitempty"`                 // Set to true when this response was returned from the idempotency cache rather
	AdcpError              AdcpError                          `json:"adcp_error,omitempty"`               // Transport-envelope error signal for fatal task failures. Per the two-layer
	PushNotificationConfig *PushNotificationConfig            `json:"push_notification_config,omitempty"` // Push notification configuration for async task updates (A2A and REST
	GovernanceContext      string                             `json:"governance_context,omitempty"`       // Governance context token issued by the account's governance agent during
	Payload                map[string]any                     `json:"payload,omitempty"`                  // Conceptual grouping for the task-specific response data defined by individual
	Products               []Product                          `json:"products,omitempty"`                 // Array of matching products
	Extensions             map[string]any                     `json:"extensions,omitempty"`               // Bundled platform-extension definitions referenced by any product in
	Proposals              []Proposal                         `json:"proposals,omitempty"`                // Optional array of proposed media plans with budget allocations across
	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
	CatalogApplied         *bool                              `json:"catalog_applied,omitempty"`          // Whether the seller filtered results based on the provided catalog. True if the
	RefinementApplied      []GetProductsRefinementAppliedItem `json:"refinement_applied,omitempty"`       // Seller's response to each change request in the refine array, matched by
	Incomplete             []GetProductsIncompleteItem        `json:"incomplete,omitempty"`               // Declares what the seller could not finish within the buyer's time_budget or
	FilterDiagnostics      *GetProductsFilterDiagnostics      `json:"filter_diagnostics,omitempty"`       // Optional non-fatal diagnostic block describing how the request's `filters`
	Pagination             *PaginationResponse                `json:"pagination,omitempty"`               // Cursor metadata for paginated get_products responses. In brief/refine mode
	WholesaleFeedVersion   string                             `json:"wholesale_feed_version,omitempty"`   // Opaque token representing the version of the wholesale product feed state used
	PricingVersion         string                             `json:"pricing_version,omitempty"`          // Opaque token representing the version of the pricing layer, including product
	CacheScope             string                             `json:"cache_scope,omitempty"`              // Declares whether the wholesale_feed_version and pricing_version on this
	Unchanged              *bool                              `json:"unchanged,omitempty"`                // Present and `true` ONLY on wholesale-mode responses when the request carried
	Sandbox                *bool                              `json:"sandbox,omitempty"`                  // When true, this response contains simulated data from sandbox mode.
	Ext                    any                                `json:"ext,omitempty"`
}

GetProductsResponse — Response payload for get_products task

type GetSignalsIncompleteItem

type GetSignalsIncompleteItem struct {
	Scope         string    `json:"scope"`                    // 'signals': not all matching signals were returned. 'pricing': signals returned
	Description   string    `json:"description"`              // Human-readable explanation of what is missing and why.
	EstimatedWait *Duration `json:"estimated_wait,omitempty"` // How much additional time would resolve this scope. Allows the caller to decide
}

type GetSignalsRequest

type GetSignalsRequest struct {
	AdcpVersion      string            `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion int               `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	DiscoveryMode    string            `json:"discovery_mode,omitempty"`     // Declares caller intent for this request. 'brief' (default): semantic discovery
	Account          *AccountReference `json:"account,omitempty"`            // Account for this request. When provided, the signals agent returns per-account
	SignalSpec       string            `json:"signal_spec,omitempty"`        // Natural language description of the desired signals. When used alone, enables
	SignalRefs       []SignalRef       `json:"signal_refs,omitempty"`        // Specific signals to look up by reference. Returns exact matches for the
	// Deprecated: DEPRECATED.
	SignalIDs    []SignalID     `json:"signal_ids,omitempty"`   // DEPRECATED. Use signal_refs instead. Legacy exact lookup field using SignalId
	Destinations []Destination  `json:"destinations,omitempty"` // Filter signals to those activatable on specific agents/platforms. When
	Countries    []string       `json:"countries,omitempty"`    // Countries where signals will be used (ISO 3166-1 alpha-2 codes). When omitted
	Filters      *SignalFilters `json:"filters,omitempty"`
	Fields       []string       `json:"fields,omitempty"` // Specific signal fields to include in the response, aligned with
	// Deprecated: Use pagination.max_results instead.
	MaxResults             int                     `json:"max_results,omitempty"`               // DEPRECATED: Use pagination.max_results instead. When both fields are present
	Pagination             *PaginationRequest      `json:"pagination,omitempty"`                // Pagination parameters. Use pagination.max_results (max: 100, default: 50) and
	PushNotificationConfig *PushNotificationConfig `json:"push_notification_config,omitempty"`  // Optional webhook configuration for async terminal completion/failure
	IfWholesaleFeedVersion string                  `json:"if_wholesale_feed_version,omitempty"` // Opaque wholesale_feed_version token returned by a prior wholesale-mode
	IfPricingVersion       string                  `json:"if_pricing_version,omitempty"`        // Opaque pricing_version token from a prior get_signals response. MUST only be
	Context                any                     `json:"context,omitempty"`
	Ext                    any                     `json:"ext,omitempty"`
}

GetSignalsRequest — Request parameters for discovering and refining signals. Use signal_spec for natural language

type GetSignalsResponse

type GetSignalsResponse struct {
	AdcpVersion            string                     `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion       int                        `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	ContextID              string                     `json:"context_id,omitempty"`         // Session/conversation identifier for tracking related operations across
	Context                any                        `json:"context,omitempty"`
	TaskID                 string                     `json:"task_id,omitempty"`                  // Unique identifier for tracking asynchronous operations. Present when a task
	Status                 TaskStatus                 `json:"status"`                             // Current task execution state. Indicates whether the task is completed, in
	Message                string                     `json:"message,omitempty"`                  // Human-readable summary of the task result. Provides natural language
	Timestamp              string                     `json:"timestamp,omitempty"`                // ISO 8601 timestamp when the response was generated. Useful for debugging
	Replayed               *bool                      `json:"replayed,omitempty"`                 // Set to true when this response was returned from the idempotency cache rather
	AdcpError              AdcpError                  `json:"adcp_error,omitempty"`               // Transport-envelope error signal for fatal task failures. Per the two-layer
	PushNotificationConfig *PushNotificationConfig    `json:"push_notification_config,omitempty"` // Push notification configuration for async task updates (A2A and REST
	GovernanceContext      string                     `json:"governance_context,omitempty"`       // Governance context token issued by the account's governance agent during
	Payload                map[string]any             `json:"payload,omitempty"`                  // Conceptual grouping for the task-specific response data defined by individual
	Signals                []GetSignalsResponseSignal `json:"signals,omitempty"`                  // Array of matching signals
	Errors                 []AdcpError                `json:"errors,omitempty"`                   // Task-specific errors and warnings (e.g., signal discovery or pricing issues)
	Incomplete             []GetSignalsIncompleteItem `json:"incomplete,omitempty"`               // Declares what the agent could not finish within the caller's time_budget or
	WholesaleFeedVersion   string                     `json:"wholesale_feed_version,omitempty"`   // Opaque token representing the version of the wholesale signals feed state used
	PricingVersion         string                     `json:"pricing_version,omitempty"`          // Opaque token representing the version of the pricing layer. When the agent
	CacheScope             string                     `json:"cache_scope,omitempty"`              // Declares whether the wholesale_feed_version and pricing_version on this
	Unchanged              *bool                      `json:"unchanged,omitempty"`                // Present and `true` ONLY on wholesale-mode responses when the request carried
	Pagination             *PaginationResponse        `json:"pagination,omitempty"`
	Sandbox                *bool                      `json:"sandbox,omitempty"` // When true, this response contains simulated data from sandbox mode.
	Ext                    any                        `json:"ext,omitempty"`
}

GetSignalsResponse — Response payload for get_signals task

type GetSignalsResponseSignal

type GetSignalsResponseSignal struct {
	SignalRef *SignalRef `json:"signal_ref,omitempty"` // Canonical signal reference for discovery, activation, and media-buy targeting.
	// Deprecated: DEPRECATED.
	SignalID             *SignalID                `json:"signal_id,omitempty"`             // DEPRECATED. Use signal_ref instead. Legacy SignalId retained for compatibility
	Name                 string                   `json:"name"`                            // Human-readable signal name
	Description          string                   `json:"description"`                     // Detailed signal description
	MethodologyURL       string                   `json:"methodology_url,omitempty"`       // Optional link to published methodology, media-kit, or data documentation. For
	LastUpdated          string                   `json:"last_updated,omitempty"`          // When this definition record was last updated. This indicates freshness of the
	ValueType            SignalValueType          `json:"value_type,omitempty"`            // The data type of this signal's values (binary, categorical, numeric)
	Categories           []string                 `json:"categories,omitempty"`            // Valid values for categorical signals. Present when value_type is
	Range                *SignalRange             `json:"range,omitempty"`                 // Valid range for numeric signals. Present when value_type is 'numeric'.
	RestrictedAttributes []RestrictedAttribute    `json:"restricted_attributes,omitempty"` // Restricted attribute categories this signal touches.
	PolicyCategories     []string                 `json:"policy_categories,omitempty"`     // Policy categories this signal is sensitive for.
	Taxonomy             *SignalTaxonomy          `json:"taxonomy,omitempty"`              // Optional taxonomy metadata describing what this signal means in an external
	SegmentationCriteria string                   `json:"segmentation_criteria,omitempty"` // Rules governing inclusion of identifiers in the segment. Aligns with IAB Data
	CriteriaURL          string                   `json:"criteria_url,omitempty"`          // Optional URL to a longer-form methodology or criteria document. This is a
	DataSources          []string                 `json:"data_sources,omitempty"`          // Origin categories of the raw data used to compile the signal, aligned with IAB
	Methodology          string                   `json:"methodology,omitempty"`           // How the signal's audience membership or attribute was determined. 'modeled'
	AudienceExpansion    *bool                    `json:"audience_expansion,omitempty"`    // Whether look-alike or similar-audience expansion was used to include
	DeviceExpansion      *bool                    `json:"device_expansion,omitempty"`      // Whether the signal was expanded deterministically across devices of the same
	RefreshCadence       string                   `json:"refresh_cadence,omitempty"`       // Cadence at which the signal definition's underlying segment membership is
	LookbackWindow       string                   `json:"lookback_window,omitempty"`       // Time window in which a qualifying event can occur for inclusion.
	Onboarder            *SignalOnboarder         `json:"onboarder,omitempty"`             // Onboarder disclosure. Required when data_sources includes an offline_* or
	Countries            []string                 `json:"countries,omitempty"`             // ISO 3166-1 alpha-2 country codes where the signal is applicable. Sellers must
	ConsentBasis         []ConsentBasis           `json:"consent_basis,omitempty"`         // Data provider's declared GDPR Article 6 lawful basis or consent basis for the
	Art9Basis            string                   `json:"art9_basis,omitempty"`            // Data provider's declared GDPR Article 9 basis for the underlying signal
	Modeling             *SignalModeling          `json:"modeling,omitempty"`              // Modeling disclosure for modeled data signals. Required when methodology is
	DataSubjectRights    *SignalDataSubjectRights `json:"data_subject_rights,omitempty"`   // Per-signal data-subject-rights routing. This is a contact/routing reference
	DtsCompliantVersion  string                   `json:"dts_compliant_version,omitempty"` // IAB Data Transparency Standard version this signal definition self-attests as
	SignalAgentSegmentID string                   `json:"signal_agent_segment_id"`         // Opaque resolved-segment handle issued by this signal source. Pass this string
	SignalType           SignalCatalogType        `json:"signal_type"`                     // Commercial/provenance type of signal (marketplace, custom, owned)
	DataProvider         string                   `json:"data_provider,omitempty"`         // Human-readable source name for the signal, when applicable. For
	// Deprecated: DEPRECATED for detailed planning.
	CoveragePercentage float64                 `json:"coverage_percentage,omitempty"` // DEPRECATED for detailed planning. Optional legacy scalar percentage of
	CoverageForecast   *SignalCoverageForecast `json:"coverage_forecast,omitempty"`   // Optional forecast-shaped signal availability guidance. When present, this is
	Deployments        []Deployment            `json:"deployments"`                   // Array of deployment targets
	PricingOptions     []VendorPricingOption   `json:"pricing_options,omitempty"`     // Pricing options available for this signal when it has an incremental price.
}

GetSignalsResponseSignal — GetSignals response row with listing identity, enrichment, activation, and pricing fields.

type GopType

type GopType = string

GopType — Group of Pictures structure. SSAI and broadcast require closed GOPs for clean

const (
	GopTypeClosed GopType = "closed"
	GopTypeOpen   GopType = "open"
)

func KnownGopTypeValues

func KnownGopTypeValues() []GopType

KnownGopTypeValues returns the current schema-defined values for GopType.

func ParseGopType

func ParseGopType(s string) (GopType, error)

ParseGopType returns s as GopType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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 GovernanceAgent struct {
	URL        string   `json:"url"`
	Categories []string `json:"categories,omitempty"`
}

type GovernanceAudienceDistribution

type GovernanceAudienceDistribution struct {
	Baseline            string             `json:"baseline"`                       // Population baseline used for index calculation. 'census': national census or
	BaselineDescription string             `json:"baseline_description,omitempty"` // Description of the baseline when baseline is 'custom' (e.g., 'US adults 18+
	Indices             map[string]float64 `json:"indices"`                        // Audience index values for the current reporting period. Keys are
	CumulativeIndices   map[string]float64 `json:"cumulative_indices,omitempty"`   // Cumulative audience index values since the governed action started. Same key
}

GovernanceAudienceDistribution — Actual audience composition during the reporting period. Enables mid-flight drift detection when

type GovernanceCapabilities

type GovernanceCapabilities struct {
	PropertyFeatures      []GovernanceFeature `json:"property_features,omitempty"`
	CreativeFeatures      []GovernanceFeature `json:"creative_features,omitempty"`
	AggregationWindowDays int                 `json:"aggregation_window_days,omitempty"`
}

GovernanceCapabilities is the governance protocol capability block.

type GovernanceDecision

type GovernanceDecision = string

GovernanceDecision — Outcome of a governance check_governance call. Distinct from creative approval

const (
	GovernanceDecisionApproved   GovernanceDecision = "approved"
	GovernanceDecisionDenied     GovernanceDecision = "denied"
	GovernanceDecisionConditions GovernanceDecision = "conditions"
)

func KnownGovernanceDecisionValues

func KnownGovernanceDecisionValues() []GovernanceDecision

KnownGovernanceDecisionValues returns the current schema-defined values for GovernanceDecision.

func ParseGovernanceDecision

func ParseGovernanceDecision(s string) (GovernanceDecision, error)

ParseGovernanceDecision returns s as GovernanceDecision when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type GovernanceDeliveryMetrics

type GovernanceDeliveryMetrics struct {
	ReportingPeriod       GovernanceDeliveryReportingPeriod `json:"reporting_period"`                 // Start and end timestamps for the reporting window.
	Spend                 *float64                          `json:"spend,omitempty"`                  // Total spend during the reporting period.
	CumulativeSpend       *float64                          `json:"cumulative_spend,omitempty"`       // Total spend since the governed action started.
	Impressions           *int                              `json:"impressions,omitempty"`            // Impressions delivered during the reporting period.
	CumulativeImpressions *int                              `json:"cumulative_impressions,omitempty"` // Total impressions since the governed action started.
	GeoDistribution       map[string]float64                `json:"geo_distribution,omitempty"`       // Actual geographic distribution. Keys are ISO 3166-1 alpha-2 codes, values are
	ChannelDistribution   map[string]float64                `json:"channel_distribution,omitempty"`   // Actual channel distribution. Keys are channel enum values, values are
	Pacing                string                            `json:"pacing,omitempty"`                 // Whether delivery is ahead of, on track with, or behind the planned pace.
	AudienceDistribution  *GovernanceAudienceDistribution   `json:"audience_distribution,omitempty"`  // Actual audience composition during the reporting period. Enables mid-flight
}

GovernanceDeliveryMetrics — Actual delivery performance data. MUST be present for 'delivery' phase. The governance agent

type GovernanceDeliveryReportingPeriod

type GovernanceDeliveryReportingPeriod struct {
	Start string `json:"start"`
	End   string `json:"end"`
}

GovernanceDeliveryReportingPeriod — Start and end timestamps for the reporting window.

type GovernanceDomain

type GovernanceDomain = string

GovernanceDomain — Governance sub-domains that a registry policy applies to. Used to indicate

const (
	GovernanceDomainCampaign         GovernanceDomain = "campaign"
	GovernanceDomainProperty         GovernanceDomain = "property"
	GovernanceDomainCreative         GovernanceDomain = "creative"
	GovernanceDomainContentStandards GovernanceDomain = "content_standards"
)

func KnownGovernanceDomainValues

func KnownGovernanceDomainValues() []GovernanceDomain

KnownGovernanceDomainValues returns the current schema-defined values for GovernanceDomain.

func ParseGovernanceDomain

func ParseGovernanceDomain(s string) (GovernanceDomain, error)

ParseGovernanceDomain returns s as GovernanceDomain when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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

const (
	GovernanceModeAudit    GovernanceMode = "audit"
	GovernanceModeAdvisory GovernanceMode = "advisory"
	GovernanceModeEnforce  GovernanceMode = "enforce"
)

func KnownGovernanceModeValues

func KnownGovernanceModeValues() []GovernanceMode

KnownGovernanceModeValues returns the current schema-defined values for GovernanceMode.

func ParseGovernanceMode

func ParseGovernanceMode(s string) (GovernanceMode, error)

ParseGovernanceMode returns s as GovernanceMode when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type GovernancePhase

type GovernancePhase = string

GovernancePhase — The phase of the governed action's lifecycle that triggered the governance

const (
	GovernancePhasePurchase     GovernancePhase = "purchase"
	GovernancePhaseModification GovernancePhase = "modification"
	GovernancePhaseDelivery     GovernancePhase = "delivery"
)

func KnownGovernancePhaseValues

func KnownGovernancePhaseValues() []GovernancePhase

KnownGovernancePhaseValues returns the current schema-defined values for GovernancePhase.

func ParseGovernancePhase

func ParseGovernancePhase(s string) (GovernancePhase, error)

ParseGovernancePhase returns s as GovernancePhase when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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"
)

func KnownHTTPMethodValues

func KnownHTTPMethodValues() []HTTPMethod

KnownHTTPMethodValues returns the current schema-defined values for HTTPMethod.

func ParseHTTPMethod

func ParseHTTPMethod(s string) (HTTPMethod, error)

ParseHTTPMethod returns s as HTTPMethod when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type HistoryEntryType

type HistoryEntryType = string

HistoryEntryType — Type of entry in task execution history

const (
	HistoryEntryTypeRequest  HistoryEntryType = "request"
	HistoryEntryTypeResponse HistoryEntryType = "response"
)

func KnownHistoryEntryTypeValues

func KnownHistoryEntryTypeValues() []HistoryEntryType

KnownHistoryEntryTypeValues returns the current schema-defined values for HistoryEntryType.

func ParseHistoryEntryType

func ParseHistoryEntryType(s string) (HistoryEntryType, error)

ParseHistoryEntryType returns s as HistoryEntryType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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 IOAcceptance

type IOAcceptance struct {
	IoID        string `json:"io_id"`                  // The io_id from the proposal's insertion_order being accepted
	AcceptedAt  string `json:"accepted_at"`            // ISO 8601 timestamp when the IO was accepted
	Signatory   string `json:"signatory"`              // Who accepted the IO — agent identifier or human name
	SignatureID string `json:"signature_id,omitempty"` // Reference to the electronic signature from the signing service, when
}

IOAcceptance — Acceptance of an insertion order from a committed proposal. Required when the proposal's

type IdempotencyCaps

type IdempotencyCaps struct {
	Supported          bool  `json:"supported"`
	ReplayTTLSeconds   int   `json:"replay_ttl_seconds,omitempty"`
	InFlightMaxSeconds *int  `json:"in_flight_max_seconds,omitempty"`
	AccountIDIsOpaque  *bool `json:"account_id_is_opaque,omitempty"`
}

IdempotencyCaps declares the seller's replay window for idempotency_key. Minimum 3600 (1h); recommended 86400 (24h); maximum 604800 (7d).

type IdentifierMatchProof

type IdentifierMatchProof struct {
	IdentifierValueSha256 string `json:"identifier_value_sha256"` // Echo of one digest from `params.identifier_value_digests` so the runner can
	Found                 bool   `json:"found"`                   // True if any string token in the recorded payload hashes to the queried digest.
}

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"
)

func KnownIdentifierTypesValues

func KnownIdentifierTypesValues() []IdentifierTypes

KnownIdentifierTypesValues returns the current schema-defined values for IdentifierTypes.

func ParseIdentifierTypes

func ParseIdentifierTypes(s string) (IdentifierTypes, error)

ParseIdentifierTypes returns s as IdentifierTypes when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type IdentityCapabilities

type IdentityCapabilities struct {
	BrandJSONURL             string                          `json:"brand_json_url,omitempty"`
	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 ImageAsset

type ImageAsset struct {
	AssetType  string      `json:"asset_type"`           // Discriminator identifying this as an image asset. See
	URL        string      `json:"url"`                  // URL to the image asset
	Width      int         `json:"width"`                // Width in pixels
	Height     int         `json:"height"`               // Height in pixels
	Format     string      `json:"format,omitempty"`     // Image file format (jpg, png, gif, webp, etc.)
	AltText    string      `json:"alt_text,omitempty"`   // Alternative text for accessibility
	Provenance *Provenance `json:"provenance,omitempty"` // Provenance metadata for this asset, overrides manifest-level provenance
}

ImageAsset — Image asset with URL and dimensions

type Impairment

type Impairment struct {
	ImpairmentID string               `json:"impairment_id"`
	ResourceType string               `json:"resource_type"`
	ResourceID   string               `json:"resource_id"`
	PackageIDs   []string             `json:"package_ids"`
	Transition   ImpairmentTransition `json:"transition"`
	ReasonCode   string               `json:"reason_code"`
	Reason       string               `json:"reason,omitempty"`
	ObservedAt   string               `json:"observed_at"`
	Remediation  string               `json:"remediation,omitempty"`
}

Impairment is an open upstream dependency state that affects a media buy.

type ImpairmentOfflineState

type ImpairmentOfflineState = string

ImpairmentOfflineState — Canonical offline values that may appear in impairment.transition.to. Each

const (
	ImpairmentOfflineStateSuspended    ImpairmentOfflineState = "suspended"
	ImpairmentOfflineStateRejected     ImpairmentOfflineState = "rejected"
	ImpairmentOfflineStateWithdrawn    ImpairmentOfflineState = "withdrawn"
	ImpairmentOfflineStateInsufficient ImpairmentOfflineState = "insufficient"
	ImpairmentOfflineStateDepublished  ImpairmentOfflineState = "depublished"
)

func KnownImpairmentOfflineStateValues

func KnownImpairmentOfflineStateValues() []ImpairmentOfflineState

KnownImpairmentOfflineStateValues returns the current schema-defined values for ImpairmentOfflineState.

func ParseImpairmentOfflineState

func ParseImpairmentOfflineState(s string) (ImpairmentOfflineState, error)

ParseImpairmentOfflineState returns s as ImpairmentOfflineState when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type ImpairmentReasonCode

type ImpairmentReasonCode = string

ImpairmentReasonCode — Categorical reason a dependency resource entered an offline state, surfacing

const (
	ImpairmentReasonCodePolicyViolation              ImpairmentReasonCode = "policy_violation"
	ImpairmentReasonCodeConsentExpired               ImpairmentReasonCode = "consent_expired"
	ImpairmentReasonCodeTtlExpired                   ImpairmentReasonCode = "ttl_expired"
	ImpairmentReasonCodePiiAuditFailed               ImpairmentReasonCode = "pii_audit_failed"
	ImpairmentReasonCodeSellerRemoved                ImpairmentReasonCode = "seller_removed"
	ImpairmentReasonCodeContentRejected              ImpairmentReasonCode = "content_rejected"
	ImpairmentReasonCodeIdentityAuthorizationRevoked ImpairmentReasonCode = "identity_authorization_revoked"
	ImpairmentReasonCodeIdentityAuthorizationExpired ImpairmentReasonCode = "identity_authorization_expired"
	ImpairmentReasonCodeSourcePrivate                ImpairmentReasonCode = "source_private"
	ImpairmentReasonCodeSourceOffline                ImpairmentReasonCode = "source_offline"
	ImpairmentReasonCodePropertyDepublished          ImpairmentReasonCode = "property_depublished"
)

func KnownImpairmentReasonCodeValues

func KnownImpairmentReasonCodeValues() []ImpairmentReasonCode

KnownImpairmentReasonCodeValues returns the current schema-defined values for ImpairmentReasonCode.

func ParseImpairmentReasonCode

func ParseImpairmentReasonCode(s string) (ImpairmentReasonCode, error)

ParseImpairmentReasonCode returns s as ImpairmentReasonCode when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type ImpairmentTransition

type ImpairmentTransition struct {
	From string `json:"from,omitempty"`
	To   string `json:"to"`
}

ImpairmentTransition records the resource status change that opened an impairment.

type IndustryIdentifier

type IndustryIdentifier struct {
	Type  string `json:"type"`
	Value string `json:"value"`
}

IndustryIdentifier is an industry-standard creative identifier (Ad-ID, ISCI, etc.).

type InsertionOrder

type InsertionOrder struct {
	IoID              string               `json:"io_id"`                 // Unique identifier for this insertion order. Referenced by io_acceptance on
	Terms             *InsertionOrderTerms `json:"terms,omitempty"`       // Summary fields echoed from the committed proposal for agent verification.
	TermsURL          string               `json:"terms_url,omitempty"`   // URL to a human-readable document containing the full insertion order terms
	SigningURL        string               `json:"signing_url,omitempty"` // URL to an electronic signing service (e.g., DocuSign) for human signature
	RequiresSignature bool                 `json:"requires_signature"`    // Whether the buyer must accept this IO before creating a media buy. When true
}

InsertionOrder — A signing wrapper attached to a committed proposal. The IO does not introduce new deal terms — all

type InsertionOrderBudget

type InsertionOrderBudget struct {
	Amount   float64 `json:"amount"`
	Currency string  `json:"currency"` // ISO 4217 currency code
}

InsertionOrderBudget — Total committed budget

type InsertionOrderTerms

type InsertionOrderTerms struct {
	Advertiser   string                `json:"advertiser,omitempty"`    // Advertiser name or identifier
	Publisher    string                `json:"publisher,omitempty"`     // Publisher name or identifier
	TotalBudget  *InsertionOrderBudget `json:"total_budget,omitempty"`  // Total committed budget
	FlightStart  string                `json:"flight_start,omitempty"`  // Campaign start date
	FlightEnd    string                `json:"flight_end,omitempty"`    // Campaign end date
	PaymentTerms string                `json:"payment_terms,omitempty"` // Payment terms
}

InsertionOrderTerms — Summary fields echoed from the committed proposal for agent verification. Buyer agents use these

type Installment

type Installment struct {
	InstallmentID     string                 `json:"installment_id"`               // Unique identifier for this installment within the collection
	CollectionID      string                 `json:"collection_id,omitempty"`      // Parent collection reference. Required when the product spans multiple
	Name              string                 `json:"name,omitempty"`               // Installment title
	Season            string                 `json:"season,omitempty"`             // Season identifier (e.g., '1', '2024', 'spring_2026')
	InstallmentNumber string                 `json:"installment_number,omitempty"` // Installment number within the season (e.g., '3', '47')
	ScheduledAt       string                 `json:"scheduled_at,omitempty"`       // When the installment airs or publishes (ISO 8601)
	Status            InstallmentStatus      `json:"status,omitempty"`             // Lifecycle status of the installment
	DurationSeconds   int                    `json:"duration_seconds,omitempty"`   // Expected duration of the installment in seconds
	FlexibleEnd       *bool                  `json:"flexible_end,omitempty"`       // Whether the end time is approximate (live events, sports)
	ValidUntil        string                 `json:"valid_until,omitempty"`        // When this installment data expires and should be re-queried. Agents should
	ContentRating     *ContentRating         `json:"content_rating,omitempty"`     // Installment-specific content rating. Overrides the collection's baseline
	Topics            []string               `json:"topics,omitempty"`             // Content topics for this installment. Uses the same taxonomy as the
	Special           *Special               `json:"special,omitempty"`            // Installment-specific event context. When present, this installment is anchored
	GuestTalent       []Talent               `json:"guest_talent,omitempty"`       // Installment-specific guests and talent. Additive to the collection's recurring
	AdInventory       *AdInventoryConfig     `json:"ad_inventory,omitempty"`       // Break-based ad inventory for this installment. For non-break formats (host
	Deadlines         *InstallmentDeadlines  `json:"deadlines,omitempty"`          // Booking, cancellation, and material submission deadlines for this installment.
	DerivativeOf      *InstallmentDerivative `json:"derivative_of,omitempty"`      // When this installment is a clip, highlight, or recap derived from a full
	Ext               any                    `json:"ext,omitempty"`
}

Installment — A single bookable unit within a collection — one episode, issue, event, or rotation period. The

type InstallmentDeadlines

type InstallmentDeadlines struct {
	BookingDeadline      string             `json:"booking_deadline,omitempty"`      // Last date/time to book a placement in this installment (ISO 8601). After this
	CancellationDeadline string             `json:"cancellation_deadline,omitempty"` // Last date/time to cancel without penalty (ISO 8601). Cancellations after this
	MaterialDeadlines    []MaterialDeadline `json:"material_deadlines,omitempty"`    // Stages for creative material submission. Items MUST be in chronological order
}

InstallmentDeadlines — Deadlines associated with a bookable installment. Applies to any channel where inventory is tied

type InstallmentDerivative

type InstallmentDerivative struct {
	InstallmentID string         `json:"installment_id"` // The source installment this content is derived from
	Type          DerivativeType `json:"type"`           // What kind of derivative content this is
}

InstallmentDerivative — When this installment is a clip, highlight, or recap derived from a full installment. The source

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"
)

func KnownInstallmentStatusValues

func KnownInstallmentStatusValues() []InstallmentStatus

KnownInstallmentStatusValues returns the current schema-defined values for InstallmentStatus.

func ParseInstallmentStatus

func ParseInstallmentStatus(s string) (InstallmentStatus, error)

ParseInstallmentStatus returns s as InstallmentStatus when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type JavascriptModuleType

type JavascriptModuleType = string

JavascriptModuleType — JavaScript module format types for creative assets

const (
	JavascriptModuleTypeEsm      JavascriptModuleType = "esm"
	JavascriptModuleTypeCommonjs JavascriptModuleType = "commonjs"
	JavascriptModuleTypeScript   JavascriptModuleType = "script"
)

func KnownJavascriptModuleTypeValues

func KnownJavascriptModuleTypeValues() []JavascriptModuleType

KnownJavascriptModuleTypeValues returns the current schema-defined values for JavascriptModuleType.

func ParseJavascriptModuleType

func ParseJavascriptModuleType(s string) (JavascriptModuleType, error)

ParseJavascriptModuleType returns s as JavascriptModuleType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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 KeywordTarget

type KeywordTarget struct {
	Keyword   string    `json:"keyword"` // The keyword to target
	MatchType MatchType `json:"match_type"`
	BidPrice  *float64  `json:"bid_price,omitempty"` // Per-keyword bid price, denominated in the same currency as the package's
}

type KeywordTargetRef

type KeywordTargetRef struct {
	Keyword   string    `json:"keyword"` // The keyword to stop targeting
	MatchType MatchType `json:"match_type"`
}

type KeywordTargetUpdate

type KeywordTargetUpdate struct {
	Keyword   string    `json:"keyword"` // The keyword to target
	MatchType MatchType `json:"match_type"`
	BidPrice  *float64  `json:"bid_price,omitempty"` // Per-keyword bid price. Inherits currency and max_bid interpretation from the
}

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"
)

func KnownLandingPageRequirementValues

func KnownLandingPageRequirementValues() []LandingPageRequirement

KnownLandingPageRequirementValues returns the current schema-defined values for LandingPageRequirement.

func ParseLandingPageRequirement

func ParseLandingPageRequirement(s string) (LandingPageRequirement, error)

ParseLandingPageRequirement returns s as LandingPageRequirement when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type LegacyPostalSystem

type LegacyPostalSystem = string

LegacyPostalSystem — Deprecated country-fused postal code systems for geographic targeting. Prefer

const (
	LegacyPostalSystemUsZip         LegacyPostalSystem = "us_zip"
	LegacyPostalSystemUsZipPlusFour LegacyPostalSystem = "us_zip_plus_four"
	LegacyPostalSystemGbOutward     LegacyPostalSystem = "gb_outward"
	LegacyPostalSystemGbFull        LegacyPostalSystem = "gb_full"
	LegacyPostalSystemCaFsa         LegacyPostalSystem = "ca_fsa"
	LegacyPostalSystemCaFull        LegacyPostalSystem = "ca_full"
	LegacyPostalSystemDePlz         LegacyPostalSystem = "de_plz"
	LegacyPostalSystemFrCodePostal  LegacyPostalSystem = "fr_code_postal"
	LegacyPostalSystemAuPostcode    LegacyPostalSystem = "au_postcode"
	LegacyPostalSystemChPlz         LegacyPostalSystem = "ch_plz"
	LegacyPostalSystemAtPlz         LegacyPostalSystem = "at_plz"
)

func KnownLegacyPostalSystemValues

func KnownLegacyPostalSystemValues() []LegacyPostalSystem

KnownLegacyPostalSystemValues returns the current schema-defined values for LegacyPostalSystem.

func ParseLegacyPostalSystem

func ParseLegacyPostalSystem(s string) (LegacyPostalSystem, error)

ParseLegacyPostalSystem returns s as LegacyPostalSystem when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type LegacyWebhookAuthentication

type LegacyWebhookAuthentication struct {
	Schemes     []AuthScheme `json:"schemes"`     // Array of authentication schemes. Supported: ['Bearer'] for simple token auth
	Credentials string       `json:"credentials"` // Credentials for the legacy scheme. For Bearer: token sent in Authorization
}

LegacyWebhookAuthentication — Legacy authentication configuration (A2A-compatible). Opts the seller into Bearer or HMAC-SHA256

type LiftDimension

type LiftDimension = string

LiftDimension — Brand-lift dimension disambiguator. Brand lift is multidimensional in

const (
	LiftDimensionAwareness      LiftDimension = "awareness"
	LiftDimensionConsideration  LiftDimension = "consideration"
	LiftDimensionFavorability   LiftDimension = "favorability"
	LiftDimensionPurchaseIntent LiftDimension = "purchase_intent"
	LiftDimensionAdRecall       LiftDimension = "ad_recall"
)

func KnownLiftDimensionValues

func KnownLiftDimensionValues() []LiftDimension

KnownLiftDimensionValues returns the current schema-defined values for LiftDimension.

func ParseLiftDimension

func ParseLiftDimension(s string) (LiftDimension, error)

ParseLiftDimension returns s as LiftDimension when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type ListAccountsRequest

type ListAccountsRequest struct {
	AdcpVersion      string             `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion int                `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	Account          *AccountReference  `json:"account,omitempty"`            // Optional exact account filter. Use `account_id` to retrieve one known account
	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
	Context          any                `json:"context,omitempty"`
	Ext              any                `json:"ext,omitempty"`
}

ListAccountsRequest — Request parameters for listing accounts accessible to the authenticated agent. For

type ListAccountsResponse

type ListAccountsResponse struct {
	AdcpVersion            string                     `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion       int                        `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	ContextID              string                     `json:"context_id,omitempty"`         // Session/conversation identifier for tracking related operations across
	Context                any                        `json:"context,omitempty"`
	TaskID                 string                     `json:"task_id,omitempty"`                  // Unique identifier for tracking asynchronous operations. Present when a task
	Status                 TaskStatus                 `json:"status"`                             // Current task execution state. Indicates whether the task is completed, in
	Message                string                     `json:"message,omitempty"`                  // Human-readable summary of the task result. Provides natural language
	Timestamp              string                     `json:"timestamp,omitempty"`                // ISO 8601 timestamp when the response was generated. Useful for debugging
	Replayed               *bool                      `json:"replayed,omitempty"`                 // Set to true when this response was returned from the idempotency cache rather
	AdcpError              AdcpError                  `json:"adcp_error,omitempty"`               // Transport-envelope error signal for fatal task failures. Per the two-layer
	PushNotificationConfig *PushNotificationConfig    `json:"push_notification_config,omitempty"` // Push notification configuration for async task updates (A2A and REST
	GovernanceContext      string                     `json:"governance_context,omitempty"`       // Governance context token issued by the account's governance agent during
	Payload                map[string]any             `json:"payload,omitempty"`                  // Conceptual grouping for the task-specific response data defined by individual
	Accounts               []AccountWithAuthorization `json:"accounts"`                           // Array of accounts accessible to the authenticated agent. Each entry is the
	Errors                 []AdcpError                `json:"errors,omitempty"`                   // Task-specific errors and warnings
	Pagination             *PaginationResponse        `json:"pagination,omitempty"`
	Ext                    any                        `json:"ext,omitempty"`
}

ListAccountsResponse — Response payload for list_accounts task

type ListCollectionListsRequest

type ListCollectionListsRequest struct {
	AdcpVersion      string             `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion int                `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	Account          *AccountReference  `json:"account,omitempty"`            // Filter to lists owned by this account. When omitted, returns lists across all
	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 {
	AdcpVersion           string                  `json:"adcp_version,omitempty"`           // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion      int                     `json:"adcp_major_version,omitempty"`     // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	FormatIDs             []FormatRef             `json:"format_ids,omitempty"`             // Return only these specific format IDs (e.g., from get_products response)
	AssetTypes            []AssetContentType      `json:"asset_types,omitempty"`            // Filter to formats that include these asset types. For third-party tags, search
	MaxWidth              int                     `json:"max_width,omitempty"`              // Maximum width in pixels (inclusive). Returns formats where ANY render has
	MaxHeight             int                     `json:"max_height,omitempty"`             // Maximum height in pixels (inclusive). Returns formats where ANY render has
	MinWidth              int                     `json:"min_width,omitempty"`              // Minimum width in pixels (inclusive). Returns formats where ANY render has
	MinHeight             int                     `json:"min_height,omitempty"`             // Minimum height in pixels (inclusive). Returns formats where ANY render has
	IsResponsive          *bool                   `json:"is_responsive,omitempty"`          // Filter for responsive formats that adapt to container size. When true, returns
	NameSearch            string                  `json:"name_search,omitempty"`            // Search for formats by name (case-insensitive partial match)
	PublisherDomain       string                  `json:"publisher_domain,omitempty"`       // Filter to formats supported by the named publisher. Agents resolve via the
	PropertyID            string                  `json:"property_id,omitempty"`            // Filter to formats supported on the named property within the publisher's
	WcagLevel             WcagLevel               `json:"wcag_level,omitempty"`             // Filter to formats that meet at least this WCAG conformance level (A < AA < AAA)
	DisclosurePositions   []DisclosurePosition    `json:"disclosure_positions,omitempty"`   // Filter to formats that support all of these disclosure positions. When a
	DisclosurePersistence []DisclosurePersistence `json:"disclosure_persistence,omitempty"` // Filter to formats where each requested persistence mode is supported by at
	OutputFormatIDs       []FormatRef             `json:"output_format_ids,omitempty"`      // Filter to formats whose output_format_ids includes any of these format IDs.
	InputFormatIDs        []FormatRef             `json:"input_format_ids,omitempty"`       // Filter to formats whose input_format_ids includes any of these format IDs.
	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 {
	AdcpVersion            string                  `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion       int                     `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	ContextID              string                  `json:"context_id,omitempty"`         // Session/conversation identifier for tracking related operations across
	Context                any                     `json:"context,omitempty"`
	TaskID                 string                  `json:"task_id,omitempty"`                  // Unique identifier for tracking asynchronous operations. Present when a task
	Status                 TaskStatus              `json:"status"`                             // Current task execution state. Indicates whether the task is completed, in
	Message                string                  `json:"message,omitempty"`                  // Human-readable summary of the task result. Provides natural language
	Timestamp              string                  `json:"timestamp,omitempty"`                // ISO 8601 timestamp when the response was generated. Useful for debugging
	Replayed               *bool                   `json:"replayed,omitempty"`                 // Set to true when this response was returned from the idempotency cache rather
	AdcpError              AdcpError               `json:"adcp_error,omitempty"`               // Transport-envelope error signal for fatal task failures. Per the two-layer
	PushNotificationConfig *PushNotificationConfig `json:"push_notification_config,omitempty"` // Push notification configuration for async task updates (A2A and REST
	GovernanceContext      string                  `json:"governance_context,omitempty"`       // Governance context token issued by the account's governance agent during
	Payload                map[string]any          `json:"payload,omitempty"`                  // Conceptual grouping for the task-specific response data defined by individual
	Formats                []CreativeFormat        `json:"formats"`                            // Full format definitions for all formats this agent supports. Each format's
	Source                 string                  `json:"source,omitempty"`                   // Which tier of the resolution order produced this `formats[]` list when the
	CreativeAgents         []CreativeAgentRef      `json:"creative_agents,omitempty"`          // Optional: Creative agents that provide additional formats. Buyers can
	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.
	Ext                    any                     `json:"ext,omitempty"`
}

ListCreativeFormatsResponse — Response payload for list_creative_formats task

type ListCreativesRequest

type ListCreativesRequest struct {
	AdcpVersion            string             `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion       int                `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	Filters                *CreativeFilters   `json:"filters,omitempty"`
	Sort                   *ListCreativesSort `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
	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.
	IncludePurged          *bool              `json:"include_purged,omitempty"`           // Include soft-purged creative tombstones in the result set. When true
	IncludeWebhookActivity *bool              `json:"include_webhook_activity,omitempty"` // Include recent webhook activity per creative. When true, each returned
	WebhookActivityLimit   int                `json:"webhook_activity_limit,omitempty"`   // Maximum number of `webhook_activity[]` records to return per creative. Only
	Account                *AccountReference  `json:"account,omitempty"`                  // Account reference for pricing and access. When provided with include_pricing
	Fields                 []string           `json:"fields,omitempty"`                   // Specific fields to include in response (omit for all fields). The 'concept'
	Context                any                `json:"context,omitempty"`
	Ext                    any                `json:"ext,omitempty"`
}

ListCreativesRequest — Request parameters for querying creative assets from a creative library with filtering, sorting

type ListCreativesSort

type ListCreativesSort struct {
	Field     CreativeSortField `json:"field,omitempty"`     // Field to sort by
	Direction SortDirection     `json:"direction,omitempty"` // Sort direction
}

ListCreativesSort — Sorting parameters

type ListScenariosSuccess

type ListScenariosSuccess struct {
	Success   bool     `json:"success"`
	Scenarios []string `json:"scenarios"` // Scenarios this seller has implemented. Runners and sellers MUST accept unknown
	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 {
	AdcpVersion      string           `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion int              `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	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
	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
	Context          any              `json:"context,omitempty"`
	Ext              any              `json:"ext,omitempty"`
}

LogEventRequest — Request parameters for logging marketing events

type LogEventResult

type LogEventResult struct {
	EventsReceived  int `json:"events_received"`
	EventsProcessed int `json:"events_processed"`
}

type LogoSlot

type LogoSlot = string

LogoSlot — Canonical renderer-facing logo slot. Use when selecting a logo variant from

const (
	LogoSlotLogoCardLight      LogoSlot = "logo_card_light"
	LogoSlotLogoCardDark       LogoSlot = "logo_card_dark"
	LogoSlotProfileMark        LogoSlot = "profile_mark"
	LogoSlotFavicon            LogoSlot = "favicon"
	LogoSlotAppIcon            LogoSlot = "app_icon"
	LogoSlotSocialProfileMark  LogoSlot = "social_profile_mark"
	LogoSlotNavHeader          LogoSlot = "nav_header"
	LogoSlotFooter             LogoSlot = "footer"
	LogoSlotEmailHeader        LogoSlot = "email_header"
	LogoSlotWatermark          LogoSlot = "watermark"
	LogoSlotAdEndCard          LogoSlot = "ad_end_card"
	LogoSlotCoBrandLockup      LogoSlot = "co_brand_lockup"
	LogoSlotMarketplaceListing LogoSlot = "marketplace_listing"
)

func KnownLogoSlotValues

func KnownLogoSlotValues() []LogoSlot

KnownLogoSlotValues returns the current schema-defined values for LogoSlot.

func ParseLogoSlot

func ParseLogoSlot(s string) (LogoSlot, error)

ParseLogoSlot returns s as LogoSlot when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type MCPWebhookPayload

type MCPWebhookPayload struct {
	IdempotencyKey string       `json:"idempotency_key"`           // Sender-generated key stable across retries of the same webhook event.
	NotificationID string       `json:"notification_id,omitempty"` // Event-layer, per-state-event identifier. Stable across re-emissions of the
	OperationID    string       `json:"operation_id"`              // Client-generated correlation identifier for the operation that produced this
	TaskID         string       `json:"task_id"`                   // Unique identifier for this task. Use this to correlate webhook notifications
	TaskType       TaskType     `json:"task_type"`                 // Type of AdCP operation that triggered this webhook. Enables webhook handlers
	Protocol       AdcpProtocol `json:"protocol,omitempty"`        // AdCP protocol this task belongs to. Helps classify the operation type at a
	Status         TaskStatus   `json:"status"`                    // Current task status. Webhooks are triggered for status changes after initial
	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
	ContextID      string       `json:"context_id,omitempty"`      // Session/conversation identifier. Use this to continue the conversation if
	Token          string       `json:"token,omitempty"`           // Authentication token echoed verbatim from
	Result         any          `json:"result,omitempty"`          // Task-specific payload matching the status. For completed/failed, contains the
}

MCPWebhookPayload — Standard envelope for HTTP-based push notifications (MCP). This defines the wire format sent to

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

const (
	MakegoodRemedyAdditionalDelivery MakegoodRemedy = "additional_delivery"
	MakegoodRemedyCredit             MakegoodRemedy = "credit"
	MakegoodRemedyInvoiceAdjustment  MakegoodRemedy = "invoice_adjustment"
)

func KnownMakegoodRemedyValues

func KnownMakegoodRemedyValues() []MakegoodRemedy

KnownMakegoodRemedyValues returns the current schema-defined values for MakegoodRemedy.

func ParseMakegoodRemedy

func ParseMakegoodRemedy(s string) (MakegoodRemedy, error)

ParseMakegoodRemedy returns s as MakegoodRemedy when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type MarkdownFlavor

type MarkdownFlavor = string

MarkdownFlavor — Markdown specification flavors supported for text assets

const (
	MarkdownFlavorCommonmark MarkdownFlavor = "commonmark"
	MarkdownFlavorGfm        MarkdownFlavor = "gfm"
)

func KnownMarkdownFlavorValues

func KnownMarkdownFlavorValues() []MarkdownFlavor

KnownMarkdownFlavorValues returns the current schema-defined values for MarkdownFlavor.

func ParseMarkdownFlavor

func ParseMarkdownFlavor(s string) (MarkdownFlavor, error)

ParseMarkdownFlavor returns s as MarkdownFlavor when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type MatchIDType

type MatchIDType = string

MatchIDType — Identifier types for audience match reporting. Combines hashed PII types (from

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"
)

func KnownMatchIDTypeValues

func KnownMatchIDTypeValues() []MatchIDType

KnownMatchIDTypeValues returns the current schema-defined values for MatchIDType.

func ParseMatchIDType

func ParseMatchIDType(s string) (MatchIDType, error)

ParseMatchIDType returns s as MatchIDType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type MatchType

type MatchType = string

MatchType — Keyword targeting match type. broad: ads may serve on queries semantically

const (
	MatchTypeBroad  MatchType = "broad"
	MatchTypePhrase MatchType = "phrase"
	MatchTypeExact  MatchType = "exact"
)

func KnownMatchTypeValues

func KnownMatchTypeValues() []MatchType

KnownMatchTypeValues returns the current schema-defined values for MatchType.

func ParseMatchType

func ParseMatchType(s string) (MatchType, error)

ParseMatchType returns s as MatchType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type MatchingLatencyRange

type MatchingLatencyRange struct {
	Min *int `json:"min,omitempty"`
	Max *int `json:"max,omitempty"`
}

type MaterialDeadline

type MaterialDeadline struct {
	Stage string `json:"stage"`           // Submission stage identifier. Use 'draft' for materials that need seller
	DueAt string `json:"due_at"`          // When materials for this stage are due (ISO 8601)
	Label string `json:"label,omitempty"` // What the seller needs at this stage (e.g., 'Talking points and brand
}

MaterialDeadline — A deadline for creative material submission. Sellers declare stages to distinguish draft materials

type MeasurementReadiness

type MeasurementReadiness struct {
	Status             AssessmentStatus  `json:"status"`                         // Overall measurement readiness level for this product given the buyer's event
	RequiredEventTypes []EventType       `json:"required_event_types,omitempty"` // Event types this product needs for effective optimization. Buyers should
	MissingEventTypes  []EventType       `json:"missing_event_types,omitempty"`  // Event types this product requires that the buyer has not configured. Empty or
	Issues             []DiagnosticIssue `json:"issues,omitempty"`               // Actionable issues preventing full measurement readiness. Sellers should limit
	Notes              string            `json:"notes,omitempty"`                // Seller explanation of the readiness assessment, recommendations for
}

MeasurementReadiness — Per-product assessment of whether the buyer's event source setup is sufficient for the product's

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 MediaBuyActionMode

type MediaBuyActionMode = string

MediaBuyActionMode — How a seller honors a given action on a media buy. Buyers branch on this to

const (
	MediaBuyActionModeSelfServe            MediaBuyActionMode = "self_serve"
	MediaBuyActionModeConditionalSelfServe MediaBuyActionMode = "conditional_self_serve"
	MediaBuyActionModeRequiresApproval     MediaBuyActionMode = "requires_approval"
)

func KnownMediaBuyActionModeValues

func KnownMediaBuyActionModeValues() []MediaBuyActionMode

KnownMediaBuyActionModeValues returns the current schema-defined values for MediaBuyActionMode.

func ParseMediaBuyActionMode

func ParseMediaBuyActionMode(s string) (MediaBuyActionMode, error)

ParseMediaBuyActionMode returns s as MediaBuyActionMode when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type MediaBuyAvailableAction

type MediaBuyAvailableAction struct {
	Action   MediaBuyValidAction `json:"action"`              // The action identifier.
	Mode     MediaBuyActionMode  `json:"mode"`                // The single mode that applies right now on this buy for this action. Singular
	Sla      *SlaWindow          `json:"sla,omitempty"`       // Optional SLA commitment for this action on this buy. Absence means no
	TermsRef string              `json:"terms_ref,omitempty"` // Optional pointer into buy-terms negotiation (forward-references the buy-terms
}

MediaBuyAvailableAction — An action currently available on a media buy, resolved against the buy's current status

type MediaBuyBudget

type MediaBuyBudget struct {
	Amount   float64 `json:"amount"`   // Total budget amount
	Currency string  `json:"currency"` // ISO 4217 currency code
}

MediaBuyBudget — Total budget for the media buy when executing a proposal. The publisher applies the proposal's

type MediaBuyCapabilities

type MediaBuyCapabilities struct {
	SupportedPricingModels       []string                              `json:"supported_pricing_models,omitempty"`
	BuyingModes                  []string                              `json:"buying_modes,omitempty"`
	ReportingDeliveryMethods     []string                              `json:"reporting_delivery_methods,omitempty"`
	OfflineDeliveryProtocols     []string                              `json:"offline_delivery_protocols,omitempty"`
	SupportsProposals            *bool                                 `json:"supports_proposals,omitempty"`
	GovernanceAware              *bool                                 `json:"governance_aware,omitempty"`
	PropagationSurfaces          []string                              `json:"propagation_surfaces,omitempty"`
	CreativeApprovalMode         string                                `json:"creative_approval_mode,omitempty"`
	Features                     map[string]any                        `json:"features,omitempty"`
	Execution                    *MediaBuyExecution                    `json:"execution,omitempty"`
	AudienceTargeting            *AudienceTargetingCaps                `json:"audience_targeting,omitempty"`
	SupportedOptimizationMetrics []string                              `json:"supported_optimization_metrics,omitempty"`
	VendorMetricOptimization     *MediaBuyVendorMetricOptimizationCaps `json:"vendor_metric_optimization,omitempty"`
	ConversionTracking           *ConversionTrackingCaps               `json:"conversion_tracking,omitempty"`
	FrequencyCapping             *FrequencyCappingCaps                 `json:"frequency_capping,omitempty"`
	ContentStandards             *ContentStandardsCaps                 `json:"content_standards,omitempty"`
	Portfolio                    *PortfolioCaps                        `json:"portfolio,omitempty"`
}

MediaBuyCapabilities is the media_buy protocol capability block.

type MediaBuyDailyBreakdown

type MediaBuyDailyBreakdown struct {
	Date            string  `json:"date"`                        // Date (YYYY-MM-DD)
	Impressions     float64 `json:"impressions"`                 // Daily impressions
	Spend           float64 `json:"spend"`                       // Daily spend
	Conversions     float64 `json:"conversions,omitempty"`       // Daily conversions
	ConversionValue float64 `json:"conversion_value,omitempty"`  // Daily conversion value
	Roas            float64 `json:"roas,omitempty"`              // Daily return on ad spend (conversion_value / spend)
	NewToBrandRate  float64 `json:"new_to_brand_rate,omitempty"` // Daily fraction of conversions from first-time brand buyers (0 = none, 1 = all)
}

type MediaBuyData

type MediaBuyData struct {
	MediaBuyID       string                    `json:"media_buy_id"`
	Account          *Account                  `json:"account,omitempty"`
	Status           string                    `json:"status"`
	Health           string                    `json:"health,omitempty"`
	Impairments      []Impairment              `json:"impairments,omitempty"`
	AvailableActions []MediaBuyAvailableAction `json:"available_actions,omitempty"`
	Currency         string                    `json:"currency"`
	TotalBudget      float64                   `json:"total_budget"`
	StartTime        string                    `json:"start_time,omitempty"`
	EndTime          string                    `json:"end_time,omitempty"`
	InvoiceRecipient *BusinessEntity           `json:"invoice_recipient,omitempty"`
	ConfirmedAt      string                    `json:"confirmed_at,omitempty"`
	Cancellation     any                       `json:"cancellation,omitempty"`
	CreativeDeadline string                    `json:"creative_deadline,omitempty"`
	Revision         int                       `json:"revision,omitempty"`
	CreatedAt        string                    `json:"created_at,omitempty"`
	UpdatedAt        string                    `json:"updated_at,omitempty"`
	ValidActions     []string                  `json:"valid_actions,omitempty"`
	History          []MediaBuyHistoryEntry    `json:"history,omitempty"`
	Packages         []PackageStatus           `json:"packages"`
	Context          any                       `json:"context,omitempty"`
	Ext              any                       `json:"ext,omitempty"`
}

MediaBuyData is one item in a get_media_buys response.

func (MediaBuyData) MarshalJSON

func (d MediaBuyData) MarshalJSON() ([]byte, error)

MarshalJSON preserves an explicitly empty valid_actions array. In the protocol, [] means no actions are available; omission means the seller did not say.

type MediaBuyDelivery

type MediaBuyDelivery struct {
	MediaBuyID           string                   `json:"media_buy_id"`                    // Seller's media buy identifier
	Status               string                   `json:"status"`                          // Current media buy status. Lifecycle states use the same taxonomy as
	ExpectedAvailability string                   `json:"expected_availability,omitempty"` // When delayed data is expected to be available (only present when status is
	IsAdjusted           *bool                    `json:"is_adjusted,omitempty"`           // Indicates this delivery contains updated data for a previously reported
	IsFinal              *bool                    `json:"is_final,omitempty"`              // Whether this row's delivery data is final for the reporting period. The row
	FinalizedAt          string                   `json:"finalized_at,omitempty"`          // ISO 8601 timestamp at which this row became final. Present only when
	PricingModel         PricingModel             `json:"pricing_model,omitempty"`         // Pricing model used for this media buy
	Totals               MediaBuyDeliveryTotals   `json:"totals"`
	ByPackage            []PackageDelivery        `json:"by_package"`                // Metrics broken down by package
	Windows              []DeliveryWindow         `json:"windows,omitempty"`         // Per-window delivery slices over the reporting period at the requested
	DailyBreakdown       []MediaBuyDailyBreakdown `json:"daily_breakdown,omitempty"` // Day-by-day delivery
}

type MediaBuyDeliveryTotals

type MediaBuyDeliveryTotals struct {
	Impressions          float64                       `json:"impressions,omitempty"`             // Impressions delivered
	Spend                float64                       `json:"spend"`                             // 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
	CompletedViews       float64                       `json:"completed_views,omitempty"`         // Video/audio completions. When the package has a completed_views optimization
	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
	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` (transactions) from first-time brand buyers, 0 =
	Leads                float64                       `json:"leads,omitempty"`                   // Leads generated (convenience alias for by_event_type where event_type='lead')
	IncrementalSalesLift float64                       `json:"incremental_sales_lift,omitempty"`  // Incremental sales lift attributed to the campaign — sales above the
	BrandLift            float64                       `json:"brand_lift,omitempty"`              // Brand lift — measured change in a brand metric (awareness, consideration
	FootTraffic          float64                       `json:"foot_traffic,omitempty"`            // Store visits attributed to ad exposure. Count of incremental visits over
	ConversionLift       float64                       `json:"conversion_lift,omitempty"`         // Incremental conversions attributed to the campaign — conversions above the
	BrandSearchLift      float64                       `json:"brand_search_lift,omitempty"`       // Lift in brand search query volume attributed to the campaign — measured via
	Plays                float64                       `json:"plays,omitempty"`                   // Number of times the ad creative was displayed on a DOOH screen or played in a
	ByEventType          []DeliveryEventTypeMetrics    `json:"by_event_type,omitempty"`           // Conversion metrics broken down by event type. Spend-derived metrics (ROAS
	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
	ReachUnit            *ReachUnit                    `json:"reach_unit,omitempty"`              // Unit of measurement for the reach field. Aligns with the reach_unit declared
	ReachWindow          *ReachWindow                  `json:"reach_window,omitempty"`            // Measurement window for the reported `reach` and `frequency` values in this
	Frequency            float64                       `json:"frequency,omitempty"`               // Average frequency per reach unit, measured over the window declared in
	QuartileData         *DeliveryQuartileData         `json:"quartile_data,omitempty"`           // Audio/video quartile completion data
	DoohMetrics          *DeliveryDOOHMetrics          `json:"dooh_metrics,omitempty"`            // DOOH-specific metrics (only included for DOOH campaigns)
	Viewability          *DeliveryViewability          `json:"viewability,omitempty"`             // Viewability metrics. Viewable rate should be calculated as
	Engagements          float64                       `json:"engagements,omitempty"`             // Total engagements — direct interactions with the ad beyond viewing. Includes
	Follows              float64                       `json:"follows,omitempty"`                 // New followers, page likes, artist/podcast/channel follows, or free
	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
	EngagementRate       float64                       `json:"engagement_rate,omitempty"`         // Platform-specific engagement rate (0.0 to 1.0). Typically
	CostPerClick         float64                       `json:"cost_per_click,omitempty"`          // Cost per click (spend / clicks)
	CostPerCompletedView float64                       `json:"cost_per_completed_view,omitempty"` // Cost per completed view (spend / completed_views). Primary CPCV pricing scalar
	CPM                  float64                       `json:"cpm,omitempty"`                     // Cost per thousand impressions, computed as (spend / impressions) × 1000.
	Downloads            float64                       `json:"downloads,omitempty"`               // Audio/podcast downloads (IAB Podcast Measurement Technical Guidelines 2.x
	UnitsSold            float64                       `json:"units_sold,omitempty"`              // Items sold attributed to this delivery. Retail-media scalar distinct from
	NewToBrandUnits      float64                       `json:"new_to_brand_units,omitempty"`      // Units sold to first-time brand buyers (count, not rate). Retail-media scalar —
	ByActionSource       []DeliveryActionSourceMetrics `json:"by_action_source,omitempty"`        // Conversion metrics broken down by action source (website, app, in_store
	VendorMetricValues   []VendorMetricValue           `json:"vendor_metric_values,omitempty"`    // Reported values for vendor-defined metrics that the product's
	EffectiveRate        float64                       `json:"effective_rate,omitempty"`          // Effective rate paid per unit based on pricing_model (e.g., actual CPM for
}

type MediaBuyExecution

type MediaBuyExecution struct {
	TrustedMatch    *TrustedMatchCaps  `json:"trusted_match,omitempty"`
	AxeIntegrations []string           `json:"axe_integrations,omitempty"`
	CreativeSpecs   *CreativeSpecsCaps `json:"creative_specs,omitempty"`
	Targeting       *TargetingCaps     `json:"targeting,omitempty"`
}

MediaBuyExecution describes technical execution capabilities for media buying.

type MediaBuyFeatures

type MediaBuyFeatures struct {
	InlineCreativeManagement  *bool `json:"inline_creative_management,omitempty"`  // Supports creatives provided inline in create_media_buy and update_media_buy
	PropertyListFiltering     *bool `json:"property_list_filtering,omitempty"`     // Honors property_list parameter in get_products to filter results to
	CatalogManagement         *bool `json:"catalog_management,omitempty"`          // Supports sync_catalogs task for catalog feed management with platform review
	CommittedMetricsSupported *bool `json:"committed_metrics_supported,omitempty"` // Seller has per-package snapshot infrastructure for the reporting contract.
}

MediaBuyFeatures — Optional media-buy protocol features. Used in capability declarations (seller declares support)

type MediaBuyHealth

type MediaBuyHealth = string

MediaBuyHealth — Aggregate health of a media buy based on upstream dependency state. Orthogonal

const (
	MediaBuyHealthOk       MediaBuyHealth = "ok"
	MediaBuyHealthImpaired MediaBuyHealth = "impaired"
)

func KnownMediaBuyHealthValues

func KnownMediaBuyHealthValues() []MediaBuyHealth

KnownMediaBuyHealthValues returns the current schema-defined values for MediaBuyHealth.

func ParseMediaBuyHealth

func ParseMediaBuyHealth(s string) (MediaBuyHealth, error)

ParseMediaBuyHealth returns s as MediaBuyHealth when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type MediaBuyHistoryEntry

type MediaBuyHistoryEntry struct {
	Revision  int    `json:"revision"`
	Timestamp string `json:"timestamp"`
	Actor     string `json:"actor,omitempty"`
	Action    string `json:"action"`
	Summary   string `json:"summary,omitempty"`
	PackageID string `json:"package_id,omitempty"`
	Ext       any    `json:"ext,omitempty"`
}

MediaBuyHistoryEntry is a get_media_buys revision history entry.

type MediaBuyListItem

type MediaBuyListItem struct {
	MediaBuyID string    `json:"media_buy_id"`
	Status     string    `json:"status"`
	Currency   string    `json:"currency"`
	Packages   []Package `json:"packages"`
}

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"
)

func KnownMediaBuyStatusValues

func KnownMediaBuyStatusValues() []MediaBuyStatus

KnownMediaBuyStatusValues returns the current schema-defined values for MediaBuyStatus.

func ParseMediaBuyStatus

func ParseMediaBuyStatus(s string) (MediaBuyStatus, error)

ParseMediaBuyStatus returns s as MediaBuyStatus when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type MediaBuyStatusFilter

type MediaBuyStatusFilter []MediaBuyStatus

MediaBuyStatusFilter — Filter by status. Can be a single status or array of statuses MediaBuyStatusFilter preserves unknown values for forward compatibility. It validates only scalar-or-array shape and array cardinality.

func NewMediaBuyStatusFilter

func NewMediaBuyStatusFilter(values ...MediaBuyStatus) *MediaBuyStatusFilter

NewMediaBuyStatusFilter returns a pointer to a MediaBuyStatusFilter containing values. It returns nil when called with no values so optional fields omit instead of triggering a MarshalJSON error on a schema-invalid empty array.

func (MediaBuyStatusFilter) MarshalJSON

func (v MediaBuyStatusFilter) MarshalJSON() ([]byte, error)

func (*MediaBuyStatusFilter) UnmarshalJSON

func (v *MediaBuyStatusFilter) UnmarshalJSON(data []byte) error

type MediaBuyValidAction

type MediaBuyValidAction = string

MediaBuyValidAction — Actions the buyer can perform on a media buy. Used as the action identifier in

const (
	MediaBuyValidActionPause                     MediaBuyValidAction = "pause"
	MediaBuyValidActionResume                    MediaBuyValidAction = "resume"
	MediaBuyValidActionCancel                    MediaBuyValidAction = "cancel"
	MediaBuyValidActionExtendFlight              MediaBuyValidAction = "extend_flight"
	MediaBuyValidActionShortenFlight             MediaBuyValidAction = "shorten_flight"
	MediaBuyValidActionUpdateFlightDates         MediaBuyValidAction = "update_flight_dates"
	MediaBuyValidActionIncreaseBudget            MediaBuyValidAction = "increase_budget"
	MediaBuyValidActionDecreaseBudget            MediaBuyValidAction = "decrease_budget"
	MediaBuyValidActionReallocateBudget          MediaBuyValidAction = "reallocate_budget"
	MediaBuyValidActionUpdateTargeting           MediaBuyValidAction = "update_targeting"
	MediaBuyValidActionUpdatePacing              MediaBuyValidAction = "update_pacing"
	MediaBuyValidActionUpdateFrequencyCaps       MediaBuyValidAction = "update_frequency_caps"
	MediaBuyValidActionReplaceCreative           MediaBuyValidAction = "replace_creative"
	MediaBuyValidActionUpdateCreativeAssignments MediaBuyValidAction = "update_creative_assignments"
	MediaBuyValidActionRemoveCreative            MediaBuyValidAction = "remove_creative"
	MediaBuyValidActionAddPackages               MediaBuyValidAction = "add_packages"
	MediaBuyValidActionRemovePackages            MediaBuyValidAction = "remove_packages"
	MediaBuyValidActionUpdateBudget              MediaBuyValidAction = "update_budget"
	MediaBuyValidActionUpdateDates               MediaBuyValidAction = "update_dates"
	MediaBuyValidActionUpdatePackages            MediaBuyValidAction = "update_packages"
	MediaBuyValidActionSyncCreatives             MediaBuyValidAction = "sync_creatives"
)

func KnownMediaBuyValidActionValues

func KnownMediaBuyValidActionValues() []MediaBuyValidAction

KnownMediaBuyValidActionValues returns the current schema-defined values for MediaBuyValidAction.

func ParseMediaBuyValidAction

func ParseMediaBuyValidAction(s string) (MediaBuyValidAction, error)

ParseMediaBuyValidAction returns s as MediaBuyValidAction when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type MediaBuyVendorMetricOptimizationCaps

type MediaBuyVendorMetricOptimizationCaps struct {
	SupportedTargets []string `json:"supported_targets,omitempty"`
}

type MetricQualifier

type MetricQualifier struct {
	ViewabilityStandard    ViewabilityStandard    `json:"viewability_standard,omitempty"`    // Viewability standard the seller commits to for this metric. MUST be set when
	CompletionSource       CompletionSource       `json:"completion_source,omitempty"`       // Source of `completion_rate` attestation. MUST be set when `metric_id` is
	AttributionMethodology AttributionMethodology `json:"attribution_methodology,omitempty"` // How attribution between ad exposure and outcome events was computed. SHOULD be
	AttributionWindow      *Duration              `json:"attribution_window,omitempty"`      // Time window over which outcome attribution is computed. **Object-valued, not
	LiftDimension          LiftDimension          `json:"lift_dimension,omitempty"`          // Which dimension of `brand_lift` this row represents — awareness
}

MetricQualifier — Disambiguates metrics whose definition varies by qualifier. Today carries five keys —

type MetricScope

type MetricScope = string

MetricScope — Discriminator for entries in unified metric arrays (`committed_metrics`

const (
	MetricScopeStandard MetricScope = "standard"
	MetricScopeVendor   MetricScope = "vendor"
)

func KnownMetricScopeValues

func KnownMetricScopeValues() []MetricScope

KnownMetricScopeValues returns the current schema-defined values for MetricScope.

func ParseMetricScope

func ParseMetricScope(s string) (MetricScope, error)

ParseMetricScope returns s as MetricScope when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type MetricType

type MetricType = string

MetricType — **Deprecated as of this minor.** Legacy free-form enum mixing metrics

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"
)

func KnownMetricTypeValues

func KnownMetricTypeValues() []MetricType

KnownMetricTypeValues returns the current schema-defined values for MetricType.

func ParseMetricType

func ParseMetricType(s string) (MetricType, error)

ParseMetricType returns s as MetricType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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"
)

func KnownMetroSystemValues

func KnownMetroSystemValues() []MetroSystem

KnownMetroSystemValues returns the current schema-defined values for MetroSystem.

func ParseMetroSystem

func ParseMetroSystem(s string) (MetroSystem, error)

ParseMetroSystem returns s as MetroSystem when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type MissingMetric

type MissingMetric struct {
	Scope     string           `json:"scope,omitempty"`
	MetricID  string           `json:"metric_id,omitempty"`
	Qualifier *MetricQualifier `json:"qualifier,omitempty"` // Mirrors the qualifier on `committed_metrics` so the missing entry preserves
	Vendor    *BrandReference  `json:"vendor,omitempty"`
}

MissingMetric — One metric the binding reporting contract declared but that is not populated in a delivery report.

type MoovAtomPosition

type MoovAtomPosition = string

MoovAtomPosition — Position of the moov atom in an MP4 container. 'start' enables progressive

const (
	MoovAtomPositionStart MoovAtomPosition = "start"
	MoovAtomPositionEnd   MoovAtomPosition = "end"
)

func KnownMoovAtomPositionValues

func KnownMoovAtomPositionValues() []MoovAtomPosition

KnownMoovAtomPositionValues returns the current schema-defined values for MoovAtomPosition.

func ParseMoovAtomPosition

func ParseMoovAtomPosition(s string) (MoovAtomPosition, error)

ParseMoovAtomPosition returns s as MoovAtomPosition when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type NegativeKeywordTarget

type NegativeKeywordTarget struct {
	Keyword   string    `json:"keyword"` // The keyword to exclude
	MatchType MatchType `json:"match_type"`
}

type NotificationConfig

type NotificationConfig struct {
	SubscriberID   string                       `json:"subscriber_id"`            // Buyer-supplied identifier for this subscription endpoint. This is the stable
	URL            string                       `json:"url"`                      // Webhook endpoint URL. Same wire contract as `push-notification-config.url` —
	EventTypes     []NotificationType           `json:"event_types"`              // Notification types this subscriber wishes to receive on the registered `url`.
	Authentication *LegacyWebhookAuthentication `json:"authentication,omitempty"` // Legacy authentication selector. Same precedence and semantics as
	Active         *bool                        `json:"active,omitempty"`         // When false, the seller persists the configuration but suppresses fires. Use to
	Ext            any                          `json:"ext,omitempty"`
}

NotificationConfig — Account-level webhook subscription for notifications whose lifecycle outlives any single media buy

type NotificationType

type NotificationType = string

NotificationType — Type of push notification fired by a seller agent. Media-buy-anchored

const (
	NotificationTypeScheduled               NotificationType = "scheduled"
	NotificationTypeFinal                   NotificationType = "final"
	NotificationTypeDelayed                 NotificationType = "delayed"
	NotificationTypeAdjusted                NotificationType = "adjusted"
	NotificationTypeImpairment              NotificationType = "impairment"
	NotificationTypeCreativeStatusChanged   NotificationType = "creative.status_changed"
	NotificationTypeCreativePurged          NotificationType = "creative.purged"
	NotificationTypeProductCreated          NotificationType = "product.created"
	NotificationTypeProductUpdated          NotificationType = "product.updated"
	NotificationTypeProductPriced           NotificationType = "product.priced"
	NotificationTypeProductRemoved          NotificationType = "product.removed"
	NotificationTypeSignalCreated           NotificationType = "signal.created"
	NotificationTypeSignalUpdated           NotificationType = "signal.updated"
	NotificationTypeSignalPriced            NotificationType = "signal.priced"
	NotificationTypeSignalRemoved           NotificationType = "signal.removed"
	NotificationTypeWholesaleFeedBulkChange NotificationType = "wholesale_feed.bulk_change"
)

func KnownNotificationTypeValues

func KnownNotificationTypeValues() []NotificationType

KnownNotificationTypeValues returns the current schema-defined values for NotificationType.

func ParseNotificationType

func ParseNotificationType(s string) (NotificationType, error)

ParseNotificationType returns s as NotificationType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type OfferingAvailabilityStatus

type OfferingAvailabilityStatus = string

OfferingAvailabilityStatus — Machine-readable availability state for an SI offering or a matching product.

const (
	OfferingAvailabilityStatusAvailable        OfferingAvailabilityStatus = "available"
	OfferingAvailabilityStatusLimited          OfferingAvailabilityStatus = "limited"
	OfferingAvailabilityStatusSoldOut          OfferingAvailabilityStatus = "sold_out"
	OfferingAvailabilityStatusExpired          OfferingAvailabilityStatus = "expired"
	OfferingAvailabilityStatusRegionRestricted OfferingAvailabilityStatus = "region_restricted"
	OfferingAvailabilityStatusInactive         OfferingAvailabilityStatus = "inactive"
)

func KnownOfferingAvailabilityStatusValues

func KnownOfferingAvailabilityStatusValues() []OfferingAvailabilityStatus

KnownOfferingAvailabilityStatusValues returns the current schema-defined values for OfferingAvailabilityStatus.

func ParseOfferingAvailabilityStatus

func ParseOfferingAvailabilityStatus(s string) (OfferingAvailabilityStatus, error)

ParseOfferingAvailabilityStatus returns s as OfferingAvailabilityStatus when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type OptimizationGoal

type OptimizationGoal struct {
	Kind                string                             `json:"kind,omitempty"`
	Metric              string                             `json:"metric,omitempty"`
	ReachUnit           string                             `json:"reach_unit,omitempty"`
	TargetFrequency     *OptimizationGoalTargetFrequency   `json:"target_frequency,omitempty"`
	ViewDurationSeconds float64                            `json:"view_duration_seconds,omitempty"`
	Target              OptimizationGoalTarget             `json:"target,omitempty"`
	Priority            int                                `json:"priority,omitempty"`
	EventSources        []OptimizationGoalEventSource      `json:"event_sources,omitempty"`
	AttributionWindow   *OptimizationGoalAttributionWindow `json:"attribution_window,omitempty"`
	Extra               map[string]any                     `json:"-"`
}

OptimizationGoal is a flattened representation of the optimization-goal oneOf. Extra preserves schema-allowed future fields so read-modify-write callers do not strip unknown goal metadata on replacement updates. Extra keys that collide with typed fields are ignored when marshaling; set the typed field instead.

func (OptimizationGoal) MarshalJSON

func (g OptimizationGoal) MarshalJSON() ([]byte, error)

func (*OptimizationGoal) UnmarshalJSON

func (g *OptimizationGoal) UnmarshalJSON(data []byte) error

func (OptimizationGoal) Validate

func (g OptimizationGoal) Validate(opts ...ValidationOption) []ValidationIssue

Validate checks required fields and current-schema invariants that Go zero values cannot express. Call it before submitting package requests or updates that include optimization_goals. OptimizationGoal is a flattened Go representation of the schema oneOf, so branch-specific fields are validated only for the active kind. For example, AttributionWindow is validated for event goals but ignored for metric goals.

type OptimizationGoalAttributionWindow

type OptimizationGoalAttributionWindow struct {
	PostClick *Duration        `json:"post_click,omitempty"` // Post-click attribution window. Conversions occurring within this duration
	PostView  *Duration        `json:"post_view,omitempty"`  // Post-view attribution window. Conversions occurring within this duration after
	Model     AttributionModel `json:"model,omitempty"`      // Attribution model used to assign credit when multiple touchpoints exist.
}

OptimizationGoalAttributionWindow — Attribution window for this optimization goal — references the canonical `attribution-window`

type OptimizationGoalCostPerTarget

type OptimizationGoalCostPerTarget struct {
	Kind  string         `json:"kind"`
	Value float64        `json:"value"`
	Extra map[string]any `json:"-"`
}

OptimizationGoalCostPerTarget is a target cost per unit of the metric or conversion event. MarshalJSON emits kind=cost_per.

func (OptimizationGoalCostPerTarget) MarshalJSON

func (t OptimizationGoalCostPerTarget) MarshalJSON() ([]byte, error)

func (*OptimizationGoalCostPerTarget) UnmarshalJSON

func (t *OptimizationGoalCostPerTarget) UnmarshalJSON(data []byte) error

type OptimizationGoalEventSource

type OptimizationGoalEventSource struct {
	EventSourceID   string    `json:"event_source_id"`             // Event source to include (must be configured on this account via
	EventType       EventType `json:"event_type"`                  // Event type to include from this source (e.g., purchase, lead, app_install
	CustomEventName string    `json:"custom_event_name,omitempty"` // Required when event_type is 'custom'. Platform-specific name for the custom
	ValueField      string    `json:"value_field,omitempty"`       // Which field in the event's custom_data carries the monetary value. The seller
	ValueFactor     *float64  `json:"value_factor,omitempty"`      // Multiplier the seller must apply to value_field before aggregation. Use -1 for
}

type OptimizationGoalMaximizeValueTarget

type OptimizationGoalMaximizeValueTarget struct {
	Kind  string         `json:"kind"`
	Extra map[string]any `json:"-"`
}

OptimizationGoalMaximizeValueTarget maximizes total conversion value within budget. MarshalJSON emits kind=maximize_value.

func (OptimizationGoalMaximizeValueTarget) MarshalJSON

func (t OptimizationGoalMaximizeValueTarget) MarshalJSON() ([]byte, error)

func (*OptimizationGoalMaximizeValueTarget) UnmarshalJSON

func (t *OptimizationGoalMaximizeValueTarget) UnmarshalJSON(data []byte) error

type OptimizationGoalPerAdSpendTarget

type OptimizationGoalPerAdSpendTarget struct {
	Kind  string         `json:"kind"`
	Value float64        `json:"value"`
	Extra map[string]any `json:"-"`
}

OptimizationGoalPerAdSpendTarget is a return per unit of ad spend target. MarshalJSON emits kind=per_ad_spend.

func (OptimizationGoalPerAdSpendTarget) MarshalJSON

func (t OptimizationGoalPerAdSpendTarget) MarshalJSON() ([]byte, error)

func (*OptimizationGoalPerAdSpendTarget) UnmarshalJSON

func (t *OptimizationGoalPerAdSpendTarget) UnmarshalJSON(data []byte) error

type OptimizationGoalRawTarget

type OptimizationGoalRawTarget struct {
	Kind  string         `json:"kind,omitempty"`
	Extra map[string]any `json:"-"`
}

OptimizationGoalRawTarget preserves unknown future target variants.

func (OptimizationGoalRawTarget) MarshalJSON

func (t OptimizationGoalRawTarget) MarshalJSON() ([]byte, error)

func (*OptimizationGoalRawTarget) UnmarshalJSON

func (t *OptimizationGoalRawTarget) UnmarshalJSON(data []byte) error

type OptimizationGoalTarget

type OptimizationGoalTarget interface {
	// contains filtered or unexported methods
}

OptimizationGoalTarget is a typed optimization-goal target variant. Unknown future target objects decode as *OptimizationGoalRawTarget. Go types do not enforce which target kinds are legal for metric vs event goals; sellers should still validate the full OptimizationGoal against the schema and their product capabilities.

type OptimizationGoalTargetFrequency

type OptimizationGoalTargetFrequency struct {
	Min    int      `json:"min,omitempty"` // Minimum frequency for an entity to be considered meaningfully reached within
	Max    int      `json:"max,omitempty"` // Frequency at which an entity is considered saturated within the window.
	Window Duration `json:"window"`        // Time window over which frequency is measured (e.g. {"interval": 7, "unit"
}

OptimizationGoalTargetFrequency — Target frequency band for reach optimization. Only applicable when metric is 'reach'. Frames

type OptimizationGoalThresholdRateTarget

type OptimizationGoalThresholdRateTarget struct {
	Kind  string         `json:"kind"`
	Value float64        `json:"value"`
	Extra map[string]any `json:"-"`
}

OptimizationGoalThresholdRateTarget is a minimum per-impression target rate. MarshalJSON emits kind=threshold_rate.

func (OptimizationGoalThresholdRateTarget) MarshalJSON

func (t OptimizationGoalThresholdRateTarget) MarshalJSON() ([]byte, error)

func (*OptimizationGoalThresholdRateTarget) UnmarshalJSON

func (t *OptimizationGoalThresholdRateTarget) UnmarshalJSON(data []byte) error

type OptimizationMetric

type OptimizationMetric = string

OptimizationMetric — Seller-native metric to optimize for. Delivery metrics: clicks (link clicks

const (
	OptimizationMetricClicks           OptimizationMetric = "clicks"
	OptimizationMetricViews            OptimizationMetric = "views"
	OptimizationMetricCompletedViews   OptimizationMetric = "completed_views"
	OptimizationMetricViewedSeconds    OptimizationMetric = "viewed_seconds"
	OptimizationMetricAttentionSeconds OptimizationMetric = "attention_seconds"
	OptimizationMetricAttentionScore   OptimizationMetric = "attention_score"
	OptimizationMetricEngagements      OptimizationMetric = "engagements"
	OptimizationMetricFollows          OptimizationMetric = "follows"
	OptimizationMetricSaves            OptimizationMetric = "saves"
	OptimizationMetricProfileVisits    OptimizationMetric = "profile_visits"
	OptimizationMetricReach            OptimizationMetric = "reach"
)

func KnownOptimizationMetricValues

func KnownOptimizationMetricValues() []OptimizationMetric

KnownOptimizationMetricValues returns the current schema-defined values for OptimizationMetric.

func ParseOptimizationMetric

func ParseOptimizationMetric(s string) (OptimizationMetric, error)

ParseOptimizationMetric returns s as OptimizationMetric when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type OutcomeMeasurement

type OutcomeMeasurement struct {
	Type        string    `json:"type"`             // Type of measurement
	Attribution string    `json:"attribution"`      // Attribution methodology
	Window      *Duration `json:"window,omitempty"` // Attribution window as a structured duration (e.g., {"interval": 30, "unit"
	Reporting   string    `json:"reporting"`        // Reporting frequency and format
}

OutcomeMeasurement — **Deprecated as of this minor.** Predates the unified measurement-vocabulary pattern. Outcome

type OutcomeType

type OutcomeType = string

OutcomeType — The type of outcome reported to a campaign governance agent after a seller

const (
	OutcomeTypeCompleted OutcomeType = "completed"
	OutcomeTypeFailed    OutcomeType = "failed"
	OutcomeTypeDelivery  OutcomeType = "delivery"
)

func KnownOutcomeTypeValues

func KnownOutcomeTypeValues() []OutcomeType

KnownOutcomeTypeValues returns the current schema-defined values for OutcomeType.

func ParseOutcomeType

func ParseOutcomeType(s string) (OutcomeType, error)

ParseOutcomeType returns s as OutcomeType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type Pacing

type Pacing = string

Pacing — Budget pacing strategy

const (
	PacingEven        Pacing = "even"
	PacingAsap        Pacing = "asap"
	PacingFrontLoaded Pacing = "front_loaded"
)

func KnownPacingValues

func KnownPacingValues() []Pacing

KnownPacingValues returns the current schema-defined values for Pacing.

func ParsePacing

func ParsePacing(s string) (Pacing, error)

ParsePacing returns s as Pacing when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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. For packages created from an
	Budget               float64               `json:"budget,omitempty"`     // Budget allocation for this package in the currency specified by the pricing
	Pacing               Pacing                `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
	PriceBreakdown       *PriceBreakdown       `json:"price_breakdown,omitempty"`    // Breakdown of the effective price for this package. On fixed-price packages
	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.
	FormatIDs            []FormatRef           `json:"format_ids,omitempty"`         // Legacy named-format IDs supplied for this package on create_media_buy. Sellers
	FormatOptionRefs     []FormatOptionRef     `json:"format_option_refs,omitempty"` // Structured 3.1+ format option references supplied for this package on
	FormatKind           string                `json:"format_kind,omitempty"`        // Direct canonical selector supplied for this package on create_media_buy.
	Params               map[string]any        `json:"params,omitempty"`             // Parameters for the direct canonical selector in `format_kind`, echoed from the
	TargetingOverlay     *Targeting            `json:"targeting_overlay,omitempty"`
	MeasurementTerms     *MeasurementTerms     `json:"measurement_terms,omitempty"`      // Agreed billing measurement and makegood terms for this package. Reflects what
	PerformanceStandards []PerformanceStandard `json:"performance_standards,omitempty"`  // Agreed performance standards for this package. When any entry specifies a
	CommittedMetrics     []CommittedMetric     `json:"committed_metrics,omitempty"`      // The binding reporting contract for this package — what the seller has agreed
	CreativeAssignments  []CreativeAssignment  `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    []OptimizationGoal    `json:"optimization_goals,omitempty"`     // Optimization targets for this package. The seller optimizes delivery toward
	StartTime            string                `json:"start_time,omitempty"`             // Flight start date/time for this package in ISO 8601 format. When omitted, the
	EndTime              string                `json:"end_time,omitempty"`               // Flight end date/time for this package in ISO 8601 format. When omitted, the
	Paused               *bool                 `json:"paused,omitempty"`                 // Whether this package is paused by the buyer. Paused packages do not deliver
	Canceled             *bool                 `json:"canceled,omitempty"`               // Whether this package has been canceled. Canceled packages stop delivery and
	Cancellation         *PackageCancellation  `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
	CreativeDeadline     string                `json:"creative_deadline,omitempty"`      // ISO 8601 timestamp for creative upload or change deadline for this package.
	Context              any                   `json:"context,omitempty"`                // Opaque package-level correlation data echoed unchanged in responses, webhooks
	Ext                  any                   `json:"ext,omitempty"`
}

Package — A specific product within a media buy (line item)

type PackageAudienceDelivery

type PackageAudienceDelivery struct {
	Impressions          float64                       `json:"impressions"`                       // Impressions delivered
	Spend                float64                       `json:"spend"`                             // 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
	CompletedViews       float64                       `json:"completed_views,omitempty"`         // Video/audio completions. When the package has a completed_views optimization
	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
	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` (transactions) from first-time brand buyers, 0 =
	Leads                float64                       `json:"leads,omitempty"`                   // Leads generated (convenience alias for by_event_type where event_type='lead')
	IncrementalSalesLift float64                       `json:"incremental_sales_lift,omitempty"`  // Incremental sales lift attributed to the campaign — sales above the
	BrandLift            float64                       `json:"brand_lift,omitempty"`              // Brand lift — measured change in a brand metric (awareness, consideration
	FootTraffic          float64                       `json:"foot_traffic,omitempty"`            // Store visits attributed to ad exposure. Count of incremental visits over
	ConversionLift       float64                       `json:"conversion_lift,omitempty"`         // Incremental conversions attributed to the campaign — conversions above the
	BrandSearchLift      float64                       `json:"brand_search_lift,omitempty"`       // Lift in brand search query volume attributed to the campaign — measured via
	Plays                float64                       `json:"plays,omitempty"`                   // Number of times the ad creative was displayed on a DOOH screen or played in a
	ByEventType          []DeliveryEventTypeMetrics    `json:"by_event_type,omitempty"`           // Conversion metrics broken down by event type. Spend-derived metrics (ROAS
	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
	ReachUnit            *ReachUnit                    `json:"reach_unit,omitempty"`              // Unit of measurement for the reach field. Aligns with the reach_unit declared
	ReachWindow          *ReachWindow                  `json:"reach_window,omitempty"`            // Measurement window for the reported `reach` and `frequency` values in this
	Frequency            float64                       `json:"frequency,omitempty"`               // Average frequency per reach unit, measured over the window declared in
	QuartileData         *DeliveryQuartileData         `json:"quartile_data,omitempty"`           // Audio/video quartile completion data
	DoohMetrics          *DeliveryDOOHMetrics          `json:"dooh_metrics,omitempty"`            // DOOH-specific metrics (only included for DOOH campaigns)
	Viewability          *DeliveryViewability          `json:"viewability,omitempty"`             // Viewability metrics. Viewable rate should be calculated as
	Engagements          float64                       `json:"engagements,omitempty"`             // Total engagements — direct interactions with the ad beyond viewing. Includes
	Follows              float64                       `json:"follows,omitempty"`                 // New followers, page likes, artist/podcast/channel follows, or free
	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
	EngagementRate       float64                       `json:"engagement_rate,omitempty"`         // Platform-specific engagement rate (0.0 to 1.0). Typically
	CostPerClick         float64                       `json:"cost_per_click,omitempty"`          // Cost per click (spend / clicks)
	CostPerCompletedView float64                       `json:"cost_per_completed_view,omitempty"` // Cost per completed view (spend / completed_views). Primary CPCV pricing scalar
	CPM                  float64                       `json:"cpm,omitempty"`                     // Cost per thousand impressions, computed as (spend / impressions) × 1000.
	Downloads            float64                       `json:"downloads,omitempty"`               // Audio/podcast downloads (IAB Podcast Measurement Technical Guidelines 2.x
	UnitsSold            float64                       `json:"units_sold,omitempty"`              // Items sold attributed to this delivery. Retail-media scalar distinct from
	NewToBrandUnits      float64                       `json:"new_to_brand_units,omitempty"`      // Units sold to first-time brand buyers (count, not rate). Retail-media scalar —
	ByActionSource       []DeliveryActionSourceMetrics `json:"by_action_source,omitempty"`        // Conversion metrics broken down by action source (website, app, in_store
	VendorMetricValues   []VendorMetricValue           `json:"vendor_metric_values,omitempty"`    // Reported values for vendor-defined metrics that the product's
	AudienceID           string                        `json:"audience_id"`                       // Audience segment identifier. For 'synced' source, matches audience_id from
	AudienceSource       AudienceSource                `json:"audience_source"`                   // Origin of the audience segment (synced, platform, third_party, lookalike
	AudienceName         string                        `json:"audience_name,omitempty"`           // Human-readable audience segment name
}

type PackageCancellation

type PackageCancellation struct {
	CanceledAt     string     `json:"canceled_at"`               // ISO 8601 timestamp when this package was canceled.
	CanceledBy     CanceledBy `json:"canceled_by"`               // Which party initiated the package cancellation.
	Reason         string     `json:"reason,omitempty"`          // Reason the package was canceled.
	AcknowledgedAt string     `json:"acknowledged_at,omitempty"` // ISO 8601 timestamp when the seller acknowledged the cancellation. Confirms
}

PackageCancellation — Cancellation metadata. Present only when canceled is true.

type PackageCatalogItemDelivery

type PackageCatalogItemDelivery struct {
	Impressions          float64                       `json:"impressions"`                       // Impressions delivered
	Spend                float64                       `json:"spend"`                             // 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
	CompletedViews       float64                       `json:"completed_views,omitempty"`         // Video/audio completions. When the package has a completed_views optimization
	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
	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` (transactions) from first-time brand buyers, 0 =
	Leads                float64                       `json:"leads,omitempty"`                   // Leads generated (convenience alias for by_event_type where event_type='lead')
	IncrementalSalesLift float64                       `json:"incremental_sales_lift,omitempty"`  // Incremental sales lift attributed to the campaign — sales above the
	BrandLift            float64                       `json:"brand_lift,omitempty"`              // Brand lift — measured change in a brand metric (awareness, consideration
	FootTraffic          float64                       `json:"foot_traffic,omitempty"`            // Store visits attributed to ad exposure. Count of incremental visits over
	ConversionLift       float64                       `json:"conversion_lift,omitempty"`         // Incremental conversions attributed to the campaign — conversions above the
	BrandSearchLift      float64                       `json:"brand_search_lift,omitempty"`       // Lift in brand search query volume attributed to the campaign — measured via
	Plays                float64                       `json:"plays,omitempty"`                   // Number of times the ad creative was displayed on a DOOH screen or played in a
	ByEventType          []DeliveryEventTypeMetrics    `json:"by_event_type,omitempty"`           // Conversion metrics broken down by event type. Spend-derived metrics (ROAS
	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
	ReachUnit            *ReachUnit                    `json:"reach_unit,omitempty"`              // Unit of measurement for the reach field. Aligns with the reach_unit declared
	ReachWindow          *ReachWindow                  `json:"reach_window,omitempty"`            // Measurement window for the reported `reach` and `frequency` values in this
	Frequency            float64                       `json:"frequency,omitempty"`               // Average frequency per reach unit, measured over the window declared in
	QuartileData         *DeliveryQuartileData         `json:"quartile_data,omitempty"`           // Audio/video quartile completion data
	DoohMetrics          *DeliveryDOOHMetrics          `json:"dooh_metrics,omitempty"`            // DOOH-specific metrics (only included for DOOH campaigns)
	Viewability          *DeliveryViewability          `json:"viewability,omitempty"`             // Viewability metrics. Viewable rate should be calculated as
	Engagements          float64                       `json:"engagements,omitempty"`             // Total engagements — direct interactions with the ad beyond viewing. Includes
	Follows              float64                       `json:"follows,omitempty"`                 // New followers, page likes, artist/podcast/channel follows, or free
	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
	EngagementRate       float64                       `json:"engagement_rate,omitempty"`         // Platform-specific engagement rate (0.0 to 1.0). Typically
	CostPerClick         float64                       `json:"cost_per_click,omitempty"`          // Cost per click (spend / clicks)
	CostPerCompletedView float64                       `json:"cost_per_completed_view,omitempty"` // Cost per completed view (spend / completed_views). Primary CPCV pricing scalar
	CPM                  float64                       `json:"cpm,omitempty"`                     // Cost per thousand impressions, computed as (spend / impressions) × 1000.
	Downloads            float64                       `json:"downloads,omitempty"`               // Audio/podcast downloads (IAB Podcast Measurement Technical Guidelines 2.x
	UnitsSold            float64                       `json:"units_sold,omitempty"`              // Items sold attributed to this delivery. Retail-media scalar distinct from
	NewToBrandUnits      float64                       `json:"new_to_brand_units,omitempty"`      // Units sold to first-time brand buyers (count, not rate). Retail-media scalar —
	ByActionSource       []DeliveryActionSourceMetrics `json:"by_action_source,omitempty"`        // Conversion metrics broken down by action source (website, app, in_store
	VendorMetricValues   []VendorMetricValue           `json:"vendor_metric_values,omitempty"`    // Reported values for vendor-defined metrics that the product's
	ContentID            string                        `json:"content_id"`                        // Catalog item identifier (e.g., SKU, GTIN, job_id, offering_id)
	ContentIDType        ContentIDType                 `json:"content_id_type,omitempty"`         // Identifier type for this content_id
}

type PackageCreativeApproval

type PackageCreativeApproval struct {
	CreativeID      string `json:"creative_id"`
	ApprovalStatus  string `json:"approval_status"`
	RejectionReason string `json:"rejection_reason,omitempty"`
}

type PackageCreativeDelivery

type PackageCreativeDelivery struct {
	Impressions          float64                       `json:"impressions"`                       // Impressions delivered
	Spend                float64                       `json:"spend"`                             // 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
	CompletedViews       float64                       `json:"completed_views,omitempty"`         // Video/audio completions. When the package has a completed_views optimization
	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
	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` (transactions) from first-time brand buyers, 0 =
	Leads                float64                       `json:"leads,omitempty"`                   // Leads generated (convenience alias for by_event_type where event_type='lead')
	IncrementalSalesLift float64                       `json:"incremental_sales_lift,omitempty"`  // Incremental sales lift attributed to the campaign — sales above the
	BrandLift            float64                       `json:"brand_lift,omitempty"`              // Brand lift — measured change in a brand metric (awareness, consideration
	FootTraffic          float64                       `json:"foot_traffic,omitempty"`            // Store visits attributed to ad exposure. Count of incremental visits over
	ConversionLift       float64                       `json:"conversion_lift,omitempty"`         // Incremental conversions attributed to the campaign — conversions above the
	BrandSearchLift      float64                       `json:"brand_search_lift,omitempty"`       // Lift in brand search query volume attributed to the campaign — measured via
	Plays                float64                       `json:"plays,omitempty"`                   // Number of times the ad creative was displayed on a DOOH screen or played in a
	ByEventType          []DeliveryEventTypeMetrics    `json:"by_event_type,omitempty"`           // Conversion metrics broken down by event type. Spend-derived metrics (ROAS
	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
	ReachUnit            *ReachUnit                    `json:"reach_unit,omitempty"`              // Unit of measurement for the reach field. Aligns with the reach_unit declared
	ReachWindow          *ReachWindow                  `json:"reach_window,omitempty"`            // Measurement window for the reported `reach` and `frequency` values in this
	Frequency            float64                       `json:"frequency,omitempty"`               // Average frequency per reach unit, measured over the window declared in
	QuartileData         *DeliveryQuartileData         `json:"quartile_data,omitempty"`           // Audio/video quartile completion data
	DoohMetrics          *DeliveryDOOHMetrics          `json:"dooh_metrics,omitempty"`            // DOOH-specific metrics (only included for DOOH campaigns)
	Viewability          *DeliveryViewability          `json:"viewability,omitempty"`             // Viewability metrics. Viewable rate should be calculated as
	Engagements          float64                       `json:"engagements,omitempty"`             // Total engagements — direct interactions with the ad beyond viewing. Includes
	Follows              float64                       `json:"follows,omitempty"`                 // New followers, page likes, artist/podcast/channel follows, or free
	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
	EngagementRate       float64                       `json:"engagement_rate,omitempty"`         // Platform-specific engagement rate (0.0 to 1.0). Typically
	CostPerClick         float64                       `json:"cost_per_click,omitempty"`          // Cost per click (spend / clicks)
	CostPerCompletedView float64                       `json:"cost_per_completed_view,omitempty"` // Cost per completed view (spend / completed_views). Primary CPCV pricing scalar
	CPM                  float64                       `json:"cpm,omitempty"`                     // Cost per thousand impressions, computed as (spend / impressions) × 1000.
	Downloads            float64                       `json:"downloads,omitempty"`               // Audio/podcast downloads (IAB Podcast Measurement Technical Guidelines 2.x
	UnitsSold            float64                       `json:"units_sold,omitempty"`              // Items sold attributed to this delivery. Retail-media scalar distinct from
	NewToBrandUnits      float64                       `json:"new_to_brand_units,omitempty"`      // Units sold to first-time brand buyers (count, not rate). Retail-media scalar —
	ByActionSource       []DeliveryActionSourceMetrics `json:"by_action_source,omitempty"`        // Conversion metrics broken down by action source (website, app, in_store
	VendorMetricValues   []VendorMetricValue           `json:"vendor_metric_values,omitempty"`    // Reported values for vendor-defined metrics that the product's
	CreativeID           string                        `json:"creative_id"`                       // Creative identifier matching the creative assignment
	Weight               float64                       `json:"weight,omitempty"`                  // Observed delivery share for this creative within the package during the
}

type PackageDailyBreakdown

type PackageDailyBreakdown struct {
	Date            string  `json:"date"`                        // Date (YYYY-MM-DD)
	Impressions     float64 `json:"impressions"`                 // Daily impressions for this package
	Spend           float64 `json:"spend"`                       // Daily spend for this package
	Conversions     float64 `json:"conversions,omitempty"`       // Daily conversions for this package
	ConversionValue float64 `json:"conversion_value,omitempty"`  // Daily conversion value for this package
	Roas            float64 `json:"roas,omitempty"`              // Daily return on ad spend (conversion_value / spend)
	NewToBrandRate  float64 `json:"new_to_brand_rate,omitempty"` // Daily fraction of conversions from first-time brand buyers (0 = none, 1 = all)
}

type PackageDelivery

type PackageDelivery struct {
	Impressions               float64                         `json:"impressions,omitempty"`                  // Impressions delivered
	Spend                     float64                         `json:"spend"`                                  // 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
	CompletedViews            float64                         `json:"completed_views,omitempty"`              // Video/audio completions. When the package has a completed_views optimization
	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
	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` (transactions) from first-time brand buyers, 0 =
	Leads                     float64                         `json:"leads,omitempty"`                        // Leads generated (convenience alias for by_event_type where event_type='lead')
	IncrementalSalesLift      float64                         `json:"incremental_sales_lift,omitempty"`       // Incremental sales lift attributed to the campaign — sales above the
	BrandLift                 float64                         `json:"brand_lift,omitempty"`                   // Brand lift — measured change in a brand metric (awareness, consideration
	FootTraffic               float64                         `json:"foot_traffic,omitempty"`                 // Store visits attributed to ad exposure. Count of incremental visits over
	ConversionLift            float64                         `json:"conversion_lift,omitempty"`              // Incremental conversions attributed to the campaign — conversions above the
	BrandSearchLift           float64                         `json:"brand_search_lift,omitempty"`            // Lift in brand search query volume attributed to the campaign — measured via
	Plays                     float64                         `json:"plays,omitempty"`                        // Number of times the ad creative was displayed on a DOOH screen or played in a
	ByEventType               []DeliveryEventTypeMetrics      `json:"by_event_type,omitempty"`                // Conversion metrics broken down by event type. Spend-derived metrics (ROAS
	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
	ReachUnit                 *ReachUnit                      `json:"reach_unit,omitempty"`                   // Unit of measurement for the reach field. Aligns with the reach_unit declared
	ReachWindow               *ReachWindow                    `json:"reach_window,omitempty"`                 // Measurement window for the reported `reach` and `frequency` values in this
	Frequency                 float64                         `json:"frequency,omitempty"`                    // Average frequency per reach unit, measured over the window declared in
	QuartileData              *DeliveryQuartileData           `json:"quartile_data,omitempty"`                // Audio/video quartile completion data
	DoohMetrics               *DeliveryDOOHMetrics            `json:"dooh_metrics,omitempty"`                 // DOOH-specific metrics (only included for DOOH campaigns)
	Viewability               *DeliveryViewability            `json:"viewability,omitempty"`                  // Viewability metrics. Viewable rate should be calculated as
	Engagements               float64                         `json:"engagements,omitempty"`                  // Total engagements — direct interactions with the ad beyond viewing. Includes
	Follows                   float64                         `json:"follows,omitempty"`                      // New followers, page likes, artist/podcast/channel follows, or free
	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
	EngagementRate            float64                         `json:"engagement_rate,omitempty"`              // Platform-specific engagement rate (0.0 to 1.0). Typically
	CostPerClick              float64                         `json:"cost_per_click,omitempty"`               // Cost per click (spend / clicks)
	CostPerCompletedView      float64                         `json:"cost_per_completed_view,omitempty"`      // Cost per completed view (spend / completed_views). Primary CPCV pricing scalar
	CPM                       float64                         `json:"cpm,omitempty"`                          // Cost per thousand impressions, computed as (spend / impressions) × 1000.
	Downloads                 float64                         `json:"downloads,omitempty"`                    // Audio/podcast downloads (IAB Podcast Measurement Technical Guidelines 2.x
	UnitsSold                 float64                         `json:"units_sold,omitempty"`                   // Items sold attributed to this delivery. Retail-media scalar distinct from
	NewToBrandUnits           float64                         `json:"new_to_brand_units,omitempty"`           // Units sold to first-time brand buyers (count, not rate). Retail-media scalar —
	ByActionSource            []DeliveryActionSourceMetrics   `json:"by_action_source,omitempty"`             // Conversion metrics broken down by action source (website, app, in_store
	VendorMetricValues        []VendorMetricValue             `json:"vendor_metric_values,omitempty"`         // Reported values for vendor-defined metrics that the product's
	PackageID                 string                          `json:"package_id"`                             // Seller's package identifier
	PacingIndex               float64                         `json:"pacing_index,omitempty"`                 // Delivery pace (1.0 = on track, <1.0 = behind, >1.0 = ahead)
	PricingModel              PricingModel                    `json:"pricing_model"`                          // The pricing model used for this package (e.g., cpm, cpcv, cpp). Indicates how
	Rate                      float64                         `json:"rate"`                                   // The pricing rate for this package in the specified currency. For fixed-rate
	Currency                  string                          `json:"currency"`                               // ISO 4217 currency code (e.g., USD, EUR, GBP) for this package's pricing.
	DeliveryStatus            string                          `json:"delivery_status,omitempty"`              // System-reported operational state of this package. Reflects actual delivery
	Paused                    *bool                           `json:"paused,omitempty"`                       // Whether this package is currently paused by the buyer
	IsFinal                   *bool                           `json:"is_final,omitempty"`                     // Whether this delivery data is final for the reporting period. When false, the
	FinalizedAt               string                          `json:"finalized_at,omitempty"`                 // ISO 8601 timestamp at which this package's data became final. Present only
	MeasurementWindow         string                          `json:"measurement_window,omitempty"`           // Which measurement window this data represents, referencing a window_id from
	SupersedesWindow          string                          `json:"supersedes_window,omitempty"`            // Which measurement window this data replaces. Present on window_update
	MissingMetrics            []MissingMetric                 `json:"missing_metrics,omitempty"`              // Metrics that the binding reporting contract declared but that are NOT
	ByCatalogItem             []PackageCatalogItemDelivery    `json:"by_catalog_item,omitempty"`              // Delivery by catalog item within this package. Available for catalog-driven
	ByCreative                []PackageCreativeDelivery       `json:"by_creative,omitempty"`                  // Metrics broken down by creative within this package. Available when the seller
	ByKeyword                 []PackageKeywordDelivery        `json:"by_keyword,omitempty"`                   // Metrics broken down by keyword within this package. One row per (keyword
	ByGeo                     []PackageGeoDelivery            `json:"by_geo,omitempty"`                       // Delivery by geographic area within this package. Available when the buyer
	ByGeoTruncated            *bool                           `json:"by_geo_truncated,omitempty"`             // Whether by_geo was truncated due to the requested limit or a seller-imposed
	ByDeviceType              []PackageDeviceTypeDelivery     `json:"by_device_type,omitempty"`               // Delivery by device form factor within this package. Available when the buyer
	ByDeviceTypeTruncated     *bool                           `json:"by_device_type_truncated,omitempty"`     // Whether by_device_type was truncated. Sellers MUST return this flag whenever
	ByDevicePlatform          []PackageDevicePlatformDelivery `json:"by_device_platform,omitempty"`           // Delivery by operating system within this package. Available when the buyer
	ByDevicePlatformTruncated *bool                           `json:"by_device_platform_truncated,omitempty"` // Whether by_device_platform was truncated. Sellers MUST return this flag
	ByAudience                []PackageAudienceDelivery       `json:"by_audience,omitempty"`                  // Delivery by audience segment within this package. Available when the buyer
	ByAudienceTruncated       *bool                           `json:"by_audience_truncated,omitempty"`        // Whether by_audience was truncated. Sellers MUST return this flag whenever
	ByPlacement               []PackagePlacementDelivery      `json:"by_placement,omitempty"`                 // Delivery by placement within this package. Available when the buyer requests
	ByPlacementTruncated      *bool                           `json:"by_placement_truncated,omitempty"`       // Whether by_placement was truncated. Sellers MUST return this flag whenever
	DailyBreakdown            []PackageDailyBreakdown         `json:"daily_breakdown,omitempty"`              // Day-by-day delivery for this package. Only present when
}

type PackageDevicePlatformDelivery

type PackageDevicePlatformDelivery struct {
	Impressions          float64                       `json:"impressions"`                       // Impressions delivered
	Spend                float64                       `json:"spend"`                             // 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
	CompletedViews       float64                       `json:"completed_views,omitempty"`         // Video/audio completions. When the package has a completed_views optimization
	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
	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` (transactions) from first-time brand buyers, 0 =
	Leads                float64                       `json:"leads,omitempty"`                   // Leads generated (convenience alias for by_event_type where event_type='lead')
	IncrementalSalesLift float64                       `json:"incremental_sales_lift,omitempty"`  // Incremental sales lift attributed to the campaign — sales above the
	BrandLift            float64                       `json:"brand_lift,omitempty"`              // Brand lift — measured change in a brand metric (awareness, consideration
	FootTraffic          float64                       `json:"foot_traffic,omitempty"`            // Store visits attributed to ad exposure. Count of incremental visits over
	ConversionLift       float64                       `json:"conversion_lift,omitempty"`         // Incremental conversions attributed to the campaign — conversions above the
	BrandSearchLift      float64                       `json:"brand_search_lift,omitempty"`       // Lift in brand search query volume attributed to the campaign — measured via
	Plays                float64                       `json:"plays,omitempty"`                   // Number of times the ad creative was displayed on a DOOH screen or played in a
	ByEventType          []DeliveryEventTypeMetrics    `json:"by_event_type,omitempty"`           // Conversion metrics broken down by event type. Spend-derived metrics (ROAS
	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
	ReachUnit            *ReachUnit                    `json:"reach_unit,omitempty"`              // Unit of measurement for the reach field. Aligns with the reach_unit declared
	ReachWindow          *ReachWindow                  `json:"reach_window,omitempty"`            // Measurement window for the reported `reach` and `frequency` values in this
	Frequency            float64                       `json:"frequency,omitempty"`               // Average frequency per reach unit, measured over the window declared in
	QuartileData         *DeliveryQuartileData         `json:"quartile_data,omitempty"`           // Audio/video quartile completion data
	DoohMetrics          *DeliveryDOOHMetrics          `json:"dooh_metrics,omitempty"`            // DOOH-specific metrics (only included for DOOH campaigns)
	Viewability          *DeliveryViewability          `json:"viewability,omitempty"`             // Viewability metrics. Viewable rate should be calculated as
	Engagements          float64                       `json:"engagements,omitempty"`             // Total engagements — direct interactions with the ad beyond viewing. Includes
	Follows              float64                       `json:"follows,omitempty"`                 // New followers, page likes, artist/podcast/channel follows, or free
	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
	EngagementRate       float64                       `json:"engagement_rate,omitempty"`         // Platform-specific engagement rate (0.0 to 1.0). Typically
	CostPerClick         float64                       `json:"cost_per_click,omitempty"`          // Cost per click (spend / clicks)
	CostPerCompletedView float64                       `json:"cost_per_completed_view,omitempty"` // Cost per completed view (spend / completed_views). Primary CPCV pricing scalar
	CPM                  float64                       `json:"cpm,omitempty"`                     // Cost per thousand impressions, computed as (spend / impressions) × 1000.
	Downloads            float64                       `json:"downloads,omitempty"`               // Audio/podcast downloads (IAB Podcast Measurement Technical Guidelines 2.x
	UnitsSold            float64                       `json:"units_sold,omitempty"`              // Items sold attributed to this delivery. Retail-media scalar distinct from
	NewToBrandUnits      float64                       `json:"new_to_brand_units,omitempty"`      // Units sold to first-time brand buyers (count, not rate). Retail-media scalar —
	ByActionSource       []DeliveryActionSourceMetrics `json:"by_action_source,omitempty"`        // Conversion metrics broken down by action source (website, app, in_store
	VendorMetricValues   []VendorMetricValue           `json:"vendor_metric_values,omitempty"`    // Reported values for vendor-defined metrics that the product's
	DevicePlatform       DevicePlatform                `json:"device_platform"`                   // Operating system platform
}

type PackageDeviceTypeDelivery

type PackageDeviceTypeDelivery struct {
	Impressions          float64                       `json:"impressions"`                       // Impressions delivered
	Spend                float64                       `json:"spend"`                             // 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
	CompletedViews       float64                       `json:"completed_views,omitempty"`         // Video/audio completions. When the package has a completed_views optimization
	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
	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` (transactions) from first-time brand buyers, 0 =
	Leads                float64                       `json:"leads,omitempty"`                   // Leads generated (convenience alias for by_event_type where event_type='lead')
	IncrementalSalesLift float64                       `json:"incremental_sales_lift,omitempty"`  // Incremental sales lift attributed to the campaign — sales above the
	BrandLift            float64                       `json:"brand_lift,omitempty"`              // Brand lift — measured change in a brand metric (awareness, consideration
	FootTraffic          float64                       `json:"foot_traffic,omitempty"`            // Store visits attributed to ad exposure. Count of incremental visits over
	ConversionLift       float64                       `json:"conversion_lift,omitempty"`         // Incremental conversions attributed to the campaign — conversions above the
	BrandSearchLift      float64                       `json:"brand_search_lift,omitempty"`       // Lift in brand search query volume attributed to the campaign — measured via
	Plays                float64                       `json:"plays,omitempty"`                   // Number of times the ad creative was displayed on a DOOH screen or played in a
	ByEventType          []DeliveryEventTypeMetrics    `json:"by_event_type,omitempty"`           // Conversion metrics broken down by event type. Spend-derived metrics (ROAS
	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
	ReachUnit            *ReachUnit                    `json:"reach_unit,omitempty"`              // Unit of measurement for the reach field. Aligns with the reach_unit declared
	ReachWindow          *ReachWindow                  `json:"reach_window,omitempty"`            // Measurement window for the reported `reach` and `frequency` values in this
	Frequency            float64                       `json:"frequency,omitempty"`               // Average frequency per reach unit, measured over the window declared in
	QuartileData         *DeliveryQuartileData         `json:"quartile_data,omitempty"`           // Audio/video quartile completion data
	DoohMetrics          *DeliveryDOOHMetrics          `json:"dooh_metrics,omitempty"`            // DOOH-specific metrics (only included for DOOH campaigns)
	Viewability          *DeliveryViewability          `json:"viewability,omitempty"`             // Viewability metrics. Viewable rate should be calculated as
	Engagements          float64                       `json:"engagements,omitempty"`             // Total engagements — direct interactions with the ad beyond viewing. Includes
	Follows              float64                       `json:"follows,omitempty"`                 // New followers, page likes, artist/podcast/channel follows, or free
	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
	EngagementRate       float64                       `json:"engagement_rate,omitempty"`         // Platform-specific engagement rate (0.0 to 1.0). Typically
	CostPerClick         float64                       `json:"cost_per_click,omitempty"`          // Cost per click (spend / clicks)
	CostPerCompletedView float64                       `json:"cost_per_completed_view,omitempty"` // Cost per completed view (spend / completed_views). Primary CPCV pricing scalar
	CPM                  float64                       `json:"cpm,omitempty"`                     // Cost per thousand impressions, computed as (spend / impressions) × 1000.
	Downloads            float64                       `json:"downloads,omitempty"`               // Audio/podcast downloads (IAB Podcast Measurement Technical Guidelines 2.x
	UnitsSold            float64                       `json:"units_sold,omitempty"`              // Items sold attributed to this delivery. Retail-media scalar distinct from
	NewToBrandUnits      float64                       `json:"new_to_brand_units,omitempty"`      // Units sold to first-time brand buyers (count, not rate). Retail-media scalar —
	ByActionSource       []DeliveryActionSourceMetrics `json:"by_action_source,omitempty"`        // Conversion metrics broken down by action source (website, app, in_store
	VendorMetricValues   []VendorMetricValue           `json:"vendor_metric_values,omitempty"`    // Reported values for vendor-defined metrics that the product's
	DeviceType           DeviceType                    `json:"device_type"`                       // Device form factor (desktop, mobile, tablet, ctv, dooh, unknown)
}

type PackageGeoDelivery

type PackageGeoDelivery struct {
	Impressions          float64                       `json:"impressions"`                       // Impressions delivered
	Spend                float64                       `json:"spend"`                             // 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
	CompletedViews       float64                       `json:"completed_views,omitempty"`         // Video/audio completions. When the package has a completed_views optimization
	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
	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` (transactions) from first-time brand buyers, 0 =
	Leads                float64                       `json:"leads,omitempty"`                   // Leads generated (convenience alias for by_event_type where event_type='lead')
	IncrementalSalesLift float64                       `json:"incremental_sales_lift,omitempty"`  // Incremental sales lift attributed to the campaign — sales above the
	BrandLift            float64                       `json:"brand_lift,omitempty"`              // Brand lift — measured change in a brand metric (awareness, consideration
	FootTraffic          float64                       `json:"foot_traffic,omitempty"`            // Store visits attributed to ad exposure. Count of incremental visits over
	ConversionLift       float64                       `json:"conversion_lift,omitempty"`         // Incremental conversions attributed to the campaign — conversions above the
	BrandSearchLift      float64                       `json:"brand_search_lift,omitempty"`       // Lift in brand search query volume attributed to the campaign — measured via
	Plays                float64                       `json:"plays,omitempty"`                   // Number of times the ad creative was displayed on a DOOH screen or played in a
	ByEventType          []DeliveryEventTypeMetrics    `json:"by_event_type,omitempty"`           // Conversion metrics broken down by event type. Spend-derived metrics (ROAS
	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
	ReachUnit            *ReachUnit                    `json:"reach_unit,omitempty"`              // Unit of measurement for the reach field. Aligns with the reach_unit declared
	ReachWindow          *ReachWindow                  `json:"reach_window,omitempty"`            // Measurement window for the reported `reach` and `frequency` values in this
	Frequency            float64                       `json:"frequency,omitempty"`               // Average frequency per reach unit, measured over the window declared in
	QuartileData         *DeliveryQuartileData         `json:"quartile_data,omitempty"`           // Audio/video quartile completion data
	DoohMetrics          *DeliveryDOOHMetrics          `json:"dooh_metrics,omitempty"`            // DOOH-specific metrics (only included for DOOH campaigns)
	Viewability          *DeliveryViewability          `json:"viewability,omitempty"`             // Viewability metrics. Viewable rate should be calculated as
	Engagements          float64                       `json:"engagements,omitempty"`             // Total engagements — direct interactions with the ad beyond viewing. Includes
	Follows              float64                       `json:"follows,omitempty"`                 // New followers, page likes, artist/podcast/channel follows, or free
	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
	EngagementRate       float64                       `json:"engagement_rate,omitempty"`         // Platform-specific engagement rate (0.0 to 1.0). Typically
	CostPerClick         float64                       `json:"cost_per_click,omitempty"`          // Cost per click (spend / clicks)
	CostPerCompletedView float64                       `json:"cost_per_completed_view,omitempty"` // Cost per completed view (spend / completed_views). Primary CPCV pricing scalar
	CPM                  float64                       `json:"cpm,omitempty"`                     // Cost per thousand impressions, computed as (spend / impressions) × 1000.
	Downloads            float64                       `json:"downloads,omitempty"`               // Audio/podcast downloads (IAB Podcast Measurement Technical Guidelines 2.x
	UnitsSold            float64                       `json:"units_sold,omitempty"`              // Items sold attributed to this delivery. Retail-media scalar distinct from
	NewToBrandUnits      float64                       `json:"new_to_brand_units,omitempty"`      // Units sold to first-time brand buyers (count, not rate). Retail-media scalar —
	ByActionSource       []DeliveryActionSourceMetrics `json:"by_action_source,omitempty"`        // Conversion metrics broken down by action source (website, app, in_store
	VendorMetricValues   []VendorMetricValue           `json:"vendor_metric_values,omitempty"`    // Reported values for vendor-defined metrics that the product's
	GeoLevel             GeoLevel                      `json:"geo_level"`                         // Geographic level of this entry (country, region, metro, postal_area)
	System               string                        `json:"system,omitempty"`                  // Classification system for metro or postal_area levels. Metro rows use
	Country              string                        `json:"country,omitempty"`                 // ISO 3166-1 alpha-2 country code for native postal_area rows.
	GeoCode              string                        `json:"geo_code"`                          // Geographic code within the level and system. Country: ISO 3166-1 alpha-2
	GeoName              string                        `json:"geo_name,omitempty"`                // Human-readable geographic name (e.g., 'United States', 'California', 'New York
}

type PackageInput

type PackageInput struct {
	AdcpVersion          string                     `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion     int                        `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	ProductID            string                     `json:"product_id"`                   // Product ID for this package. Sellers MUST echo this value on every response
	FormatIDs            []FormatRef                `json:"format_ids,omitempty"`         // Legacy named-format selector. Array of format IDs that will be used for this
	FormatOptionRefs     []FormatOptionRef          `json:"format_option_refs,omitempty"` // 3.1+ format-option selector. Array of structured format option references
	FormatKind           string                     `json:"format_kind,omitempty"`        // 3.1+ direct canonical selector. Names the canonical format shape this package
	Params               map[string]any             `json:"params,omitempty"`             // Parameters for the direct canonical selector in `format_kind`. Shape follows
	Budget               float64                    `json:"budget"`                       // Budget allocation for this package in the media buy's currency
	Pacing               Pacing                     `json:"pacing,omitempty"`
	PricingOptionID      string                     `json:"pricing_option_id"`            // 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 options. This is the exact bid/price to
	Impressions          *float64                   `json:"impressions,omitempty"`        // Impression goal for this package
	StartTime            string                     `json:"start_time,omitempty"`         // Flight start date/time for this package in ISO 8601 format. When omitted, the
	EndTime              string                     `json:"end_time,omitempty"`           // Flight end date/time for this package in ISO 8601 format. When omitted, the
	Paused               *bool                      `json:"paused,omitempty"`             // Whether this package should be created in a paused state. Paused packages do
	Catalogs             []Catalog                  `json:"catalogs,omitempty"`           // Catalogs this package promotes. Each catalog MUST have a distinct type (e.g.
	OptimizationGoals    []OptimizationGoal         `json:"optimization_goals,omitempty"` // Optimization targets for this package. The seller optimizes delivery toward
	TargetingOverlay     *Targeting                 `json:"targeting_overlay,omitempty"`
	MeasurementTerms     *MeasurementTerms          `json:"measurement_terms,omitempty"`      // Buyer's proposed billing measurement and makegood terms. Overrides product
	PerformanceStandards []PerformanceStandard      `json:"performance_standards,omitempty"`  // Buyer's proposed performance standards for this package. Overrides product
	CommittedMetrics     []RequestedCommittedMetric `json:"committed_metrics,omitempty"`      // Buyer's proposed reporting contract for this package — the metrics the buyer
	CreativeAssignments  []CreativeAssignment       `json:"creative_assignments,omitempty"`   // Assign existing library creatives to this package with optional weights and
	Creatives            []CreativeAsset            `json:"creatives,omitempty"`              // Upload creative assets inline and assign to this package. When the seller also
	AgencyEstimateNumber string                     `json:"agency_estimate_number,omitempty"` // Agency estimate or authorization number for this package. Overrides the media
	Context              any                        `json:"context,omitempty"`                // Opaque package-level correlation data echoed unchanged in the package
	Ext                  any                        `json:"ext,omitempty"`
}

PackageInput — Package configuration for media buy creation

type PackageKeywordDelivery

type PackageKeywordDelivery struct {
	Impressions          float64                       `json:"impressions"`                       // Impressions delivered
	Spend                float64                       `json:"spend"`                             // 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
	CompletedViews       float64                       `json:"completed_views,omitempty"`         // Video/audio completions. When the package has a completed_views optimization
	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
	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` (transactions) from first-time brand buyers, 0 =
	Leads                float64                       `json:"leads,omitempty"`                   // Leads generated (convenience alias for by_event_type where event_type='lead')
	IncrementalSalesLift float64                       `json:"incremental_sales_lift,omitempty"`  // Incremental sales lift attributed to the campaign — sales above the
	BrandLift            float64                       `json:"brand_lift,omitempty"`              // Brand lift — measured change in a brand metric (awareness, consideration
	FootTraffic          float64                       `json:"foot_traffic,omitempty"`            // Store visits attributed to ad exposure. Count of incremental visits over
	ConversionLift       float64                       `json:"conversion_lift,omitempty"`         // Incremental conversions attributed to the campaign — conversions above the
	BrandSearchLift      float64                       `json:"brand_search_lift,omitempty"`       // Lift in brand search query volume attributed to the campaign — measured via
	Plays                float64                       `json:"plays,omitempty"`                   // Number of times the ad creative was displayed on a DOOH screen or played in a
	ByEventType          []DeliveryEventTypeMetrics    `json:"by_event_type,omitempty"`           // Conversion metrics broken down by event type. Spend-derived metrics (ROAS
	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
	ReachUnit            *ReachUnit                    `json:"reach_unit,omitempty"`              // Unit of measurement for the reach field. Aligns with the reach_unit declared
	ReachWindow          *ReachWindow                  `json:"reach_window,omitempty"`            // Measurement window for the reported `reach` and `frequency` values in this
	Frequency            float64                       `json:"frequency,omitempty"`               // Average frequency per reach unit, measured over the window declared in
	QuartileData         *DeliveryQuartileData         `json:"quartile_data,omitempty"`           // Audio/video quartile completion data
	DoohMetrics          *DeliveryDOOHMetrics          `json:"dooh_metrics,omitempty"`            // DOOH-specific metrics (only included for DOOH campaigns)
	Viewability          *DeliveryViewability          `json:"viewability,omitempty"`             // Viewability metrics. Viewable rate should be calculated as
	Engagements          float64                       `json:"engagements,omitempty"`             // Total engagements — direct interactions with the ad beyond viewing. Includes
	Follows              float64                       `json:"follows,omitempty"`                 // New followers, page likes, artist/podcast/channel follows, or free
	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
	EngagementRate       float64                       `json:"engagement_rate,omitempty"`         // Platform-specific engagement rate (0.0 to 1.0). Typically
	CostPerClick         float64                       `json:"cost_per_click,omitempty"`          // Cost per click (spend / clicks)
	CostPerCompletedView float64                       `json:"cost_per_completed_view,omitempty"` // Cost per completed view (spend / completed_views). Primary CPCV pricing scalar
	CPM                  float64                       `json:"cpm,omitempty"`                     // Cost per thousand impressions, computed as (spend / impressions) × 1000.
	Downloads            float64                       `json:"downloads,omitempty"`               // Audio/podcast downloads (IAB Podcast Measurement Technical Guidelines 2.x
	UnitsSold            float64                       `json:"units_sold,omitempty"`              // Items sold attributed to this delivery. Retail-media scalar distinct from
	NewToBrandUnits      float64                       `json:"new_to_brand_units,omitempty"`      // Units sold to first-time brand buyers (count, not rate). Retail-media scalar —
	ByActionSource       []DeliveryActionSourceMetrics `json:"by_action_source,omitempty"`        // Conversion metrics broken down by action source (website, app, in_store
	VendorMetricValues   []VendorMetricValue           `json:"vendor_metric_values,omitempty"`    // Reported values for vendor-defined metrics that the product's
	Keyword              string                        `json:"keyword"`                           // The targeted keyword
	MatchType            MatchType                     `json:"match_type"`
}

type PackagePlacementDelivery

type PackagePlacementDelivery struct {
	Impressions          float64                       `json:"impressions"`                       // Impressions delivered
	Spend                float64                       `json:"spend"`                             // 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
	CompletedViews       float64                       `json:"completed_views,omitempty"`         // Video/audio completions. When the package has a completed_views optimization
	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
	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` (transactions) from first-time brand buyers, 0 =
	Leads                float64                       `json:"leads,omitempty"`                   // Leads generated (convenience alias for by_event_type where event_type='lead')
	IncrementalSalesLift float64                       `json:"incremental_sales_lift,omitempty"`  // Incremental sales lift attributed to the campaign — sales above the
	BrandLift            float64                       `json:"brand_lift,omitempty"`              // Brand lift — measured change in a brand metric (awareness, consideration
	FootTraffic          float64                       `json:"foot_traffic,omitempty"`            // Store visits attributed to ad exposure. Count of incremental visits over
	ConversionLift       float64                       `json:"conversion_lift,omitempty"`         // Incremental conversions attributed to the campaign — conversions above the
	BrandSearchLift      float64                       `json:"brand_search_lift,omitempty"`       // Lift in brand search query volume attributed to the campaign — measured via
	Plays                float64                       `json:"plays,omitempty"`                   // Number of times the ad creative was displayed on a DOOH screen or played in a
	ByEventType          []DeliveryEventTypeMetrics    `json:"by_event_type,omitempty"`           // Conversion metrics broken down by event type. Spend-derived metrics (ROAS
	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
	ReachUnit            *ReachUnit                    `json:"reach_unit,omitempty"`              // Unit of measurement for the reach field. Aligns with the reach_unit declared
	ReachWindow          *ReachWindow                  `json:"reach_window,omitempty"`            // Measurement window for the reported `reach` and `frequency` values in this
	Frequency            float64                       `json:"frequency,omitempty"`               // Average frequency per reach unit, measured over the window declared in
	QuartileData         *DeliveryQuartileData         `json:"quartile_data,omitempty"`           // Audio/video quartile completion data
	DoohMetrics          *DeliveryDOOHMetrics          `json:"dooh_metrics,omitempty"`            // DOOH-specific metrics (only included for DOOH campaigns)
	Viewability          *DeliveryViewability          `json:"viewability,omitempty"`             // Viewability metrics. Viewable rate should be calculated as
	Engagements          float64                       `json:"engagements,omitempty"`             // Total engagements — direct interactions with the ad beyond viewing. Includes
	Follows              float64                       `json:"follows,omitempty"`                 // New followers, page likes, artist/podcast/channel follows, or free
	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
	EngagementRate       float64                       `json:"engagement_rate,omitempty"`         // Platform-specific engagement rate (0.0 to 1.0). Typically
	CostPerClick         float64                       `json:"cost_per_click,omitempty"`          // Cost per click (spend / clicks)
	CostPerCompletedView float64                       `json:"cost_per_completed_view,omitempty"` // Cost per completed view (spend / completed_views). Primary CPCV pricing scalar
	CPM                  float64                       `json:"cpm,omitempty"`                     // Cost per thousand impressions, computed as (spend / impressions) × 1000.
	Downloads            float64                       `json:"downloads,omitempty"`               // Audio/podcast downloads (IAB Podcast Measurement Technical Guidelines 2.x
	UnitsSold            float64                       `json:"units_sold,omitempty"`              // Items sold attributed to this delivery. Retail-media scalar distinct from
	NewToBrandUnits      float64                       `json:"new_to_brand_units,omitempty"`      // Units sold to first-time brand buyers (count, not rate). Retail-media scalar —
	ByActionSource       []DeliveryActionSourceMetrics `json:"by_action_source,omitempty"`        // Conversion metrics broken down by action source (website, app, in_store
	VendorMetricValues   []VendorMetricValue           `json:"vendor_metric_values,omitempty"`    // Reported values for vendor-defined metrics that the product's
	PlacementID          string                        `json:"placement_id"`                      // Placement identifier from the product's placements array
	PlacementName        string                        `json:"placement_name,omitempty"`          // Human-readable placement name
	PublisherDomain      string                        `json:"publisher_domain,omitempty"`        // Canonical publisher domain whose adagents.json namespace this placement
}

type PackageSignalTargeting

type PackageSignalTargeting struct {
	SignalRef            *SignalRef     `json:"signal_ref,omitempty"`              // Named signal being targeted.
	ValueType            string         `json:"value_type,omitempty"`              // Discriminator for numeric signals.
	Value                *bool          `json:"value,omitempty"`                   // Binary package signal entries match users for whom the signal is true. Use the
	Values               []string       `json:"values,omitempty"`                  // Values to target. Users with any of these values match the expression.
	MinValue             *float64       `json:"min_value,omitempty"`               // Minimum value, inclusive. Omit for no minimum. Should be within the signal
	MaxValue             *float64       `json:"max_value,omitempty"`               // Maximum value, inclusive. Omit for no maximum. Should be within the signal
	PricingOptionID      string         `json:"pricing_option_id,omitempty"`       // Pricing option selected for this signal. Use the pricing_option_id from the
	SignalAgentSegmentID string         `json:"signal_agent_segment_id,omitempty"` // Optional opaque resolved-segment or seller execution handle for this signal.
	ActivationKey        *ActivationKey `json:"activation_key,omitempty"`          // Destination-specific activation key returned by get_signals or
}

PackageSignalTargeting — Buy-time selection of one seller-offered signal inside a package signal targeting group. The

type PackageSignalTargetingGroup

type PackageSignalTargetingGroup struct {
	Operator string                   `json:"operator"` // How to evaluate the signals in this group. 'any' is an OR include group.
	Signals  []PackageSignalTargeting `json:"signals"`  // Signal targeting entries evaluated by this group. Each entry uses the package
}

PackageSignalTargetingGroup — A basic Boolean group of package-level signal targeting entries. 'any' means the user must match

type PackageSignalTargetingGroups

type PackageSignalTargetingGroups struct {
	Operator string                        `json:"operator"` // Groups-level operator. Required even though v1 only supports 'all': every
	Groups   []PackageSignalTargetingGroup `json:"groups"`   // Signal targeting groups to evaluate. Use operator 'any' for include groups and
}

PackageSignalTargetingGroups — Top-level basic Boolean composition for package signal targeting. The groups-level operator is

type PackageSnapshot

type PackageSnapshot struct {
	AsOf             string  `json:"as_of"`
	StalenessSeconds int     `json:"staleness_seconds"`
	Impressions      float64 `json:"impressions"`
	Spend            float64 `json:"spend"`
	Currency         string  `json:"currency,omitempty"`
	Clicks           float64 `json:"clicks,omitempty"`
	PacingIndex      float64 `json:"pacing_index,omitempty"`
	DeliveryStatus   string  `json:"delivery_status,omitempty"`
	Ext              any     `json:"ext,omitempty"`
}

type PackageStatus

type PackageStatus struct {
	Package
	Currency                  string                    `json:"currency,omitempty"`
	CreativeApprovals         []PackageCreativeApproval `json:"creative_approvals,omitempty"`
	FormatIDsPending          []FormatRef               `json:"format_ids_pending,omitempty"`
	SnapshotUnavailableReason string                    `json:"snapshot_unavailable_reason,omitempty"`
	Snapshot                  *PackageSnapshot          `json:"snapshot,omitempty"`
}

PackageStatus is a package row in get_media_buys. It embeds Package for ergonomic construction from create/update state, but marshals only the fields modeled by the get_media_buys response schema.

func (PackageStatus) MarshalJSON

func (p PackageStatus) MarshalJSON() ([]byte, error)

type PackageUpdate

type PackageUpdate struct {
	PackageID              string                `json:"package_id"`       // Seller's ID of package to update
	Budget                 *float64              `json:"budget,omitempty"` // Updated budget allocation for this package in the currency specified by the
	Pacing                 Pacing                `json:"pacing,omitempty"`
	BidPrice               *float64              `json:"bid_price,omitempty"`                // Updated bid price for auction-based pricing options. This is the exact
	Impressions            *float64              `json:"impressions,omitempty"`              // Updated impression goal for this package
	StartTime              string                `json:"start_time,omitempty"`               // Updated flight start date/time for this package in ISO 8601 format. Must fall
	EndTime                string                `json:"end_time,omitempty"`                 // Updated flight end date/time for this package in ISO 8601 format. Must fall
	Paused                 *bool                 `json:"paused,omitempty"`                   // Pause/resume specific package (true = paused, false = active)
	Canceled               *bool                 `json:"canceled,omitempty"`                 // Cancel this specific package. Cancellation is irreversible — canceled packages
	CancellationReason     string                `json:"cancellation_reason,omitempty"`      // Reason for canceling this package.
	Catalogs               []Catalog             `json:"catalogs,omitempty"`                 // Replace the catalogs this package promotes. Uses replacement semantics — the
	OptimizationGoals      []OptimizationGoal    `json:"optimization_goals,omitempty"`       // Replace all optimization goals for this package. Uses replacement semantics —
	TargetingOverlay       *Targeting            `json:"targeting_overlay,omitempty"`        // Targeting overlay to apply to this package. Uses replacement semantics — the
	KeywordTargetsAdd      []KeywordTargetUpdate `json:"keyword_targets_add,omitempty"`      // Keyword targets to add or update on this package. Upserts by (keyword
	KeywordTargetsRemove   []KeywordTargetRef    `json:"keyword_targets_remove,omitempty"`   // Keyword targets to remove from this package. Removes matching (keyword
	NegativeKeywordsAdd    []KeywordTargetRef    `json:"negative_keywords_add,omitempty"`    // Negative keywords to add to this package. Appends to the existing negative
	NegativeKeywordsRemove []KeywordTargetRef    `json:"negative_keywords_remove,omitempty"` // Negative keywords to remove from this package. Removes matching
	CreativeAssignments    []CreativeAssignment  `json:"creative_assignments,omitempty"`     // Replace creative assignments for this package with optional weights and
	Creatives              []CreativeAsset       `json:"creatives,omitempty"`                // Replace this package's inline creative assets. When the seller also advertises
	Context                any                   `json:"context,omitempty"`
	Ext                    any                   `json:"ext,omitempty"`
}

PackageUpdate — Package update configuration for update_media_buy. Identifies package by package_id and specifies

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
	TotalCount int    `json:"total_count,omitempty"` // Total number of items matching the query across all pages. Optional because
}

PaginationResponse — Standard cursor-based pagination metadata for list responses

type PaymentTerms

type PaymentTerms = string

PaymentTerms — Standard payment terms for AdCP accounts

const (
	PaymentTermsNet15  PaymentTerms = "net_15"
	PaymentTermsNet30  PaymentTerms = "net_30"
	PaymentTermsNet45  PaymentTerms = "net_45"
	PaymentTermsNet60  PaymentTerms = "net_60"
	PaymentTermsNet90  PaymentTerms = "net_90"
	PaymentTermsPrepay PaymentTerms = "prepay"
)

func KnownPaymentTermsValues

func KnownPaymentTermsValues() []PaymentTerms

KnownPaymentTermsValues returns the current schema-defined values for PaymentTerms.

func ParsePaymentTerms

func ParsePaymentTerms(s string) (PaymentTerms, error)

ParsePaymentTerms returns s as PaymentTerms when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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 DatetimeRange   `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
	MetricType        MetricType      `json:"metric_type,omitempty"` // **Deprecated as of this minor.** The legacy free-form metric enum that mixes
	Metric            map[string]any  `json:"metric,omitempty"`      // The metric this feedback row pertains to, using the same `(scope, metric_id
	FeedbackSource    FeedbackSource  `json:"feedback_source"`       // Source of the performance data
	Vendor            *BrandReference `json:"vendor,omitempty"`      // Vendor that produced this feedback. SHOULD be populated when `feedback_source`
	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 — the

const (
	PerformanceStandardMetricViewability    PerformanceStandardMetric = "viewability"
	PerformanceStandardMetricIvt            PerformanceStandardMetric = "ivt"
	PerformanceStandardMetricCompletionRate PerformanceStandardMetric = "completion_rate"
	PerformanceStandardMetricBrandSafety    PerformanceStandardMetric = "brand_safety"
	PerformanceStandardMetricAttentionScore PerformanceStandardMetric = "attention_score"
)

func KnownPerformanceStandardMetricValues

func KnownPerformanceStandardMetricValues() []PerformanceStandardMetric

KnownPerformanceStandardMetricValues returns the current schema-defined values for PerformanceStandardMetric.

func ParsePerformanceStandardMetric

func ParsePerformanceStandardMetric(s string) (PerformanceStandardMetric, error)

ParsePerformanceStandardMetric returns s as PerformanceStandardMetric when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type Placement

type Placement struct {
	Kind                    string                     `json:"kind"`                                // Placement structure discriminator. `publisher_ref` identifies a placement by
	PlacementID             string                     `json:"placement_id"`                        // Placement identifier in the publisher namespace. When `publisher_domain` is
	PublisherDomain         string                     `json:"publisher_domain,omitempty"`          // Publisher domain whose adagents.json placement declarations define this
	Name                    string                     `json:"name,omitempty"`                      // Human-readable name for the placement (e.g., 'Homepage Banner', 'Article
	Description             string                     `json:"description,omitempty"`               // Detailed description of where and how the placement appears
	Mode                    string                     `json:"mode"`                                // Required product-level relationship to this placement. `targetable` means the
	Tags                    []string                   `json:"tags,omitempty"`                      // Optional tags for grouping placements within a product (e.g., 'homepage'
	FormatIDs               []FormatRef                `json:"format_ids,omitempty"`                // Format IDs supported by this specific placement. Can include: (1) concrete
	FormatOptions           []ProductFormatDeclaration `json:"format_options,omitempty"`            // 3.1+ canonical format-option declarations supported by this specific product
	VideoPlacementTypes     []VideoPlacementType       `json:"video_placement_types,omitempty"`     // Declared video placement types for this product placement, using IAB Tech
	AudioDistributionTypes  []AudioDistributionType    `json:"audio_distribution_types,omitempty"`  // Declared audio distribution types for this product placement, using IAB Tech
	SponsoredPlacementTypes []SponsoredPlacementType   `json:"sponsored_placement_types,omitempty"` // Declared sponsored-placement types for this product placement, distinguishing
	SocialPlacementSurfaces []SocialPlacementSurface   `json:"social_placement_surfaces,omitempty"` // Declared social-placement surfaces for this product placement, distinguishing
}

Placement — Represents a specific public ad placement within a product's inventory. Placement IDs are scoped

type PlacementRef

type PlacementRef struct {
	PublisherDomain string `json:"publisher_domain,omitempty"` // Domain where the adagents.json declaring this placement is hosted. Omitted
	PlacementID     string `json:"placement_id"`               // Placement ID from the publisher's adagents.json placement catalog, or an
}

PlacementRef — Reference to a placement by publisher domain and placement ID. Placement IDs are publisher-scoped

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 PlanAuditBudget

type PlanAuditBudget struct {
	Authorized     *float64 `json:"authorized,omitempty"`      // Total authorized budget from the plan.
	Committed      *float64 `json:"committed,omitempty"`       // Total budget committed from confirmed outcomes.
	Remaining      *float64 `json:"remaining,omitempty"`       // Authorized minus committed.
	UtilizationPct *float64 `json:"utilization_pct,omitempty"` // Committed as a percentage of authorized.
}

PlanAuditBudget — Budget state.

type PlanAuditChannelAllocation

type PlanAuditChannelAllocation struct {
	Committed *float64 `json:"committed,omitempty"` // Budget committed to this channel.
	Pct       *float64 `json:"pct,omitempty"`       // Channel's share of the authorized total budget.
}

type PlanAuditDriftMetrics

type PlanAuditDriftMetrics struct {
	EscalationRate      *float64                  `json:"escalation_rate,omitempty"`       // Fraction of checks that resulted in escalation.
	EscalationRateTrend string                    `json:"escalation_rate_trend,omitempty"` // Direction of escalation rate over the plan's lifetime.
	AutoApprovalRate    *float64                  `json:"auto_approval_rate,omitempty"`    // Fraction of checks approved without human intervention.
	HumanOverrideRate   *float64                  `json:"human_override_rate,omitempty"`   // Fraction of escalations where the human overrode the governance agent's
	MeanConfidence      *float64                  `json:"mean_confidence,omitempty"`       // Average confidence score across all findings. Present when findings include
	Thresholds          *PlanAuditDriftThresholds `json:"thresholds,omitempty"`            // Organization-defined thresholds for drift metrics. When a metric crosses its
}

PlanAuditDriftMetrics — Aggregate governance metrics for detecting oversight drift. A declining escalation rate may

type PlanAuditDriftThresholds

type PlanAuditDriftThresholds struct {
	EscalationRateMax    *float64 `json:"escalation_rate_max,omitempty"`     // Maximum acceptable escalation rate. A rate above this suggests policy
	EscalationRateMin    *float64 `json:"escalation_rate_min,omitempty"`     // Minimum acceptable escalation rate. A rate below this may indicate eroding
	AutoApprovalRateMax  *float64 `json:"auto_approval_rate_max,omitempty"`  // Maximum acceptable auto-approval rate.
	HumanOverrideRateMax *float64 `json:"human_override_rate_max,omitempty"` // Maximum acceptable human override rate. A high rate suggests the governance
}

PlanAuditDriftThresholds — Organization-defined thresholds for drift metrics. When a metric crosses its threshold, the

type PlanAuditEntry

type PlanAuditEntry struct {
	ID                  string              `json:"id"`                             // Entry identifier.
	Type                string              `json:"type"`                           // Entry type.
	Timestamp           string              `json:"timestamp"`                      // ISO 8601 timestamp.
	PlanID              string              `json:"plan_id,omitempty"`              // Plan this entry belongs to. Present when querying multiple plans or a portfolio.
	Caller              string              `json:"caller,omitempty"`               // URL of the agent that made the request. Resolved from the credentials used on
	Tool                string              `json:"tool,omitempty"`                 // The AdCP tool (present for check entries).
	Verdict             *GovernanceDecision `json:"verdict,omitempty"`              // Governance verdict (present for check entries). Renamed from `status` in 3.1
	CheckType           string              `json:"check_type,omitempty"`           // Whether the check was an intent check (orchestrator) or execution check
	Mode                *GovernanceMode     `json:"mode,omitempty"`                 // Governance mode active at the moment this specific check was evaluated.
	Explanation         string              `json:"explanation,omitempty"`          // Human-readable explanation of the governance decision (present for check
	PoliciesEvaluated   []string            `json:"policies_evaluated,omitempty"`   // Policy IDs evaluated during this check. Includes registry policy IDs (resolved
	CategoriesEvaluated []string            `json:"categories_evaluated,omitempty"` // Governance categories evaluated (e.g., 'budget_authority'
	Findings            []PlanAuditFinding  `json:"findings,omitempty"`             // Findings from this check or outcome. Same structure as check_governance
	Outcome             *OutcomeType        `json:"outcome,omitempty"`              // Outcome type (present for outcome entries).
	CommittedBudget     *float64            `json:"committed_budget,omitempty"`     // Budget committed (present for completed outcome entries).
	GovernanceContext   string              `json:"governance_context,omitempty"`   // Governance context for this entry (present for check and outcome entries).
	PlanHash            string              `json:"plan_hash,omitempty"`            // Audit-layer binding to the plan revision this attestation was evaluated over —
	PurchaseType        *PurchaseType       `json:"purchase_type,omitempty"`        // Purchase type for this entry.
	OutcomeStatus       string              `json:"outcome_status,omitempty"`       // Outcome status (present for outcome entries).
}

type PlanAuditEscalation

type PlanAuditEscalation struct {
	CheckID    string `json:"check_id"`              // The escalated governance check.
	Reason     string `json:"reason"`                // Why it was escalated.
	Resolution string `json:"resolution,omitempty"`  // How it was resolved (e.g., 'approved_by_human', 'rejected_by_human').
	ResolvedAt string `json:"resolved_at,omitempty"` // ISO 8601 resolution timestamp.
}

type PlanAuditFinding

type PlanAuditFinding struct {
	CategoryID  string             `json:"category_id"`
	PolicyID    string             `json:"policy_id,omitempty"`
	Severity    EscalationSeverity `json:"severity"`
	Explanation string             `json:"explanation"`
	Confidence  *float64           `json:"confidence,omitempty"`
}

type PlanAuditGovernedAction

type PlanAuditGovernedAction struct {
	GovernanceContext string       `json:"governance_context"`         // Governance context correlating this action's lifecycle.
	PurchaseType      PurchaseType `json:"purchase_type"`              // Type of financial commitment.
	Status            string       `json:"status"`                     // Action status.
	Committed         float64      `json:"committed"`                  // Budget committed for this action.
	CheckCount        int          `json:"check_count"`                // Number of governance checks performed for this action.
	SellerReference   string       `json:"seller_reference,omitempty"` // The seller's identifier for the resource (e.g., media_buy_id
}

type PlanAuditLog

type PlanAuditLog struct {
	PlanID            string                                `json:"plan_id"`                      // Plan identifier.
	PlanVersion       int                                   `json:"plan_version"`                 // Current plan version.
	Status            string                                `json:"status"`                       // Plan lifecycle status.
	Budget            PlanAuditBudget                       `json:"budget"`                       // Budget state.
	ChannelAllocation map[string]PlanAuditChannelAllocation `json:"channel_allocation,omitempty"` // Current channel mix. Keyed by channel ID.
	Summary           PlanAuditSummary                      `json:"summary"`                      // Aggregate validation and outcome statistics.
	Entries           []PlanAuditEntry                      `json:"entries,omitempty"`            // Ordered audit trail. Only present when include_entries is true.
	GovernedActions   []PlanAuditGovernedAction             `json:"governed_actions"`             // Per-action breakdown grouped by governance context.
}

type PlanAuditStatusCounts

type PlanAuditStatusCounts struct {
	Approved      *int `json:"approved,omitempty"`
	Denied        *int `json:"denied,omitempty"`
	Conditions    *int `json:"conditions,omitempty"`
	HumanReviewed *int `json:"human_reviewed,omitempty"` // Supplementary count of checks that went through internal human review. These
}

PlanAuditStatusCounts — Count of each governance check status.

type PlanAuditSummary

type PlanAuditSummary struct {
	ChecksPerformed  *int                   `json:"checks_performed,omitempty"`  // Total governance checks performed.
	OutcomesReported *int                   `json:"outcomes_reported,omitempty"` // Total outcomes reported.
	Statuses         *PlanAuditStatusCounts `json:"statuses,omitempty"`          // Count of each governance check status.
	FindingsCount    *int                   `json:"findings_count,omitempty"`    // Total findings across all checks and outcomes.
	Escalations      []PlanAuditEscalation  `json:"escalations,omitempty"`       // All escalations and their resolutions.
	DriftMetrics     *PlanAuditDriftMetrics `json:"drift_metrics,omitempty"`     // Aggregate governance metrics for detecting oversight drift. A declining
}

PlanAuditSummary — Aggregate validation and outcome statistics.

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

type PlanFlight struct {
	Start string `json:"start"`
	End   string `json:"end"`
}

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"`
	SharedPolicyIDs  []string                `json:"shared_policy_ids,omitempty"`
	SharedExclusions []PolicyEntry           `json:"shared_exclusions,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

type PlanValidationError struct {
	Field   string
	Code    string
	Message string
}

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 PlannedDelivery

type PlannedDelivery struct {
	Geo               *PlannedDeliveryGeo `json:"geo,omitempty"`                // Geographic targeting the seller will apply.
	Channels          []Channels          `json:"channels,omitempty"`           // Channels the seller will deliver on.
	StartTime         string              `json:"start_time,omitempty"`         // Actual flight start the seller will use.
	EndTime           string              `json:"end_time,omitempty"`           // Actual flight end the seller will use.
	FrequencyCap      *FrequencyCap       `json:"frequency_cap,omitempty"`      // Frequency cap the seller will apply.
	AudienceSummary   string              `json:"audience_summary,omitempty"`   // Human-readable summary of the audience the seller will target.
	AudienceTargeting []AudienceSelector  `json:"audience_targeting,omitempty"` // Structured audience targeting the seller will activate. Each entry is either a
	TotalBudget       float64             `json:"total_budget,omitempty"`       // Total budget the seller will deliver against.
	Currency          string              `json:"currency,omitempty"`           // ISO 4217 currency code for the budget.
	EnforcedPolicies  []string            `json:"enforced_policies,omitempty"`  // Registry policy IDs the seller will enforce for this delivery.
	Ext               any                 `json:"ext,omitempty"`
}

PlannedDelivery — The seller's interpreted delivery parameters for a media buy. Represents what the seller will

type PlannedDeliveryGeo

type PlannedDeliveryGeo struct {
	Countries []string `json:"countries,omitempty"` // ISO 3166-1 alpha-2 country codes where ads will deliver.
	Regions   []string `json:"regions,omitempty"`   // ISO 3166-2 subdivision codes where ads will deliver.
}

PlannedDeliveryGeo — Geographic targeting the seller will apply.

type PlatformExtensionRef

type PlatformExtensionRef struct {
	URI    string `json:"uri"`    // HTTPS URL identifying the extension. `https://` is mandatory — `http://`
	Digest string `json:"digest"` // SHA-256 content digest of the extension definition (sha256:<hex>). Used to
}

PlatformExtensionRef — Reference to a platform extension definition. The agent that owns the URI is authoritative for the

type PolicyCategory

type PolicyCategory = string

PolicyCategory — The nature of the obligation a policy represents.

const (
	PolicyCategoryRegulation PolicyCategory = "regulation"
	PolicyCategoryStandard   PolicyCategory = "standard"
)

func KnownPolicyCategoryValues

func KnownPolicyCategoryValues() []PolicyCategory

KnownPolicyCategoryValues returns the current schema-defined values for PolicyCategory.

func ParsePolicyCategory

func ParsePolicyCategory(s string) (PolicyCategory, error)

ParsePolicyCategory returns s as PolicyCategory when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type PolicyCategoryDefinition

type PolicyCategoryDefinition struct {
	CategoryID           string                      `json:"category_id"`                     // Unique identifier for this category. Used in plan.policy_categories
	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
	RegulatoryFrameworks []PolicyRegulatoryFramework `json:"regulatory_frameworks,omitempty"` // Key regulations and standards grouped under this category. Governance agents
	RestrictedAttributes []RestrictedAttribute       `json:"restricted_attributes,omitempty"` // Restricted attribute categories that regulations in this category prohibit for
	RequiresHumanReview  *bool                       `json:"requires_human_review,omitempty"` // When true, any plan declaring this category MUST set
	Industries           []string                    `json:"industries,omitempty"`            // Industries where this category commonly applies (e.g., 'pharmaceutical' for
	Guidance             string                      `json:"guidance,omitempty"`              // Implementation notes for governance agents. Edge cases, disambiguation, and
	RelatedCategories    []string                    `json:"related_categories,omitempty"`    // Categories that frequently co-occur (e.g., 'children_directed' often appears
}

PolicyCategoryDefinition — Definition of a policy category in the registry. Policy categories group related regulatory

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"
)

func KnownPolicyEnforcementValues

func KnownPolicyEnforcementValues() []PolicyEnforcement

KnownPolicyEnforcementValues returns the current schema-defined values for PolicyEnforcement.

func ParsePolicyEnforcement

func ParsePolicyEnforcement(s string) (PolicyEnforcement, error)

ParsePolicyEnforcement returns s as PolicyEnforcement when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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
	Version             string              `json:"version,omitempty"`               // Semver version string (e.g., "1.0.0"). Incremented when policy content
	Name                string              `json:"name,omitempty"`                  // Human-readable name (e.g., "UK HFSS Restrictions"). Optional for inline
	Description         string              `json:"description,omitempty"`           // Brief summary of what this policy covers.
	Category            PolicyCategory      `json:"category,omitempty"`              // The nature of the obligation: regulation (legal requirement) or standard (best
	Enforcement         PolicyEnforcement   `json:"enforcement"`                     // How governance agents treat violations. Regulations are typically "must"
	RequiresHumanReview *bool               `json:"requires_human_review,omitempty"` // When true, plans subject to this policy MUST set plan.human_review_required =
	Jurisdictions       []string            `json:"jurisdictions,omitempty"`         // ISO 3166-1 alpha-2 country codes where this policy applies. Empty array means
	RegionAliases       map[string][]string `json:"region_aliases,omitempty"`        // Named groups of jurisdictions for convenience (e.g., {"EU"
	PolicyCategories    []string            `json:"policy_categories,omitempty"`     // Regulatory categories this policy belongs to (e.g., ["children_directed"
	Channels            []Channels          `json:"channels,omitempty"`              // Advertising channels this policy applies to. If omitted or null, the policy
	GovernanceDomains   []GovernanceDomain  `json:"governance_domains,omitempty"`    // Governance sub-domains this policy applies to. Determines which types of
	EffectiveDate       string              `json:"effective_date,omitempty"`        // ISO 8601 date when the regulation or standard takes effect. Before this date
	SunsetDate          string              `json:"sunset_date,omitempty"`           // ISO 8601 date when the regulation or standard is no longer enforced. After
	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
	Policy              string              `json:"policy"`                          // Natural language policy text describing what is required, prohibited, or
	Guidance            string              `json:"guidance,omitempty"`              // Implementation notes for governance agent developers. Not used in evaluation
	Exemplars           *PolicyExemplars    `json:"exemplars,omitempty"`             // Calibration examples for governance agents, following the Content Standards
	Ext                 any                 `json:"ext,omitempty"`
}

PolicyEntry — A policy — either published to the shared registry (with full regulatory metadata) or authored

type PolicyExemplar

type PolicyExemplar struct {
	Scenario    string `json:"scenario"`    // A concrete scenario describing an advertising action or configuration.
	Explanation string `json:"explanation"` // Why this scenario passes or fails the policy.
}

type PolicyExemplars

type PolicyExemplars struct {
	Pass []PolicyExemplar `json:"pass,omitempty"` // Scenarios that comply with this policy.
	Fail []PolicyExemplar `json:"fail,omitempty"` // Scenarios that violate this policy.
}

PolicyExemplars — Calibration examples for governance agents, following the Content Standards pattern.

type PolicyRegulatoryFramework

type PolicyRegulatoryFramework struct {
	Name          string   `json:"name"`                    // Name of the regulation or standard (e.g., 'US COPPA').
	Jurisdictions []string `json:"jurisdictions,omitempty"` // ISO 3166-1 alpha-2 codes where this framework applies.
	Summary       string   `json:"summary"`                 // Brief summary of what the framework requires or prohibits.
	PolicyIDs     []string `json:"policy_ids,omitempty"`    // Registry policy IDs that implement this framework.
}

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 system names for geographic targeting. Prefer country-local values

const (
	PostalSystemPostalCode    PostalSystem = "postal_code"
	PostalSystemZip           PostalSystem = "zip"
	PostalSystemZipPlusFour   PostalSystem = "zip_plus_four"
	PostalSystemOutward       PostalSystem = "outward"
	PostalSystemFull          PostalSystem = "full"
	PostalSystemFsa           PostalSystem = "fsa"
	PostalSystemPlz           PostalSystem = "plz"
	PostalSystemCodePostal    PostalSystem = "code_postal"
	PostalSystemPostcode      PostalSystem = "postcode"
	PostalSystemCep           PostalSystem = "cep"
	PostalSystemPin           PostalSystem = "pin"
	PostalSystemCustom        PostalSystem = "custom"
	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"
)

func KnownPostalSystemValues

func KnownPostalSystemValues() []PostalSystem

KnownPostalSystemValues returns the current schema-defined values for PostalSystem.

func ParsePostalSystem

func ParsePostalSystem(s string) (PostalSystem, error)

ParsePostalSystem returns s as PostalSystem when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type Preview

type Preview struct {
	PreviewID string          `json:"preview_id"`
	Input     map[string]any  `json:"input"`
	Renders   []PreviewRender `json:"renders"`
}

type PreviewCreativeBatchRequest

type PreviewCreativeBatchRequest struct {
	FormatID         *FormatRef             `json:"format_id,omitempty"`     // Format identifier for rendering the preview. Defaults to
	CreativeManifest CreativeManifest       `json:"creative_manifest"`       // Complete creative manifest with all required assets.
	Inputs           []PreviewCreativeInput `json:"inputs,omitempty"`        // Array of input sets for generating multiple preview variants
	TemplateID       string                 `json:"template_id,omitempty"`   // Specific template ID for custom format rendering
	Quality          CreativeQuality        `json:"quality,omitempty"`       // Render quality for this preview. Overrides batch-level default.
	OutputFormat     PreviewOutputFormat    `json:"output_format,omitempty"` // Output format for this preview. Overrides batch-level default.
	ItemLimit        int                    `json:"item_limit,omitempty"`    // Maximum number of catalog items to render in this preview.
}

type PreviewCreativeInput

type PreviewCreativeInput struct {
	Name               string            `json:"name"`                          // Human-readable name for this input set (e.g., 'Sunny morning on mobile'
	Macros             map[string]string `json:"macros,omitempty"`              // Macro values to use for this preview. Supports all universal macros from the
	ContextDescription string            `json:"context_description,omitempty"` // Natural language description of the context for AI-generated content (e.g.
}

type PreviewCreativeRequest

type PreviewCreativeRequest struct {
	AdcpVersion      string                        `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion int                           `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	RequestType      string                        `json:"request_type"`                 // Preview mode. 'single' previews one creative manifest. 'batch' previews
	CreativeManifest *CreativeManifest             `json:"creative_manifest,omitempty"`  // Complete creative manifest with all required assets for the format. Required
	FormatID         *FormatRef                    `json:"format_id,omitempty"`          // Always a structured object {agent_url, id} — never a plain string. Format
	Inputs           []PreviewCreativeInput        `json:"inputs,omitempty"`             // Array of input sets for generating multiple preview variants. Each input set
	TemplateID       string                        `json:"template_id,omitempty"`        // Specific template ID for custom format rendering. Used in single mode.
	Quality          CreativeQuality               `json:"quality,omitempty"`            // Render quality. 'draft' produces fast, lower-fidelity renderings. 'production'
	OutputFormat     PreviewOutputFormat           `json:"output_format,omitempty"`      // Output format. 'url' returns preview_url (iframe-embeddable URL), 'html'
	ItemLimit        int                           `json:"item_limit,omitempty"`         // Maximum number of catalog items to render per preview variant. Used in single
	Requests         []PreviewCreativeBatchRequest `json:"requests,omitempty"`           // Array of preview requests (1-50 items). Required when request_type is 'batch'.
	VariantID        string                        `json:"variant_id,omitempty"`         // Platform-assigned variant identifier from get_creative_delivery response.
	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

type PreviewOutputFormat

type PreviewOutputFormat = string

PreviewOutputFormat — Output format for creative previews

const (
	PreviewOutputFormatURL  PreviewOutputFormat = "url"
	PreviewOutputFormatHTML PreviewOutputFormat = "html"
)

func KnownPreviewOutputFormatValues

func KnownPreviewOutputFormatValues() []PreviewOutputFormat

KnownPreviewOutputFormatValues returns the current schema-defined values for PreviewOutputFormat.

func ParsePreviewOutputFormat

func ParsePreviewOutputFormat(s string) (PreviewOutputFormat, error)

ParsePreviewOutputFormat returns s as PreviewOutputFormat when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type PreviewRender

type PreviewRender struct {
	RenderID     string  `json:"render_id"`
	OutputFormat string  `json:"output_format"`
	PreviewURL   string  `json:"preview_url,omitempty"`
	HTML         string  `json:"html,omitempty"`
	Role         string  `json:"role"`
	Dimensions   *Render `json:"dimensions,omitempty"`
}

type PreviewResult

type PreviewResult struct {
	ResponseType string    `json:"response_type"`
	Previews     []Preview `json:"previews"`
	ExpiresAt    string    `json:"expires_at"`
}

type PriceAdjustment

type PriceAdjustment struct {
	Kind        AdjustmentKind `json:"kind"`
	Name        string         `json:"name"`                  // Specific adjustment name. Use well-known values where applicable for
	Rate        float64        `json:"rate,omitempty"`        // Adjustment as a decimal proportion (e.g., 0.15 for 15%). Always positive —
	Amount      float64        `json:"amount,omitempty"`      // Adjustment as a fixed monetary amount in the pricing option's currency. Always
	Description string         `json:"description,omitempty"` // Human-readable description of this adjustment (e.g., 'Malstaffel 12x', '2%
	Beneficiary string         `json:"beneficiary,omitempty"` // Identifies who receives this adjustment's value. For commissions, the
}

type PriceBreakdown

type PriceBreakdown struct {
	ListPrice   float64           `json:"list_price"`  // Rate card or base price before any adjustments. The starting point from which
	Adjustments []PriceAdjustment `json:"adjustments"` // Ordered list of price adjustments. Fee and discount adjustments walk
}

PriceBreakdown — Breaks down the composition of fixed_price from a list (rate card) price through adjustments.

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"
)

func KnownPricingModelValues

func KnownPricingModelValues() []PricingModel

KnownPricingModelValues returns the current schema-defined values for PricingModel.

func ParsePricingModel

func ParsePricingModel(s string) (PricingModel, error)

ParsePricingModel returns s as PricingModel when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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 present for fixed-price models OR FloorPrice + PriceGuidance
  for auction models; MaxBid for auction models to interpret bid_price as
  a ceiling.
cpa:
  FixedPrice present, EventSourceID, EventType; CustomEventName when
  EventType="custom"; EligibleAdjustments for adjustment filtering.
flat_rate:
  FixedPrice present.
time:
  FixedPrice present, Parameters for duration/unit specifics.
All variants: PricingOptionID, Currency, MinSpendPerPackage, PriceBreakdown.

FixedPrice is a pointer because the schema oneOf requires field presence for fixed-price variants. Go represents that presence with non-nil; use Float64(0) if an explicit zero fixed price is intentional.

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"`                // SDK implementers MUST enforce singular-only at runtime: each entry uses the
	Channels                 []Channels                  `json:"channels,omitempty"`                  // Advertising channels this product is sold as. Products inherit from their
	FormatIDs                []FormatRef                 `json:"format_ids,omitempty"`                // Legacy named-format path: array of supported creative format IDs (structured
	FormatOptions            []ProductFormatDeclaration  `json:"format_options,omitempty"`            // 3.1+ format-option path: one or more inline format declarations the product
	Placements               []Placement                 `json:"placements,omitempty"`                // Optional array of specific public placements within this product. Placement
	VideoPlacementTypes      []VideoPlacementType        `json:"video_placement_types,omitempty"`     // Declared video placement types that may be included in this product, using IAB
	AudioDistributionTypes   []AudioDistributionType     `json:"audio_distribution_types,omitempty"`  // Declared audio distribution types that may be included in this product, using
	SponsoredPlacementTypes  []SponsoredPlacementType    `json:"sponsored_placement_types,omitempty"` // Declared sponsored-placement types that may be included in this product
	SocialPlacementSurfaces  []SocialPlacementSurface    `json:"social_placement_surfaces,omitempty"` // Declared social-placement surfaces that may be included in this product
	DeliveryType             DeliveryType                `json:"delivery_type"`
	Exclusivity              Exclusivity                 `json:"exclusivity,omitempty"`           // Whether this product offers exclusive access to its inventory. Defaults to
	PricingOptions           []PricingOption             `json:"pricing_options"`                 // Available pricing models for this product
	Forecast                 *DeliveryForecast           `json:"forecast,omitempty"`              // Forecasted delivery metrics for this product. Gives buyers an estimate of
	OutcomeMeasurement       *OutcomeMeasurement         `json:"outcome_measurement,omitempty"`   // **Deprecated as of this minor.** Outcome capabilities (incremental sales lift
	DeliveryMeasurement      *ProductDeliveryMeasurement `json:"delivery_measurement,omitempty"`  // Measurement vendors and methodology for delivery metrics. The buyer accepts
	MeasurementTerms         *MeasurementTerms           `json:"measurement_terms,omitempty"`     // Seller's default billing measurement and makegood terms. Declares who counts
	PerformanceStandards     []PerformanceStandard       `json:"performance_standards,omitempty"` // Seller's default performance standards for this product: viewability, IVT
	CancellationPolicy       *CancellationPolicy         `json:"cancellation_policy,omitempty"`   // Cancellation terms for this product. Declares the minimum notice period
	AllowedActions           []ProductAllowedAction      `json:"allowed_actions,omitempty"`       // Actions buyers may perform on buys created against this product, scoped to
	ReportingCapabilities    ReportingCapabilities       `json:"reporting_capabilities"`
	CreativePolicy           *CreativePolicy             `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
	// Deprecated: Deprecated.
	DataProviderSignals        []DataProviderSignalSelector   `json:"data_provider_signals,omitempty"`        // Deprecated. Legacy/non-selectable metadata for data-provider signals already
	IncludedSignals            []SignalListing                `json:"included_signals,omitempty"`             // Non-selectable signal metadata for signals already included in, bundled with
	SignalTargetingOptions     []ProductSignalTargetingOption `json:"signal_targeting_options,omitempty"`     // Inline seller-offered signals that may be applied to packages for this product
	SignalTargetingRules       *SignalTargetingRules          `json:"signal_targeting_rules,omitempty"`       // Composition rules for selecting signals on this product. The selectable signal
	SignalTargetingAllowed     *bool                          `json:"signal_targeting_allowed,omitempty"`     // Whether this product has a package-level signal_targeting_groups surface. When
	CatalogTypes               []CatalogType                  `json:"catalog_types,omitempty"`                // Catalog types this product supports for catalog-driven campaigns. A sponsored
	MetricOptimization         *ProductMetricOptimization     `json:"metric_optimization,omitempty"`          // Metric optimization capabilities for this product. Presence indicates the
	VendorMetricOptimization   *VendorMetricOptimization      `json:"vendor_metric_optimization,omitempty"`   // Vendor-attested metric optimization capabilities for this product. Presence
	MaxOptimizationGoals       int                            `json:"max_optimization_goals,omitempty"`       // Maximum number of optimization_goals this product accepts on a package. When
	MeasurementReadiness       *MeasurementReadiness          `json:"measurement_readiness,omitempty"`        // Assessment of whether the buyer's event source setup is sufficient for this
	ConversionTracking         *ProductConversionTracking     `json:"conversion_tracking,omitempty"`          // Conversion event tracking for this product. Presence indicates the product
	CatalogMatch               *ProductCatalogMatch           `json:"catalog_match,omitempty"`                // When the buyer provides a catalog on get_products, indicates which catalog
	BriefRelevance             string                         `json:"brief_relevance,omitempty"`              // Explanation of why this product matches the brief (only included when brief is
	ExpiresAt                  string                         `json:"expires_at,omitempty"`                   // Expiration timestamp. After this time, the product may no longer be available
	ProductCard                *ProductCard                   `json:"product_card,omitempty"`                 // Optional standard visual card for displaying this product in user interfaces
	ProductCardDetailed        *ProductCardDetailed           `json:"product_card_detailed,omitempty"`        // Optional detailed card with hero + carousel + structured specifications, for
	Collections                []CollectionSelector           `json:"collections,omitempty"`                  // Collections available in this product. Each entry references collections
	CollectionTargetingAllowed *bool                          `json:"collection_targeting_allowed,omitempty"` // Whether buyers can target a subset of this product's collections. When false
	Installments               []Installment                  `json:"installments,omitempty"`                 // Specific installments included in this product. Each installment references
	EnforcedPolicies           []string                       `json:"enforced_policies,omitempty"`            // Registry policy IDs the seller enforces for this product. Enforcement level
	TrustedMatch               *ProductTrustedMatch           `json:"trusted_match,omitempty"`                // Trusted Match Protocol capabilities for this product. When present, the
	MaterialSubmission         *ProductMaterialSubmission     `json:"material_submission,omitempty"`          // Instructions for submitting physical creative materials (print, static OOH
	Ext                        any                            `json:"ext,omitempty"`
}

Product — Represents available advertising inventory

type ProductAllocation

type ProductAllocation struct {
	ProductID            string            `json:"product_id"`                  // ID of the product (must reference a product in the products array)
	AllocationPercentage float64           `json:"allocation_percentage"`       // Percentage of total budget allocated to this product (0-100)
	PricingOptionID      string            `json:"pricing_option_id,omitempty"` // Recommended pricing option ID from the product's pricing_options array
	Rationale            string            `json:"rationale,omitempty"`         // Explanation of why this product and allocation are recommended
	Sequence             int               `json:"sequence,omitempty"`          // Optional ordering hint for multi-line-item plans (1-based)
	Tags                 []string          `json:"tags,omitempty"`              // Categorical tags for this allocation (e.g., 'desktop', 'german', 'mobile')
	StartTime            string            `json:"start_time,omitempty"`        // Recommended flight start date/time for this allocation in ISO 8601 format.
	EndTime              string            `json:"end_time,omitempty"`          // Recommended flight end date/time for this allocation in ISO 8601 format.
	DaypartTargets       []DaypartTarget   `json:"daypart_targets,omitempty"`   // Recommended time windows for this allocation in spot-plan proposals.
	Forecast             *DeliveryForecast `json:"forecast,omitempty"`          // Forecasted delivery metrics for this allocation
	Ext                  any               `json:"ext,omitempty"`
}

ProductAllocation — A budget allocation for a specific product within a proposal. Percentages across all allocations

type ProductAllowedAction

type ProductAllowedAction struct {
	Action          MediaBuyValidAction  `json:"action"`                     // The action identifier.
	Modes           []MediaBuyActionMode `json:"modes"`                      // Modes available for this action on this product. A product may declare
	AllowedStatuses []MediaBuyStatus     `json:"allowed_statuses,omitempty"` // Media buy statuses in which this action is permitted. When absent, the action
	Sla             *SlaWindow           `json:"sla,omitempty"`              // Optional SLA commitment for this action on this product. Absence means no
	TermsRef        string               `json:"terms_ref,omitempty"`        // Optional pointer into buy-terms negotiation (forward-references the buy-terms
}

ProductAllowedAction — An action a seller declares as allowed on buys created against this product, scoped to the buy

type ProductCard

type ProductCard struct {
	Image       *ImageAsset `json:"image,omitempty"`       // Hero image for the card. Recommended ~300x400 (4:3 portrait) for the standard
	Title       string      `json:"title,omitempty"`       // Card title (typically the product name).
	Description string      `json:"description,omitempty"` // Short descriptive blurb shown below the title.
	PriceLabel  string      `json:"price_label,omitempty"` // Formatted price or pricing summary (e.g., 'From $5 CPM', 'Auction floor $0.50
	CTALabel    string      `json:"cta_label,omitempty"`   // Call-to-action button label (e.g., 'View details', 'Get proposal').
}

ProductCard — Optional standard visual card for displaying this product in user interfaces (catalog browsers

type ProductCardDetailed

type ProductCardDetailed struct {
	HeroImage      *ImageAsset                `json:"hero_image,omitempty"`      // Primary hero image at the top of the detailed view.
	CarouselImages []ImageAsset               `json:"carousel_images,omitempty"` // Additional images for a swipeable carousel below the hero.
	Title          string                     `json:"title,omitempty"`           // Page title (typically the product name).
	Description    string                     `json:"description,omitempty"`     // Full descriptive copy. Markdown allowed in client renderers that support it
	Specifications []ProductCardSpecification `json:"specifications,omitempty"`  // Structured key/value specifications (e.g., 'Aspect ratio: 9:16', 'Duration
	PriceLabel     string                     `json:"price_label,omitempty"`     // Formatted price or pricing summary.
	CTALabel       string                     `json:"cta_label,omitempty"`       // Call-to-action button label.
}

ProductCardDetailed — Optional detailed card with hero + carousel + structured specifications, for rich product

type ProductCardSpecification

type ProductCardSpecification struct {
	Label string `json:"label"`
	Value string `json:"value"`
}

type ProductCatalogMatch

type ProductCatalogMatch struct {
	MatchedGtins   []string `json:"matched_gtins,omitempty"` // GTINs from the buyer's catalog that are eligible on this product's inventory.
	MatchedIDs     []string `json:"matched_ids,omitempty"`   // Item IDs from the buyer's catalog that matched this product's inventory. The
	MatchedCount   int      `json:"matched_count,omitempty"` // Number of catalog items that matched this product's inventory.
	SubmittedCount int      `json:"submitted_count"`         // Total catalog items evaluated from the buyer's catalog.
}

ProductCatalogMatch — When the buyer provides a catalog on get_products, indicates which catalog items are eligible for

type ProductConversionTracking

type ProductConversionTracking struct {
	ActionSources    []ActionSource `json:"action_sources,omitempty"`    // Action sources relevant to this product (e.g. a retail media product might
	SupportedTargets []string       `json:"supported_targets,omitempty"` // Target kinds available for event goals on this product. Values match
	PlatformManaged  *bool          `json:"platform_managed,omitempty"`  // Whether the seller provides its own always-on measurement (e.g. Amazon sales
}

ProductConversionTracking — Conversion event tracking for this product. Presence indicates the product supports

type ProductDeliveryMeasurement

type ProductDeliveryMeasurement struct {
	Vendors  []BrandReference `json:"vendors,omitempty"`  // Measurement vendors used for this product, as structured `BrandRef`
	Provider string           `json:"provider,omitempty"` // **Deprecated as of this minor.** Free-form measurement provider description
	Notes    string           `json:"notes,omitempty"`    // Additional details about measurement methodology in plain language (e.g.
}

ProductDeliveryMeasurement — Measurement vendors and methodology for delivery metrics. The buyer accepts the declared vendors

type ProductFilterBudgetRange

type ProductFilterBudgetRange struct {
	Min      *float64 `json:"min,omitempty"` // Minimum budget amount
	Max      *float64 `json:"max,omitempty"` // Maximum budget amount
	Currency string   `json:"currency"`      // ISO 4217 currency code (e.g., 'USD', 'EUR', 'GBP')
}

ProductFilterBudgetRange — Budget range to filter appropriate products

type ProductFilterGeoProximity

type ProductFilterGeoProximity struct {
	Lat           *float64                 `json:"lat,omitempty"`            // Latitude in decimal degrees (WGS 84)
	Lng           *float64                 `json:"lng,omitempty"`            // Longitude in decimal degrees (WGS 84)
	Label         string                   `json:"label,omitempty"`          // Human-readable label (e.g., 'Düsseldorf', 'Heathrow Airport')
	TravelTime    *ProductFilterTravelTime `json:"travel_time,omitempty"`    // Travel time limit for isochrone calculation
	TransportMode TransportMode            `json:"transport_mode,omitempty"` // Transportation mode for isochrone calculation. Required when travel_time is
	Radius        *ProductFilterRadius     `json:"radius,omitempty"`         // Simple radius from the point
	Geometry      *ProductFilterGeometry   `json:"geometry,omitempty"`       // Pre-computed GeoJSON geometry defining the proximity boundary
}

type ProductFilterGeoTargetingRequirement

type ProductFilterGeoTargetingRequirement struct {
	Level   GeoLevel `json:"level"`             // Geographic targeting level (country, region, metro, postal_area)
	Country string   `json:"country,omitempty"` // ISO 3166-1 alpha-2 country code. Required for native postal_area system
	System  string   `json:"system,omitempty"`  // Optional classification system within the level. Use for a specific metro
}

type ProductFilterGeometry

type ProductFilterGeometry struct {
	Type        string `json:"type"`        // GeoJSON geometry type
	Coordinates []any  `json:"coordinates"` // GeoJSON coordinates array
}

ProductFilterGeometry — Pre-computed GeoJSON geometry defining the proximity boundary

type ProductFilterKeyword

type ProductFilterKeyword struct {
	Keyword   string    `json:"keyword"` // The keyword to target
	MatchType MatchType `json:"match_type,omitempty"`
}

type ProductFilterMetro

type ProductFilterMetro struct {
	System MetroSystem `json:"system"` // Metro classification system
	Code   string      `json:"code"`   // Metro code within the system (e.g., '501' for NYC DMA)
}

type ProductFilterPostalArea

type ProductFilterPostalArea struct {
	Country string             `json:"country,omitempty"` // ISO 3166-1 alpha-2 country code for the postal values.
	System  LegacyPostalSystem `json:"system,omitempty"`  // Deprecated country-fused postal code system (e.g., 'us_zip', 'gb_outward').
	Values  []string           `json:"values,omitempty"`  // Postal codes within the legacy system.
}

type ProductFilterRadius

type ProductFilterRadius struct {
	Value float64      `json:"value"` // Radius distance
	Unit  DistanceUnit `json:"unit"`  // Distance unit
}

ProductFilterRadius — Simple radius from the point

type ProductFilterTravelTime

type ProductFilterTravelTime struct {
	Value float64        `json:"value"` // Travel time limit
	Unit  TravelTimeUnit `json:"unit"`
}

ProductFilterTravelTime — Travel time limit for isochrone calculation

type ProductFilterTrustedMatch

type ProductFilterTrustedMatch struct {
	Providers     []ProductFilterTrustedMatchProvider `json:"providers,omitempty"`      // Filter to products with specific TMP providers and match types. Each entry
	ResponseTypes []ResponseType                      `json:"response_types,omitempty"` // Filter to products supporting specific TMP response types (e.g., 'activation'
}

ProductFilterTrustedMatch — Filter products by Trusted Match Protocol capabilities. Only products with matching TMP support

type ProductFilterTrustedMatchProvider

type ProductFilterTrustedMatchProvider struct {
	AgentURL      string `json:"agent_url"`                // Provider's agent URL from the registry.
	ContextMatch  *bool  `json:"context_match,omitempty"`  // When true, require this provider to support context match.
	IdentityMatch *bool  `json:"identity_match,omitempty"` // When true, require this provider to support identity match.
}

type ProductFilters

type ProductFilters struct {
	DeliveryType            DeliveryType              `json:"delivery_type,omitempty"`
	Exclusivity             Exclusivity               `json:"exclusivity,omitempty"`               // Filter by exclusivity level. Returns products matching the specified
	IsFixedPrice            *bool                     `json:"is_fixed_price,omitempty"`            // Filter by pricing availability and returned pricing options: true = products
	PricingCurrencies       []string                  `json:"pricing_currencies,omitempty"`        // Filter by currencies the buyer can use for the media product transaction
	FormatIDs               []FormatRef               `json:"format_ids,omitempty"`                // Filter by specific format IDs
	StandardFormatsOnly     *bool                     `json:"standard_formats_only,omitempty"`     // Only return products accepting IAB standard formats
	MinExposures            int                       `json:"min_exposures,omitempty"`             // Minimum exposures/impressions needed for measurement validity
	StartDate               string                    `json:"start_date,omitempty"`                // Campaign start date (ISO 8601 date format: YYYY-MM-DD) for availability checks
	EndDate                 string                    `json:"end_date,omitempty"`                  // Campaign end date (ISO 8601 date format: YYYY-MM-DD) for availability checks
	BudgetRange             *ProductFilterBudgetRange `json:"budget_range,omitempty"`              // Budget range to filter appropriate products
	Countries               []string                  `json:"countries,omitempty"`                 // Filter by country coverage using ISO 3166-1 alpha-2 codes (e.g., ['US', 'CA'
	Regions                 []string                  `json:"regions,omitempty"`                   // Filter by region coverage using ISO 3166-2 codes (e.g., ['US-NY', 'US-CA'
	Metros                  []ProductFilterMetro      `json:"metros,omitempty"`                    // Filter by metro coverage for locally-bound inventory (radio, DOOH, local TV).
	Channels                []Channels                `json:"channels,omitempty"`                  // Filter by advertising channels (e.g., ['display', 'ctv', 'dooh'])
	VideoPlacementTypes     []VideoPlacementType      `json:"video_placement_types,omitempty"`     // Filter video products by acceptable declared video placement types, using IAB
	AudioDistributionTypes  []AudioDistributionType   `json:"audio_distribution_types,omitempty"`  // Filter audio products by acceptable declared audio distribution types, using
	SponsoredPlacementTypes []SponsoredPlacementType  `json:"sponsored_placement_types,omitempty"` // Filter retail-media products by acceptable declared sponsored-placement types
	SocialPlacementSurfaces []SocialPlacementSurface  `json:"social_placement_surfaces,omitempty"` // Filter social products by acceptable declared social-placement surfaces (feed
	// Deprecated: Use trusted_match filter instead.
	RequiredAxeIntegrations      []string                               `json:"required_axe_integrations,omitempty"`      // Deprecated: Use trusted_match filter instead. Filter to products executable
	TrustedMatch                 *ProductFilterTrustedMatch             `json:"trusted_match,omitempty"`                  // Filter products by Trusted Match Protocol capabilities. Only products with
	RequiredFeatures             map[string]bool                        `json:"required_features,omitempty"`              // Filter to products from sellers supporting specific protocol features. Only
	RequiredGeoTargeting         []ProductFilterGeoTargetingRequirement `json:"required_geo_targeting,omitempty"`         // Filter to products from sellers supporting specific geo targeting
	SignalTargeting              []SignalTargeting                      `json:"signal_targeting,omitempty"`               // Filter to products where the requested signals are buyer-selectable and
	PostalAreas                  []ProductFilterPostalArea              `json:"postal_areas,omitempty"`                   // Filter by postal area coverage for locally-bound inventory (direct mail, DOOH
	GeoProximity                 []ProductFilterGeoProximity            `json:"geo_proximity,omitempty"`                  // Filter by proximity to geographic points. Returns products with inventory
	RequiredPerformanceStandards []PerformanceStandard                  `json:"required_performance_standards,omitempty"` // Filter to products that can meet the buyer's performance standard
	RequiredMetrics              []AvailableMetric                      `json:"required_metrics,omitempty"`               // Filter to products whose `reporting_capabilities.available_metrics` is a
	RequiredVendorMetrics        []RequiredVendorMetric                 `json:"required_vendor_metrics,omitempty"`        // Filter to products whose `reporting_capabilities.vendor_metrics` matches these
	Keywords                     []ProductFilterKeyword                 `json:"keywords,omitempty"`                       // Filter by keyword relevance for search and retail media platforms. Returns
	Ext                          any                                    `json:"ext,omitempty"`                            // Vendor-namespaced extension parameters for seller-specific filter criteria not
}

ProductFilters — Structured filters for product discovery

type ProductFormatDeclaration

type ProductFormatDeclaration struct {
	FormatKind           string                `json:"format_kind"`
	Params               map[string]any        `json:"params"`                           // Custom shape's params. Validated against the schema fetched from
	FormatOptionID       string                `json:"format_option_id,omitempty"`       // Stable identifier for this format declaration within its namespace. REQUIRED
	PublisherDomain      string                `json:"publisher_domain,omitempty"`       // Namespace for `format_option_id` when this declaration references or narrows a
	DisplayName          string                `json:"display_name,omitempty"`           // Optional seller-controlled human-readable label for this format declaration.
	AppliesToChannels    []Channels            `json:"applies_to_channels,omitempty"`    // Optional subset of the parent product's `channels` to which this declaration
	SellerPreference     string                `json:"seller_preference,omitempty"`      // Optional soft routing hint *within* a product's accepted set of formats — NOT
	CanonicalFormatsOnly *bool                 `json:"canonical_formats_only,omitempty"` // When true, this format declaration has no clean v1 projection and SDKs MUST
	Experimental         *bool                 `json:"experimental,omitempty"`           // When true, THIS seller's specific product declaration may not work as declared
	FormatShape          string                `json:"format_shape,omitempty"`           // REQUIRED when `format_kind: "custom"`; otherwise MUST be absent. Recognized
	V1FormatRef          []FormatRef           `json:"v1_format_ref,omitempty"`          // Authoritative v2 → v1 link, expressed as an array of one or more v1
	FormatSchema         *PlatformExtensionRef `json:"format_schema,omitempty"`          // REQUIRED when `format_kind: "custom"`; otherwise MUST be absent. URI+digest
}

ProductFormatDeclaration — Inline format declaration on a product. The `format_kind` discriminator names which canonical

type ProductMaterialSubmission

type ProductMaterialSubmission struct {
	URL          string `json:"url,omitempty"`          // HTTPS URL for uploading or submitting physical creative materials
	Email        string `json:"email,omitempty"`        // Email address for creative material submission
	Instructions string `json:"instructions,omitempty"` // Human-readable instructions for material submission (file naming conventions
	Ext          any    `json:"ext,omitempty"`
}

ProductMaterialSubmission — Instructions for submitting physical creative materials (print, static OOH, cinema). Present only

type ProductMetricOptimization

type ProductMetricOptimization struct {
	SupportedMetrics       []string    `json:"supported_metrics"`                  // Metric kinds this product can optimize for. Buyers should only request metric
	SupportedReachUnits    []ReachUnit `json:"supported_reach_units,omitempty"`    // Reach units this product can optimize for. Required when supported_metrics
	SupportedViewDurations []float64   `json:"supported_view_durations,omitempty"` // Video view duration thresholds (in seconds) this product supports for
	SupportedTargets       []string    `json:"supported_targets,omitempty"`        // Target kinds available for metric goals on this product. Values match
}

ProductMetricOptimization — Metric optimization capabilities for this product. Presence indicates the product supports

type ProductSignalTargetingOption

type ProductSignalTargetingOption struct {
	SignalRef SignalRef `json:"signal_ref"` // Canonical signal reference. Use scope 'product' for a product-local signal
	// Deprecated: DEPRECATED.
	SignalID              *SignalID             `json:"signal_id,omitempty"`               // DEPRECATED. Use signal_ref instead. Legacy SignalId retained for compatibility
	Name                  string                `json:"name,omitempty"`                    // Human-readable signal name. Required when signal_ref.scope is 'product'. For
	Description           string                `json:"description,omitempty"`             // Detailed signal description. For data_provider and signal_source refs, this is
	MethodologyURL        string                `json:"methodology_url,omitempty"`         // Optional link to published methodology, media-kit, or data documentation. For
	LastUpdated           string                `json:"last_updated,omitempty"`            // When this listing record was last updated. This indicates freshness of the
	ValueType             SignalValueType       `json:"value_type,omitempty"`              // The data type of this signal's values. Required when signal_ref.scope is
	Categories            []string              `json:"categories,omitempty"`              // Valid values for categorical signals. Present when value_type is 'categorical'.
	Range                 *SignalRange          `json:"range,omitempty"`                   // Valid range for numeric signals. Present when value_type is 'numeric'.
	SignalAgentSegmentID  string                `json:"signal_agent_segment_id,omitempty"` // Optional opaque resolved-segment or seller execution handle for this signal.
	ActivationStatus      string                `json:"activation_status,omitempty"`       // Whether this signal option is ready to select on create_media_buy for the
	AllowedTargetingModes []string              `json:"allowed_targeting_modes,omitempty"` // How this signal may be used when composing package-level signal targeting
	DefaultSelected       *bool                 `json:"default_selected,omitempty"`        // Whether the seller recommends or preselects this signal when composing this
	SelectionGroup        string                `json:"selection_group,omitempty"`         // Optional product-defined composability bucket for signal options, such as
	PricingOptions        []VendorPricingOption `json:"pricing_options,omitempty"`         // Signal pricing options available when this signal is selected on this product.
}

ProductSignalTargetingOption — A signal the seller makes available inline for package-level signal composition on this product.

type ProductTrustedMatch

type ProductTrustedMatch struct {
	ContextMatch  bool                          `json:"context_match"`            // Whether this product supports Context Match requests. When true, the
	IdentityMatch *bool                         `json:"identity_match,omitempty"` // Whether this product supports Identity Match requests. When true, the
	ResponseTypes []ResponseType                `json:"response_types,omitempty"` // What the publisher can accept back from context match.
	DynamicBrands *bool                         `json:"dynamic_brands,omitempty"` // Whether the buyer can select a brand at match time. When false (default), the
	Providers     []ProductTrustedMatchProvider `json:"providers,omitempty"`      // TMP providers integrated with this product's inventory. Each entry identifies
}

ProductTrustedMatch — Trusted Match Protocol capabilities for this product. When present, the product supports real-time

type ProductTrustedMatchProvider

type ProductTrustedMatchProvider struct {
	AgentURL      string    `json:"agent_url"`                // Provider's agent URL from the registry. Canonical identifier for this TMP
	ContextMatch  *bool     `json:"context_match,omitempty"`  // Whether this provider handles context match for this product.
	IdentityMatch *bool     `json:"identity_match,omitempty"` // Whether this provider handles identity match for this product.
	Countries     []string  `json:"countries,omitempty"`      // ISO 3166-1 alpha-2 country codes this provider serves for identity match. The
	UIDTypes      []UIDType `json:"uid_types,omitempty"`      // Identity types this regional provider can resolve. The router filters
}

type ProductionQuality

type ProductionQuality = string

ProductionQuality — Production quality tier for collection content. Maps to OpenRTB content.prodq

const (
	ProductionQualityProfessional ProductionQuality = "professional"
	ProductionQualityProsumer     ProductionQuality = "prosumer"
	ProductionQualityUgc          ProductionQuality = "ugc"
)

func KnownProductionQualityValues

func KnownProductionQualityValues() []ProductionQuality

KnownProductionQualityValues returns the current schema-defined values for ProductionQuality.

func ParseProductionQuality

func ParseProductionQuality(s string) (ProductionQuality, error)

ParseProductionQuality returns s as ProductionQuality when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type ProductsData

type ProductsData struct {
	Products             []Product                          `json:"products"`
	RefinementApplied    []GetProductsRefinementAppliedItem `json:"refinement_applied,omitempty"`
	WholesaleFeedVersion string                             `json:"wholesale_feed_version,omitempty"`
	PricingVersion       string                             `json:"pricing_version,omitempty"`
	CacheScope           string                             `json:"cache_scope,omitempty"`
	Unchanged            *bool                              `json:"unchanged,omitempty"`
	Sandbox              bool                               `json:"sandbox,omitempty"`
	Context              any                                `json:"context,omitempty"`
}

type PropertyChangeSummary

type PropertyChangeSummary struct {
	PropertiesAdded   int `json:"properties_added,omitempty"`   // Number of properties added since last resolution
	PropertiesRemoved int `json:"properties_removed,omitempty"` // Number of properties removed since last resolution
	TotalProperties   int `json:"total_properties,omitempty"`   // Total properties in the resolved list
}

PropertyChangeSummary — Summary of changes to the resolved list

type PropertyListChangedWebhook

type PropertyListChangedWebhook struct {
	IdempotencyKey  string                 `json:"idempotency_key"`             // Sender-generated key stable across retries of the same webhook event.
	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   *PropertyChangeSummary `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
	Ext             any                    `json:"ext,omitempty"`
}

PropertyListChangedWebhook — Webhook notification sent when a property list's resolved properties change. Contains a summary

func (*PropertyListChangedWebhook) IdempotencyKeyPtr

func (p *PropertyListChangedWebhook) IdempotencyKeyPtr() *string

type PropertyListRef

type PropertyListRef struct {
	AgentURL  string `json:"agent_url"`            // URL of the agent managing the property list
	ListID    string `json:"list_id"`              // Identifier for the property list within the agent
	AuthToken string `json:"auth_token,omitempty"` // JWT or other authorization token for accessing the list. Optional if the list
}

PropertyListRef — Reference to an externally managed property list. Enables passing large property sets (50,000+)

type PropertyType

type PropertyType = string

PropertyType — Types of addressable advertising properties with verifiable ownership.

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"
)

func KnownPropertyTypeValues

func KnownPropertyTypeValues() []PropertyType

KnownPropertyTypeValues returns the current schema-defined values for PropertyType.

func ParsePropertyType

func ParsePropertyType(s string) (PropertyType, error)

ParsePropertyType returns s as PropertyType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type Proposal

type Proposal struct {
	ProposalID          string                  `json:"proposal_id"`                     // Unique identifier for this proposal. Used to finalize a draft proposal and to
	Name                string                  `json:"name"`                            // Human-readable name for this media plan proposal
	Description         string                  `json:"description,omitempty"`           // Explanation of the proposal strategy and what it achieves
	Allocations         []ProductAllocation     `json:"allocations"`                     // Budget allocations across products. Allocation percentages MUST sum to 100.
	ProposalStatus      ProposalStatus          `json:"proposal_status,omitempty"`       // Lifecycle status of this proposal and the per-proposal source of truth for
	ExpiresAt           string                  `json:"expires_at,omitempty"`            // When this proposal expires and can no longer be executed. For draft proposals
	InsertionOrder      *InsertionOrder         `json:"insertion_order,omitempty"`       // Formal insertion order attached to a committed proposal. Present when the
	TotalBudgetGuidance *ProposalBudgetGuidance `json:"total_budget_guidance,omitempty"` // Optional budget guidance for this proposal
	BriefAlignment      string                  `json:"brief_alignment,omitempty"`       // Explanation of how this proposal aligns with the campaign brief
	Forecast            *DeliveryForecast       `json:"forecast,omitempty"`              // Aggregate forecasted delivery metrics for the entire proposal. When both
	Ext                 any                     `json:"ext,omitempty"`
}

Proposal — A proposed media plan with budget allocations across products. Represents the publisher's

type ProposalBudgetGuidance

type ProposalBudgetGuidance struct {
	Min         float64 `json:"min,omitempty"`         // Minimum recommended budget
	Recommended float64 `json:"recommended,omitempty"` // Recommended budget for optimal performance
	Max         float64 `json:"max,omitempty"`         // Maximum budget before diminishing returns
	Currency    string  `json:"currency,omitempty"`    // ISO 4217 currency code
}

ProposalBudgetGuidance — Optional budget guidance for this proposal

type ProposalStatus

type ProposalStatus = string

ProposalStatus — Lifecycle status of a proposal.

const (
	ProposalStatusDraft     ProposalStatus = "draft"
	ProposalStatusCommitted ProposalStatus = "committed"
)

func KnownProposalStatusValues

func KnownProposalStatusValues() []ProposalStatus

KnownProposalStatusValues returns the current schema-defined values for ProposalStatus.

func ParseProposalStatus

func ParseProposalStatus(s string) (ProposalStatus, error)

ParseProposalStatus returns s as ProposalStatus when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type ProtocolEnvelope

type ProtocolEnvelope struct {
	ContextID              string                  `json:"context_id,omitempty"`               // Session/conversation identifier for tracking related operations across
	Context                any                     `json:"context,omitempty"`                  // Per-request opaque caller-supplied correlation object echoed unchanged in the
	TaskID                 string                  `json:"task_id,omitempty"`                  // Unique identifier for tracking asynchronous operations. Present when a task
	Status                 TaskStatus              `json:"status"`                             // Current task execution state. Indicates whether the task is completed, in
	Message                string                  `json:"message,omitempty"`                  // Human-readable summary of the task result. Provides natural language
	Timestamp              string                  `json:"timestamp,omitempty"`                // ISO 8601 timestamp when the response was generated. Useful for debugging
	Replayed               *bool                   `json:"replayed,omitempty"`                 // Set to true when this response was returned from the idempotency cache rather
	AdcpError              AdcpError               `json:"adcp_error,omitempty"`               // Transport-envelope error signal for fatal task failures. Per the two-layer
	PushNotificationConfig *PushNotificationConfig `json:"push_notification_config,omitempty"` // Push notification configuration for async task updates (A2A and REST
	GovernanceContext      string                  `json:"governance_context,omitempty"`       // Governance context token issued by the account's governance agent during
	Payload                map[string]any          `json:"payload,omitempty"`                  // Conceptual grouping for the task-specific response data defined by individual
}

ProtocolEnvelope — Canonical envelope field-set for AdCP task responses, normalized across transports. Defines the

type Provenance

type Provenance struct {
	DigitalSourceType  DigitalSourceType              `json:"digital_source_type,omitempty"` // IPTC-aligned classification of AI involvement in producing this content
	AITool             *ProvenanceAITool              `json:"ai_tool,omitempty"`             // AI system used to generate or modify this content. Aligns with IPTC 2025.1 AI
	HumanOversight     string                         `json:"human_oversight,omitempty"`     // Level of human involvement in the AI-assisted creation process. Independent of
	DeclaredBy         *ProvenanceDeclaredBy          `json:"declared_by,omitempty"`         // Party declaring this provenance. Identifies who attached the provenance claim
	DeclaredAt         string                         `json:"declared_at,omitempty"`         // When this provenance claim was made (ISO 8601). Distinct from created_time
	CreatedTime        string                         `json:"created_time,omitempty"`        // When this content was created or generated (ISO 8601)
	C2PA               *ProvenanceC2PA                `json:"c2pa,omitempty"`                // C2PA sidecar manifest reference. Links to a detached cryptographic provenance
	EmbeddedProvenance []ProvenanceEmbeddedProvenance `json:"embedded_provenance,omitempty"` // Provenance metadata embedded within the content stream. Each entry declares
	Watermarks         []ProvenanceWatermark          `json:"watermarks,omitempty"`          // Content watermarks applied to this asset. Each entry declares one watermarking
	Disclosure         *ProvenanceDisclosure          `json:"disclosure,omitempty"`          // Regulatory disclosure requirements for this content. Indicates whether AI
	Verification       []ProvenanceVerification       `json:"verification,omitempty"`        // Third-party verification or detection results for this content. Multiple
	Ext                any                            `json:"ext,omitempty"`
}

Provenance — Declares how content was produced, whether AI was involved, and what disclosure obligations apply.

type ProvenanceAITool

type ProvenanceAITool struct {
	Name     string `json:"name"`               // Name of the AI tool or model (e.g., 'DALL-E 3', 'Stable Diffusion XL', 'Gemini')
	Version  string `json:"version,omitempty"`  // Version identifier for the AI tool or model (e.g., '25.1', '0125', '2.1'). For
	Provider string `json:"provider,omitempty"` // Organization that provides the AI tool (e.g., 'OpenAI', 'Stability AI'
}

ProvenanceAITool — AI system used to generate or modify this content. Aligns with IPTC 2025.1 AI metadata fields and

type ProvenanceAuditObservationsSuccess

type ProvenanceAuditObservationsSuccess struct {
	Success           bool               `json:"success"`
	CreativeID        string             `json:"creative_id"`        // Creative ID whose audit observations were queried.
	AuditObservations []AuditObservation `json:"audit_observations"` // Audit observations recorded for the creative in the sandbox session.
	Context           any                `json:"context,omitempty"`
	Ext               any                `json:"ext,omitempty"`
}

ProvenanceAuditObservationsSuccess — A query_provenance_audit_observations scenario returned sandbox-recorded audit observations for a

type ProvenanceC2PA

type ProvenanceC2PA struct {
	ManifestURL string `json:"manifest_url"` // URL to the C2PA manifest store for this content
}

ProvenanceC2PA — C2PA sidecar manifest reference. Links to a detached cryptographic provenance manifest for this

type ProvenanceDeclaredBy

type ProvenanceDeclaredBy struct {
	AgentURL string `json:"agent_url,omitempty"` // URL of the agent or service that declared this provenance
	Role     string `json:"role"`                // Role of the declaring party in the supply chain
}

ProvenanceDeclaredBy — Party declaring this provenance. Identifies who attached the provenance claim, enabling receiving

type ProvenanceDisclosure

type ProvenanceDisclosure struct {
	Required      bool                               `json:"required"`                // The declaring party's claim that AI disclosure is required for this content
	Jurisdictions []ProvenanceDisclosureJurisdiction `json:"jurisdictions,omitempty"` // Jurisdictions where disclosure obligations apply
}

ProvenanceDisclosure — Regulatory disclosure requirements for this content. Indicates whether AI disclosure is required

type ProvenanceDisclosureJurisdiction

type ProvenanceDisclosureJurisdiction struct {
	Country        string                              `json:"country"`                   // ISO 3166-1 alpha-2 country code (e.g., 'US', 'DE', 'CN')
	Region         string                              `json:"region,omitempty"`          // Sub-national region code (e.g., 'CA' for California, 'BY' for Bavaria)
	Regulation     string                              `json:"regulation"`                // Regulation identifier (e.g., 'eu_ai_act_article_50', 'ca_sb_942'
	LabelText      string                              `json:"label_text,omitempty"`      // Required disclosure label text for this jurisdiction, in the local language
	RenderGuidance *ProvenanceDisclosureRenderGuidance `json:"render_guidance,omitempty"` // How the disclosure should be rendered for this jurisdiction. Expresses the
}

type ProvenanceDisclosureRenderGuidance

type ProvenanceDisclosureRenderGuidance struct {
	Persistence   DisclosurePersistence `json:"persistence,omitempty"`     // How long the disclosure must persist during content playback or display
	MinDurationMs int                   `json:"min_duration_ms,omitempty"` // Minimum display duration in milliseconds for initial persistence. Recommended
	Positions     []DisclosurePosition  `json:"positions,omitempty"`       // Preferred disclosure positions in priority order. The first position a format
	Ext           any                   `json:"ext,omitempty"`
}

ProvenanceDisclosureRenderGuidance — How the disclosure should be rendered for this jurisdiction. Expresses the declaring party's

type ProvenanceEmbeddedProvenance

type ProvenanceEmbeddedProvenance struct {
	Method      EmbeddedProvenanceMethod `json:"method"`                 // How provenance data is carried within the content
	Standard    string                   `json:"standard,omitempty"`     // Standard the embedding conforms to, if any (e.g., 'c2pa' for C2PA Section A.7
	Provider    string                   `json:"provider"`               // Organization that performed the embedding (e.g., 'Encypher', 'Digimarc').
	VerifyAgent *ProvenanceVerifyAgent   `json:"verify_agent,omitempty"` // Buyer's representation that this embedding can be verified by a governance
	EmbeddedAt  string                   `json:"embedded_at,omitempty"`  // When the provenance data was embedded (ISO 8601)
}

type ProvenanceVerification

type ProvenanceVerification struct {
	VerifiedBy   string  `json:"verified_by"`             // Name of the verification service (e.g., 'DoubleVerify', 'Hive Moderation'
	VerifiedTime string  `json:"verified_time,omitempty"` // When the verification was performed (ISO 8601)
	Result       string  `json:"result"`                  // Verification outcome
	Confidence   float64 `json:"confidence,omitempty"`    // Confidence score of the verification result (0.0 to 1.0)
	DetailsURL   string  `json:"details_url,omitempty"`   // URL to the full verification report
}

type ProvenanceVerifyAgent

type ProvenanceVerifyAgent struct {
	AgentURL  string `json:"agent_url"`            // URL of the governance agent the buyer represents was used to embed/verify this
	FeatureID string `json:"feature_id,omitempty"` // Optional `feature_id` the buyer represents the seller should request via
}

ProvenanceVerifyAgent — Buyer's representation that this embedding can be verified by a governance agent on the seller's

type ProvenanceWatermark

type ProvenanceWatermark struct {
	MediaType   WatermarkMediaType     `json:"media_type"`             // Media category of the watermarked content
	Provider    string                 `json:"provider"`               // Organization that applied the watermark (e.g., 'Imatag', 'Steg.AI'
	VerifyAgent *ProvenanceVerifyAgent `json:"verify_agent,omitempty"` // Buyer's representation that this watermark can be detected by a governance
	C2PAAction  C2PAWatermarkAction    `json:"c2pa_action,omitempty"`  // C2PA action classification for this watermark
	EmbeddedAt  string                 `json:"embedded_at,omitempty"`  // When the watermark was applied (ISO 8601)
}

type ProvidePerformanceFeedbackError

type ProvidePerformanceFeedbackError struct {
	Errors  []AdcpError `json:"errors"` // Array of errors explaining why feedback was rejected (e.g., invalid
	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 {
	AdcpVersion       string         `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion  int            `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	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
	MeasurementPeriod DatetimeRange  `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
	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        MetricType     `json:"metric_type,omitempty"`        // The business metric being measured
	FeedbackSource    FeedbackSource `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 interface {
	// contains filtered or unexported methods
}

ProvidePerformanceFeedbackResponse is a discriminated union — use one of the generated variant structs.

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"
)

func KnownPublisherIdentifierTypesValues

func KnownPublisherIdentifierTypesValues() []PublisherIdentifierTypes

KnownPublisherIdentifierTypesValues returns the current schema-defined values for PublisherIdentifierTypes.

func ParsePublisherIdentifierTypes

func ParsePublisherIdentifierTypes(s string) (PublisherIdentifierTypes, error)

ParsePublisherIdentifierTypes returns s as PublisherIdentifierTypes when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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"
)

func KnownPurchaseTypeValues

func KnownPurchaseTypeValues() []PurchaseType

KnownPurchaseTypeValues returns the current schema-defined values for PurchaseType.

func ParsePurchaseType

func ParsePurchaseType(s string) (PurchaseType, error)

ParsePurchaseType returns s as PurchaseType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type PushNotificationConfig

type PushNotificationConfig struct {
	URL            string                       `json:"url"`                      // Webhook endpoint URL for task status notifications. The wire contract is
	OperationID    string                       `json:"operation_id,omitempty"`   // Buyer-supplied correlation identifier for the operation that will produce
	Token          string                       `json:"token,omitempty"`          // Optional client-provided token for webhook validation. The seller MUST echo
	Authentication *LegacyWebhookAuthentication `json:"authentication,omitempty"` // Legacy authentication configuration (A2A-compatible). Opts the seller into
}

PushNotificationConfig — Webhook configuration for asynchronous task notifications. Uses A2A-compatible

type ReachUnit

type ReachUnit = string

ReachUnit — Unit of measurement for reach and audience size metrics. Different channels

const (
	ReachUnitIndividuals ReachUnit = "individuals"
	ReachUnitHouseholds  ReachUnit = "households"
	ReachUnitDevices     ReachUnit = "devices"
	ReachUnitAccounts    ReachUnit = "accounts"
	ReachUnitCookies     ReachUnit = "cookies"
	ReachUnitCustom      ReachUnit = "custom"
)

func KnownReachUnitValues

func KnownReachUnitValues() []ReachUnit

KnownReachUnitValues returns the current schema-defined values for ReachUnit.

func ParseReachUnit

func ParseReachUnit(s string) (ReachUnit, error)

ParseReachUnit returns s as ReachUnit when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type ReachWindow

type ReachWindow struct {
	Kind   string    `json:"kind"`             // Window semantics. `cumulative` — uniques since campaign start; the value is
	Period *Duration `json:"period,omitempty"` // Duration of the measurement window. REQUIRED when `kind` is `period` or
}

ReachWindow — Measurement window for the reported `reach` and `frequency` values in this row. Declares whether

type ReferenceAsset

type ReferenceAsset struct {
	URL         string `json:"url"`                   // URL to the reference asset (image, video, or document)
	Role        string `json:"role"`                  // How the creative agent should use this asset. style_reference: match the
	Description string `json:"description,omitempty"` // Human-readable description of the asset and how it should inform creative
}

ReferenceAsset — A reference asset that provides creative context. Carries visual materials (mood boards, product

type Render

type Render struct {
	Width  int `json:"width"`
	Height int `json:"height"`
}

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 ReportPlanOutcomeDelivery

type ReportPlanOutcomeDelivery struct {
	ReportingPeriod *ReportPlanOutcomeDeliveryReportingPeriod `json:"reporting_period,omitempty"` // Start and end timestamps for the reporting window.
	Impressions     *int                                      `json:"impressions,omitempty"`      // Impressions delivered in the period.
	Spend           *float64                                  `json:"spend,omitempty"`            // Spend in the period.
	CPM             *float64                                  `json:"cpm,omitempty"`              // Effective CPM for the period.
	ViewabilityRate *float64                                  `json:"viewability_rate,omitempty"` // Viewability rate (0-1).
	CompletionRate  *float64                                  `json:"completion_rate,omitempty"`  // Video completion rate (0-1).
}

ReportPlanOutcomeDelivery — Delivery metrics. Required when outcome is 'delivery'.

type ReportPlanOutcomeDeliveryReportingPeriod

type ReportPlanOutcomeDeliveryReportingPeriod struct {
	Start string `json:"start"`
	End   string `json:"end"`
}

ReportPlanOutcomeDeliveryReportingPeriod — Start and end timestamps for the reporting window.

type ReportPlanOutcomeError

type ReportPlanOutcomeError struct {
	Code    string `json:"code,omitempty"`    // Error code from the seller.
	Message string `json:"message,omitempty"` // Human-readable error description.
}

ReportPlanOutcomeError — Error details. Required when outcome is 'failed'.

type ReportPlanOutcomeFinding

type ReportPlanOutcomeFinding struct {
	CategoryID  string             `json:"category_id"`       // Which validation category flagged the issue.
	Severity    EscalationSeverity `json:"severity"`          // Finding severity.
	Explanation string             `json:"explanation"`       // Human-readable description of the issue.
	Details     map[string]any     `json:"details,omitempty"` // Structured details for programmatic consumption.
}

type ReportPlanOutcomePlanSummary

type ReportPlanOutcomePlanSummary struct {
	TotalCommitted  *float64 `json:"total_committed,omitempty"`  // Total budget committed across all campaigns in the plan.
	BudgetRemaining *float64 `json:"budget_remaining,omitempty"` // Authorized budget minus total committed.
}

ReportPlanOutcomePlanSummary — Updated plan budget state. Present for 'completed' and 'failed' outcomes.

type ReportPlanOutcomeRequest

type ReportPlanOutcomeRequest struct {
	AdcpVersion       string                           `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion  int                              `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	PlanID            string                           `json:"plan_id"`                      // The plan this outcome is for. The plan uniquely scopes the account and
	CheckID           string                           `json:"check_id,omitempty"`           // The check_id from check_governance. Links the outcome to the governance check
	IdempotencyKey    string                           `json:"idempotency_key"`              // Client-generated unique key for this request. Prevents duplicate outcome
	PurchaseType      PurchaseType                     `json:"purchase_type,omitempty"`      // The type of financial commitment this outcome is for. Determines which budget
	Outcome           OutcomeType                      `json:"outcome"`                      // Outcome type.
	SellerResponse    *ReportPlanOutcomeSellerResponse `json:"seller_response,omitempty"`    // The seller's full response. Required when outcome is 'completed'.
	Delivery          *ReportPlanOutcomeDelivery       `json:"delivery,omitempty"`           // Delivery metrics. Required when outcome is 'delivery'.
	Error             *ReportPlanOutcomeError          `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
	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

type ReportPlanOutcomeResponse

type ReportPlanOutcomeResponse struct {
	AdcpVersion      string                        `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion int                           `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	OutcomeID        string                        `json:"outcome_id"`                   // Unique identifier for this outcome record.
	OutcomeState     string                        `json:"outcome_state"`                // Outcome state. 'accepted' means state updated with no issues. 'findings' means
	CommittedBudget  float64                       `json:"committed_budget,omitempty"`   // Budget committed from this outcome. Present for 'completed' and 'failed'
	Findings         []ReportPlanOutcomeFinding    `json:"findings,omitempty"`           // Issues detected. Present only when outcome_state is 'findings'.
	PlanSummary      *ReportPlanOutcomePlanSummary `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 was returned from the idempotency cache rather
	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)

type ReportPlanOutcomeSellerPackage

type ReportPlanOutcomeSellerPackage struct {
	Budget *float64 `json:"budget,omitempty"`
}

type ReportPlanOutcomeSellerResponse

type ReportPlanOutcomeSellerResponse struct {
	SellerReference  string                           `json:"seller_reference,omitempty"`  // The seller's identifier for the created resource (e.g., media_buy_id
	CommittedBudget  *float64                         `json:"committed_budget,omitempty"`  // Total budget committed across all confirmed packages. When present, the
	Packages         []ReportPlanOutcomeSellerPackage `json:"packages,omitempty"`          // Confirmed packages with actual budget and targeting.
	PlannedDelivery  *PlannedDelivery                 `json:"planned_delivery,omitempty"`  // What the seller said it will deliver. When seller-side governance is not
	CreativeDeadline string                           `json:"creative_deadline,omitempty"` // ISO 8601 deadline for creative submission.
}

ReportPlanOutcomeSellerResponse — The seller's full response. Required when outcome is 'completed'.

type ReportedSpend

type ReportedSpend struct {
	Amount   float64 `json:"amount"`
	Currency string  `json:"currency"`
}

ReportedSpend is the spend amount and currency.

type ReportingBucket

type ReportingBucket struct {
	Protocol          CloudStorageProtocol `json:"protocol"`                     // Cloud storage protocol
	Bucket            string               `json:"bucket"`                       // Bucket or container name
	Prefix            string               `json:"prefix,omitempty"`             // Path prefix within the bucket. Seller appends date-based partitioning beneath
	Region            string               `json:"region,omitempty"`             // Cloud region for the bucket
	Format            string               `json:"format,omitempty"`             // File format for delivered files. Parquet, Avro, and ORC use internal
	Compression       string               `json:"compression,omitempty"`        // Compression applied to delivered files
	FileRetentionDays int                  `json:"file_retention_days"`          // How long reporting files are retained in the bucket before deletion. Buyers
	SetupInstructions string               `json:"setup_instructions,omitempty"` // URL to documentation for configuring buyer read access to this bucket (IAM
}

ReportingBucket — Cloud storage bucket where the seller delivers offline reporting files for this account. Seller

type ReportingCapabilities

type ReportingCapabilities struct {
	AvailableReportingFrequencies   []ReportingFrequency    `json:"available_reporting_frequencies"`              // Supported reporting frequency options
	ExpectedDelayMinutes            int                     `json:"expected_delay_minutes"`                       // Expected delay in minutes before reporting data becomes available (e.g., 240
	Timezone                        string                  `json:"timezone"`                                     // Timezone for reporting periods. Use 'UTC' or IANA timezone (e.g.
	SupportsWebhooks                bool                    `json:"supports_webhooks"`                            // Whether this product supports webhook-based reporting notifications
	AvailableMetrics                []AvailableMetric       `json:"available_metrics"`                            // Metrics available in reporting. Impressions and spend are always implicitly
	VendorMetrics                   []ReportingVendorMetric `json:"vendor_metrics,omitempty"`                     // Vendor-defined metrics this product can report, beyond the closed
	SupportsCreativeBreakdown       *bool                   `json:"supports_creative_breakdown,omitempty"`        // Whether this product supports creative-level metric breakdowns in delivery
	SupportsKeywordBreakdown        *bool                   `json:"supports_keyword_breakdown,omitempty"`         // Whether this product supports keyword-level metric breakdowns in delivery
	SupportsGeoBreakdown            *GeoBreakdownSupport    `json:"supports_geo_breakdown,omitempty"`             // Geographic breakdown support for this product. Declares which geo levels and
	SupportsDeviceTypeBreakdown     *bool                   `json:"supports_device_type_breakdown,omitempty"`     // Whether this product supports device type breakdowns in delivery reporting
	SupportsDevicePlatformBreakdown *bool                   `json:"supports_device_platform_breakdown,omitempty"` // Whether this product supports device platform breakdowns in delivery reporting
	SupportsAudienceBreakdown       *bool                   `json:"supports_audience_breakdown,omitempty"`        // Whether this product supports audience segment breakdowns in delivery
	SupportsPlacementBreakdown      *bool                   `json:"supports_placement_breakdown,omitempty"`       // Whether this product supports placement breakdowns in delivery reporting
	DateRangeSupport                string                  `json:"date_range_support"`                           // Whether delivery data can be filtered to arbitrary date ranges. 'date_range'
	WindowedPullGranularities       []ReportingFrequency    `json:"windowed_pull_granularities,omitempty"`        // Granularities at which this product honors per-window pulls on
	MeasurementWindows              []MeasurementWindow     `json:"measurement_windows,omitempty"`                // Measurement maturation stages available for this product. Used by any channel
}

ReportingCapabilities — Reporting capabilities available for a product

type ReportingFrequency

type ReportingFrequency = string

ReportingFrequency — Available frequencies for delivery reports and metrics updates

const (
	ReportingFrequencyHourly  ReportingFrequency = "hourly"
	ReportingFrequencyDaily   ReportingFrequency = "daily"
	ReportingFrequencyMonthly ReportingFrequency = "monthly"
)

func KnownReportingFrequencyValues

func KnownReportingFrequencyValues() []ReportingFrequency

KnownReportingFrequencyValues returns the current schema-defined values for ReportingFrequency.

func ParseReportingFrequency

func ParseReportingFrequency(s string) (ReportingFrequency, error)

ParseReportingFrequency returns s as ReportingFrequency when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type ReportingPeriod

type ReportingPeriod struct {
	Start string `json:"start"`
	End   string `json:"end"`
}

type ReportingVendorMetric

type ReportingVendorMetric struct {
	Vendor   BrandReference `json:"vendor"`    // Vendor that defines and computes this metric. The vendor's `brand.json` is the
	MetricID string         `json:"metric_id"` // Identifier for the metric within the vendor's vocabulary (e.g.
}

type ReportingWebhook

type ReportingWebhook struct {
	URL                string                      `json:"url"`                         // Webhook endpoint URL for reporting notifications
	Token              string                      `json:"token,omitempty"`             // Optional client-provided token for webhook validation. Echoed back in webhook
	Authentication     LegacyWebhookAuthentication `json:"authentication"`              // Legacy authentication configuration for webhook delivery (A2A-compatible).
	ReportingFrequency string                      `json:"reporting_frequency"`         // Frequency for automated reporting delivery. Must be supported by all products
	RequestedMetrics   []AvailableMetric           `json:"requested_metrics,omitempty"` // Optional list of metrics to include in webhook notifications. If omitted, all
}

ReportingWebhook — Webhook configuration for automated reporting delivery. Configures where and how campaign

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"`
	ProtocolMethodsSupportedFor []string `json:"protocol_methods_supported_for,omitempty"`
	ProtocolMethodsWarnFor      []string `json:"protocol_methods_warn_for,omitempty"`
	ProtocolMethodsRequiredFor  []string `json:"protocol_methods_required_for,omitempty"`
}

RequestSigningCapabilities declares RFC 9421 signing policy.

type RequestedCommittedMetric

type RequestedCommittedMetric struct {
	Scope     string           `json:"scope,omitempty"`     // Vendor-defined metric, identified by the tuple `(vendor, metric_id)`.
	MetricID  string           `json:"metric_id,omitempty"` // Identifier for the metric within the vendor's vocabulary. MUST be present in
	Qualifier *MetricQualifier `json:"qualifier,omitempty"` // Disambiguator — same shape as on the response-side `committed_metrics`.
	Vendor    *BrandReference  `json:"vendor,omitempty"`    // Vendor that defines and computes this metric. The vendor's `brand.json`
}

type RequiredVendorMetric

type RequiredVendorMetric struct {
	Vendor   *BrandReference `json:"vendor,omitempty"`    // Pin to a specific vendor. Optional — omit to match any vendor offering this
	MetricID string          `json:"metric_id,omitempty"` // Pin to an exact metric identifier within a vendor's vocabulary. Optional —
}

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

const (
	ResponseTypeActivation   ResponseType = "activation"
	ResponseTypeCatalogItems ResponseType = "catalog_items"
	ResponseTypeCreative     ResponseType = "creative"
	ResponseTypeDeal         ResponseType = "deal"
)

func KnownResponseTypeValues

func KnownResponseTypeValues() []ResponseType

KnownResponseTypeValues returns the current schema-defined values for ResponseType.

func ParseResponseType

func ParseResponseType(s string) (ResponseType, error)

ParseResponseType returns s as ResponseType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type RestrictedAttribute

type RestrictedAttribute = string

RestrictedAttribute — Personal data categories that may be restricted from use in audience

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"
)

func KnownRestrictedAttributeValues

func KnownRestrictedAttributeValues() []RestrictedAttribute

KnownRestrictedAttributeValues returns the current schema-defined values for RestrictedAttribute.

func ParseRestrictedAttribute

func ParseRestrictedAttribute(s string) (RestrictedAttribute, error)

ParseRestrictedAttribute returns s as RestrictedAttribute when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type RevocationNotification

type RevocationNotification struct {
	IdempotencyKey string     `json:"idempotency_key"`        // Sender-generated key stable across retries of the same revocation
	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.
	RevokedUses    []RightUse `json:"revoked_uses,omitempty"` // If present, only these uses are revoked (partial revocation). If absent, all
	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

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

const (
	RightTypeTalent     RightType = "talent"
	RightTypeCharacter  RightType = "character"
	RightTypeBrandIP    RightType = "brand_ip"
	RightTypeMusic      RightType = "music"
	RightTypeStockMedia RightType = "stock_media"
)

func KnownRightTypeValues

func KnownRightTypeValues() []RightType

KnownRightTypeValues returns the current schema-defined values for RightType.

func ParseRightType

func ParseRightType(s string) (RightType, error)

ParseRightType returns s as RightType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type RightUse

type RightUse = string

RightUse — Types of rights usage that can be licensed through the brand protocol. Aligned

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"
)

func KnownRightUseValues

func KnownRightUseValues() []RightUse

KnownRightUseValues returns the current schema-defined values for RightUse.

func ParseRightUse

func ParseRightUse(s string) (RightUse, error)

ParseRightUse returns s as RightUse when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type RightsAgentRef

type RightsAgentRef struct {
	URL string `json:"url"` // MCP endpoint URL of the rights agent
	ID  string `json:"id"`  // Agent identifier
}

RightsAgentRef — The agent that granted these rights

type RightsBillingPeriod

type RightsBillingPeriod = string

RightsBillingPeriod — Billing period for brand rights pricing

const (
	RightsBillingPeriodDaily     RightsBillingPeriod = "daily"
	RightsBillingPeriodWeekly    RightsBillingPeriod = "weekly"
	RightsBillingPeriodMonthly   RightsBillingPeriod = "monthly"
	RightsBillingPeriodQuarterly RightsBillingPeriod = "quarterly"
	RightsBillingPeriodAnnual    RightsBillingPeriod = "annual"
	RightsBillingPeriodOneTime   RightsBillingPeriod = "one_time"
)

func KnownRightsBillingPeriodValues

func KnownRightsBillingPeriodValues() []RightsBillingPeriod

KnownRightsBillingPeriodValues returns the current schema-defined values for RightsBillingPeriod.

func ParseRightsBillingPeriod

func ParseRightsBillingPeriod(s string) (RightsBillingPeriod, error)

ParseRightsBillingPeriod returns s as RightsBillingPeriod when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type RightsConstraint

type RightsConstraint struct {
	RightsID          string         `json:"rights_id"`                    // Rights grant identifier from the acquire_rights response
	RightsAgent       RightsAgentRef `json:"rights_agent"`                 // The agent that granted these rights
	ValidFrom         string         `json:"valid_from,omitempty"`         // Start of the rights validity period
	ValidUntil        string         `json:"valid_until,omitempty"`        // End of the rights validity period. Creative should not be served after this
	Uses              []RightUse     `json:"uses"`                         // Rights uses covered by this constraint
	Countries         []string       `json:"countries,omitempty"`          // Countries where this creative may be served under these rights (ISO 3166-1
	ExcludedCountries []string       `json:"excluded_countries,omitempty"` // Countries excluded from rights availability (ISO 3166-1 alpha-2). Use when the
	ImpressionCap     int            `json:"impression_cap,omitempty"`     // Maximum total impressions allowed for the full validity period (valid_from to
	RightType         RightType      `json:"right_type,omitempty"`         // Type of rights (talent, music, etc.). Helps identify constraints when a
	ApprovalStatus    string         `json:"approval_status,omitempty"`    // Approval status from the rights holder at manifest creation time (snapshot
	VerificationURL   string         `json:"verification_url,omitempty"`   // URL where downstream supply chain participants can verify this rights grant is
	Ext               any            `json:"ext,omitempty"`
}

RightsConstraint — Rights metadata attached to a creative manifest. Each entry represents constraints from a single

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 SITransport struct {
	Type string `json:"type"`
	URL  string `json:"url"`
}

type ScanType

type ScanType = string

ScanType — Video scan method. Modern digital delivery requires progressive scan

const (
	ScanTypeProgressive ScanType = "progressive"
	ScanTypeInterlaced  ScanType = "interlaced"
)

func KnownScanTypeValues

func KnownScanTypeValues() []ScanType

KnownScanTypeValues returns the current schema-defined values for ScanType.

func ParseScanType

func ParseScanType(s string) (ScanType, error)

ParseScanType returns s as ScanType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type SeedSuccess

type SeedSuccess struct {
	Success bool   `json:"success"`
	Message string `json:"message,omitempty"` // Human-readable acknowledgement.
	Context any    `json:"context,omitempty"`
	Ext     any    `json:"ext,omitempty"`
}

SeedSuccess — A seed_* scenario successfully pre-populated a fixture in the seller's test state

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"
)

func KnownSiSessionStatusValues

func KnownSiSessionStatusValues() []SiSessionStatus

KnownSiSessionStatusValues returns the current schema-defined values for SiSessionStatus.

func ParseSiSessionStatus

func ParseSiSessionStatus(s string) (SiSessionStatus, error)

ParseSiSessionStatus returns s as SiSessionStatus when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type Signal

type Signal struct {
	ID                   string                   `json:"id"`                              // Signal identifier within the publishing domain's adagents.json signals[]
	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            SignalValueType          `json:"value_type"`                      // The data type of this signal's values
	Tags                 []string                 `json:"tags,omitempty"`                  // Tags for grouping and filtering this domain's published signal definitions
	AllowedValues        []string                 `json:"allowed_values,omitempty"`        // For categorical signals, the valid values users can be assigned
	RestrictedAttributes []RestrictedAttribute    `json:"restricted_attributes,omitempty"` // Restricted attribute categories this signal touches. Data providers SHOULD
	PolicyCategories     []string                 `json:"policy_categories,omitempty"`     // Policy categories this signal is sensitive for (e.g., a children's interest
	Range                *SignalRange             `json:"range,omitempty"`                 // For numeric signals, the valid value range
	Taxonomy             *SignalTaxonomy          `json:"taxonomy,omitempty"`              // Optional taxonomy metadata describing what this signal means in an external
	SegmentationCriteria string                   `json:"segmentation_criteria,omitempty"` // Rules governing inclusion of identifiers in the segment. Aligns with IAB Data
	CriteriaURL          string                   `json:"criteria_url,omitempty"`          // Optional URL to a longer-form methodology or criteria document. This is a
	DataSources          []string                 `json:"data_sources,omitempty"`          // Origin categories of the raw data used to compile the signal, aligned with IAB
	Methodology          string                   `json:"methodology,omitempty"`           // How the signal's audience membership or attribute was determined. 'modeled'
	AudienceExpansion    *bool                    `json:"audience_expansion,omitempty"`    // Whether look-alike or similar-audience expansion was used to include
	DeviceExpansion      *bool                    `json:"device_expansion,omitempty"`      // Whether the signal was expanded deterministically across devices of the same
	RefreshCadence       string                   `json:"refresh_cadence,omitempty"`       // Cadence at which the signal definition's underlying segment membership is
	LookbackWindow       string                   `json:"lookback_window,omitempty"`       // Time window in which a qualifying event can occur for inclusion.
	Onboarder            *SignalOnboarder         `json:"onboarder,omitempty"`             // Onboarder disclosure. Required when data_sources includes an offline_* or
	SubjectType          string                   `json:"subject_type,omitempty"`          // What kind of subject this signal characterizes.
	ResolutionMethod     string                   `json:"resolution_method,omitempty"`     // How the subject is resolved at decision time.
	IDTypes              []string                 `json:"id_types,omitempty"`              // Identifier currencies analyzed to determine audience membership or attributes.
	AudienceScope        string                   `json:"audience_scope,omitempty"`        // Context within which the audience attribute was determined. 'single_domain'
	OriginatingDomain    string                   `json:"originating_domain,omitempty"`    // Domain of the digital property where the audience originates. Required when
	Countries            []string                 `json:"countries,omitempty"`             // ISO 3166-1 alpha-2 country codes where the signal is applicable. Sellers must
	ConsentBasis         []ConsentBasis           `json:"consent_basis,omitempty"`         // Declared GDPR Article 6 lawful basis or consent basis under which this
	Art9Basis            string                   `json:"art9_basis,omitempty"`            // GDPR Article 9 basis when restricted_attributes is non-empty and the signal is
	Modeling             *SignalModeling          `json:"modeling,omitempty"`              // Modeling disclosure for modeled data signals. Required when methodology is
	DataSubjectRights    *SignalDataSubjectRights `json:"data_subject_rights,omitempty"`   // Per-signal data-subject-rights routing. Inline on the signal because upstream
	LastUpdated          string                   `json:"last_updated,omitempty"`          // When this definition record was last updated. This indicates freshness of the
	DtsCompliantVersion  string                   `json:"dts_compliant_version,omitempty"` // IAB Data Transparency Standard version this signal definition self-attests as
}

Signal — Definition of a signal in published adagents.json signals[]. The publishing domain supplies the

type SignalCatalogType

type SignalCatalogType = string

SignalCatalogType — Commercial/provenance types for signals available for audience targeting

const (
	SignalCatalogTypeMarketplace SignalCatalogType = "marketplace"
	SignalCatalogTypeCustom      SignalCatalogType = "custom"
	SignalCatalogTypeOwned       SignalCatalogType = "owned"
)

func KnownSignalCatalogTypeValues

func KnownSignalCatalogTypeValues() []SignalCatalogType

KnownSignalCatalogTypeValues returns the current schema-defined values for SignalCatalogType.

func ParseSignalCatalogType

func ParseSignalCatalogType(s string) (SignalCatalogType, error)

ParseSignalCatalogType returns s as SignalCatalogType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type SignalCoverageForecast

type SignalCoverageForecast struct {
	Points             []ForecastPoint             `json:"points"`                 // Coverage or availability points. Each point reuses the standard ForecastPoint
	ForecastRangeUnit  string                      `json:"forecast_range_unit"`    // How to interpret the points array. Signal coverage forecasts always use
	Method             ForecastMethod              `json:"method"`                 // Method used to produce this coverage forecast.
	Scope              SignalCoverageForecastScope `json:"scope"`                  // Explicit denominator for the coverage forecast. This identifies the inventory
	BucketSemantics    string                      `json:"bucket_semantics"`       // 'exclusive' means the returned signal-value buckets do not overlap with each
	BucketCompleteness string                      `json:"bucket_completeness"`    // 'complete' means the returned buckets cover the declared denominator. For
	GeneratedAt        string                      `json:"generated_at,omitempty"` // When this coverage forecast was computed.
	ValidUntil         string                      `json:"valid_until,omitempty"`  // When this coverage forecast expires.
	Ext                any                         `json:"ext,omitempty"`
}

SignalCoverageForecast — Forecast-shaped availability guidance for a signal. Use this when a seller or signal source can

type SignalCoverageForecastScope

type SignalCoverageForecastScope struct {
	Kind          string     `json:"kind"`                      // Denominator family for the coverage forecast.
	Label         string     `json:"label"`                     // Human-readable denominator label, such as 'network price-priority inventory'.
	ProductID     string     `json:"product_id,omitempty"`      // Product denominator when kind is 'product'.
	Countries     []string   `json:"countries,omitempty"`       // Countries included in the denominator, as ISO 3166-1 alpha-2 codes.
	LineItemTypes []string   `json:"line_item_types,omitempty"` // Seller or ad-server line item types included in the denominator.
	DateRange     *DateRange `json:"date_range,omitempty"`      // Historical or planned date window used to compute the denominator.
}

SignalCoverageForecastScope — Explicit denominator for the coverage forecast.

type SignalDataSubjectRights

type SignalDataSubjectRights struct {
	UpstreamSourceDomain string                           `json:"upstream_source_domain,omitempty"` // Domain of the upstream data source whose rights process these channels reach
	Channels             []SignalDataSubjectRightsChannel `json:"channels"`                         // Rights request channels and the rights each channel supports. At least one
	ResponseSlaDays      int                              `json:"response_sla_days,omitempty"`      // Maximum response time in days for rights requests handled through the declared
	CcpaOptOutURL        string                           `json:"ccpa_opt_out_url,omitempty"`       // US-specific 'Do Not Sell or Share' opt-out URL where required.
}

SignalDataSubjectRights — Per-signal data-subject-rights routing. Inline on the signal because upstream source, rights

type SignalDataSubjectRightsChannel

type SignalDataSubjectRightsChannel struct {
	Rights    []string `json:"rights"`              // Rights supported by this channel.
	URL       string   `json:"url,omitempty"`       // HTTPS URL for submitting the rights request.
	Email     string   `json:"email,omitempty"`     // Email address for submitting the rights request.
	Languages []string `json:"languages,omitempty"` // BCP 47 language tags supported by this channel.
	Countries []string `json:"countries,omitempty"` // ISO 3166-1 alpha-2 countries this channel serves, when the provider routes
}

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 SignalID

type SignalID struct {
	Source             string `json:"source"`
	DataProviderDomain string `json:"data_provider_domain,omitempty"`
	AgentURL           string `json:"agent_url,omitempty"`
	ID                 string `json:"id"`
}

type SignalListing

type SignalListing struct {
	SignalRef *SignalRef `json:"signal_ref,omitempty"` // Canonical signal reference. Use scope 'product' for a product-local signal
	// Deprecated: DEPRECATED.
	SignalID       *SignalID       `json:"signal_id,omitempty"`       // DEPRECATED. Use signal_ref instead. Legacy SignalId retained for compatibility
	Name           string          `json:"name,omitempty"`            // Human-readable signal name. Required when signal_ref.scope is 'product'. For
	Description    string          `json:"description,omitempty"`     // Detailed signal description. For data_provider and signal_source refs, this is
	MethodologyURL string          `json:"methodology_url,omitempty"` // Optional link to published methodology, media-kit, or data documentation. For
	LastUpdated    string          `json:"last_updated,omitempty"`    // When this listing record was last updated. This indicates freshness of the
	ValueType      SignalValueType `json:"value_type,omitempty"`      // The data type of this signal's values. Required when signal_ref.scope is
	Categories     []string        `json:"categories,omitempty"`      // Valid values for categorical signals. Present when value_type is 'categorical'.
	Range          *SignalRange    `json:"range,omitempty"`           // Valid range for numeric signals. Present when value_type is 'numeric'.
}

SignalListing — Shared signal identity and definition metadata used when a signal is listed outside its

type SignalModeling

type SignalModeling struct {
	Method                    string                    `json:"method"`
	SeedSource                *SignalModelingSeedSource `json:"seed_source"`
	TrainingDataJurisdictions []string                  `json:"training_data_jurisdictions"` // ISO 3166-1 alpha-2 country codes where the model's training data was collected.
	AIActRiskClass            string                    `json:"ai_act_risk_class"`           // EU AI Act risk classification self-declared by the provider. Prohibited-risk
	Disclosure                *SignalModelingDisclosure `json:"disclosure,omitempty"`        // Signal/modeling-specific disclosure requirements and jurisdictional notes.
}

SignalModeling — Modeling disclosure for modeled data signals. Required when methodology is 'modeled' or

type SignalModelingDisclosure

type SignalModelingDisclosure struct {
	Required      bool                                   `json:"required"`                // The provider's claim that a modeling or AI-use disclosure is required for this
	Jurisdictions []SignalModelingDisclosureJurisdiction `json:"jurisdictions,omitempty"` // Jurisdictions where a modeling or AI-use disclosure applies.
	Notes         string                                 `json:"notes,omitempty"`         // Optional provider notes on how the disclosure should be interpreted.
}

SignalModelingDisclosure — Disclosure requirements and jurisdictional notes for modeled data signals. This schema is

type SignalModelingDisclosureJurisdiction

type SignalModelingDisclosureJurisdiction struct {
	Country        string `json:"country"`                   // ISO 3166-1 alpha-2 country code.
	Region         string `json:"region,omitempty"`          // Provider-defined sub-national region code or name when the obligation is
	Regulation     string `json:"regulation"`                // Provider-supplied regulation identifier for the disclosure obligation.
	DisclosureText string `json:"disclosure_text,omitempty"` // Human-readable disclosure text or summary the provider expects buyers or
	DisclosureURL  string `json:"disclosure_url,omitempty"`  // Optional URL to the provider's canonical disclosure or methodology page for
	Audience       string `json:"audience,omitempty"`        // Primary audience for this disclosure entry.
}

type SignalModelingSeedSource

type SignalModelingSeedSource struct {
	Type           string `json:"type"`
	ProviderSigned bool   `json:"provider_signed"` // Whether the seed source carries a signed attestation under one of the
}

type SignalOnboarder

type SignalOnboarder struct {
	MatchKeys                      []string `json:"match_keys"`
	PreOnboardingAudienceExpansion *bool    `json:"pre_onboarding_audience_expansion,omitempty"`
	PreOnboardingDeviceExpansion   *bool    `json:"pre_onboarding_device_expansion,omitempty"`
	PreOnboardingPrecisionLevel    string   `json:"pre_onboarding_precision_level,omitempty"`
}

SignalOnboarder — Onboarder disclosure. Required when data_sources includes an offline_* or public_record_* source.

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 SignalRange

type SignalRange struct {
	Min  float64 `json:"min"`            // Minimum value
	Max  float64 `json:"max"`            // Maximum value
	Unit string  `json:"unit,omitempty"` // Unit of measurement (e.g., 'score', 'dollars', 'years')
}

SignalRange — For numeric signals, the valid value range

type SignalRef

type SignalRef struct {
	Scope              string `json:"scope,omitempty"`                // Discriminator indicating the signal resolves through the issuing signal source.
	SignalID           string `json:"signal_id,omitempty"`            // Signal identifier within the issuing signal source's signal set.
	DataProviderDomain string `json:"data_provider_domain,omitempty"` // Domain that publishes the signal definition in its adagents.json signals[].
	SignalSourceURL    string `json:"signal_source_url,omitempty"`    // URL of the signal source that issues this source-native signal.
}

SignalRef — Reference to a named signal definition. Uses scope as discriminator: 'data_provider' for a signal

type SignalSelectionGroupRule

type SignalSelectionGroupRule struct {
	SelectionGroup     string `json:"selection_group"`                // ProductSignalTargetingOption.selection_group value this rule applies to.
	TargetingMode      string `json:"targeting_mode,omitempty"`       // How options in this selection_group are intended to be used in
	SelectionMode      string `json:"selection_mode,omitempty"`       // Selection behavior for this selection_group. 'required' means at least
	MinSelectedSignals int    `json:"min_selected_signals,omitempty"` // Minimum selected options from this selection_group. If selection_mode is
	MaxSelectedSignals int    `json:"max_selected_signals,omitempty"` // Maximum selected options from this selection_group.
}

SignalSelectionGroupRule — Product-scoped override for one ProductSignalTargetingOption.selection_group value. Use this when

type SignalSource

type SignalSource = string

SignalSource — Source type for signal identifiers. Determines how the signal is referenced

const (
	SignalSourceCatalog SignalSource = "catalog"
	SignalSourceAgent   SignalSource = "agent"
)

func KnownSignalSourceValues

func KnownSignalSourceValues() []SignalSource

KnownSignalSourceValues returns the current schema-defined values for SignalSource.

func ParseSignalSource

func ParseSignalSource(s string) (SignalSource, error)

ParseSignalSource returns s as SignalSource when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type SignalTargeting

type SignalTargeting struct {
	SignalRef *SignalRef `json:"signal_ref,omitempty"` // The signal to target. New targeting constraints SHOULD use signal_ref.
	// Deprecated: DEPRECATED.
	SignalID  *SignalID `json:"signal_id,omitempty"`  // DEPRECATED. Use signal_ref instead. Legacy SignalId retained for compatibility
	ValueType string    `json:"value_type,omitempty"` // Discriminator for numeric signals
	Value     *bool     `json:"value,omitempty"`      // Whether to include (true) or exclude (false) users matching this signal
	Values    []string  `json:"values,omitempty"`     // Values to target. Users with any of these values will be included.
	MinValue  *float64  `json:"min_value,omitempty"`  // Minimum value (inclusive). Omit for no minimum. Must be <= max_value when both
	MaxValue  *float64  `json:"max_value,omitempty"`  // Maximum value (inclusive). Omit for no maximum. Must be >= min_value when both
}

SignalTargeting — Targeting constraint for a specific signal. Uses value_type as discriminator to determine the

func (SignalTargeting) Validate

func (t SignalTargeting) Validate(opts ...ValidationOption) []ValidationIssue

Validate checks SignalTargeting's current-schema oneOf invariants. It is intentionally opt-in and forward-compatible: unknown value_type values are ignored unless WithStrictEnums is supplied.

type SignalTargetingExpression

type SignalTargetingExpression struct {
	SignalRef *SignalRef `json:"signal_ref,omitempty"` // Named signal being targeted.
	ValueType string     `json:"value_type,omitempty"` // Discriminator for numeric signals.
	Value     *bool      `json:"value,omitempty"`      // Binary package signal entries match users for whom the signal is true. Use the
	Values    []string   `json:"values,omitempty"`     // Values to target. Users with any of these values match the expression.
	MinValue  *float64   `json:"min_value,omitempty"`  // Minimum value, inclusive. Omit for no minimum. Should be within the signal
	MaxValue  *float64   `json:"max_value,omitempty"`  // Maximum value, inclusive. Omit for no maximum. Should be within the signal
}

SignalTargetingExpression — Predicate over a named signal definition. Signals are typed dimensions, similar to feature values

type SignalTargetingRules

type SignalTargetingRules struct {
	ResolutionModel             string                     `json:"resolution_model,omitempty"`                // How selected signal_targeting_options are resolved against the product's
	SelectionMode               string                     `json:"selection_mode,omitempty"`                  // Default selection behavior for selectable signals on this product. 'optional'
	MinSelectedSignals          *int                       `json:"min_selected_signals,omitempty"`            // Minimum number of signals the buyer must select when selection_mode is
	MaxSelectedSignals          int                        `json:"max_selected_signals,omitempty"`            // Maximum number of signals the buyer may select for a package. Omit when there
	MaxSelectedPerGroup         int                        `json:"max_selected_per_group,omitempty"`          // Maximum number of signal_targeting_options the buyer may select from the same
	MaxSignalTargetingGroups    int                        `json:"max_signal_targeting_groups,omitempty"`     // Maximum number of child groups allowed in
	MaxSignalsPerTargetingGroup int                        `json:"max_signals_per_targeting_group,omitempty"` // Maximum number of signals allowed in each
	SelectionGroupRules         []SignalSelectionGroupRule `json:"selection_group_rules,omitempty"`           // Optional product-scoped overrides for specific
}

SignalTargetingRules — Product-level composition rules for selecting signals on packages. The selectable signal menu may

type SignalTaxonomy

type SignalTaxonomy struct {
	Ref                 string                       `json:"ref"`                             // URI identifying the taxonomy or taxonomy documentation.
	Version             string                       `json:"version,omitempty"`               // Version identifier for the taxonomy when the taxonomy has versioned definitions.
	Segtax              int                          `json:"segtax,omitempty"`                // OpenRTB segtax code when the taxonomy maps to an OpenRTB segment taxonomy.
	Etag                string                       `json:"etag,omitempty"`                  // Optional validator for custom taxonomy definitions so consumers can detect
	Values              []SignalTaxonomyValue        `json:"values"`                          // Taxonomy node values that describe this signal. These are meaning/discovery
	ValueMappings       []SignalTaxonomyValueMapping `json:"value_mappings,omitempty"`        // For categorical signals, maps package-targeting allowed_values[] strings to
	ParentMatchBehavior string                       `json:"parent_match_behavior,omitempty"` // Whether this signal definition supports treating a parent taxonomy node as
}

SignalTaxonomy — Optional taxonomy metadata describing what this signal means in an external audience, content

type SignalTaxonomyValue

type SignalTaxonomyValue struct {
	ID        string   `json:"id"`                  // Taxonomy node identifier.
	Path      string   `json:"path,omitempty"`      // Optional human-readable or taxonomy-native path for display and review.
	Modifiers []string `json:"modifiers,omitempty"` // Optional taxonomy-specific modifiers that qualify the node.
}

type SignalTaxonomyValueMapping

type SignalTaxonomyValueMapping struct {
	Value           string   `json:"value"`               // Categorical value from allowed_values[].
	TaxonomyValueID string   `json:"taxonomy_value_id"`   // Taxonomy node identifier corresponding to this categorical value.
	Path            string   `json:"path,omitempty"`      // Optional human-readable or taxonomy-native path for display and review.
	Modifiers       []string `json:"modifiers,omitempty"` // Optional taxonomy-specific modifiers that qualify the mapped value.
}

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"
)

func KnownSignalValueTypeValues

func KnownSignalValueTypeValues() []SignalValueType

KnownSignalValueTypeValues returns the current schema-defined values for SignalValueType.

func ParseSignalValueType

func ParseSignalValueType(s string) (SignalValueType, error)

ParseSignalValueType returns s as SignalValueType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type SignalsCapabilities

type SignalsCapabilities struct {
	DataProviderDomains []string        `json:"data_provider_domains,omitempty"`
	DiscoveryModes      []string        `json:"discovery_modes,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"`
	Viewability   *DeliveryViewability `json:"viewability,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

type SlaWindow

type SlaWindow struct {
	ResponseMax   string `json:"response_max,omitempty"`   // Maximum time from when the buyer issues the action to when the seller
	CompletionMax string `json:"completion_max,omitempty"` // Maximum time from buyer issuing the action to the seller completing it
}

SlaWindow — Service-level commitment a seller declares for a given action. Optional throughout: absence means

type SnapshotUnavailableReason

type SnapshotUnavailableReason = string

SnapshotUnavailableReason — Machine-readable reason a delivery snapshot was requested but could not be

const (
	SnapshotUnavailableReasonSNAPSHOTUNSUPPORTED            SnapshotUnavailableReason = "SNAPSHOT_UNSUPPORTED"
	SnapshotUnavailableReasonSNAPSHOTTEMPORARILYUNAVAILABLE SnapshotUnavailableReason = "SNAPSHOT_TEMPORARILY_UNAVAILABLE"
	SnapshotUnavailableReasonSNAPSHOTPERMISSIONDENIED       SnapshotUnavailableReason = "SNAPSHOT_PERMISSION_DENIED"
)

func KnownSnapshotUnavailableReasonValues

func KnownSnapshotUnavailableReasonValues() []SnapshotUnavailableReason

KnownSnapshotUnavailableReasonValues returns the current schema-defined values for SnapshotUnavailableReason.

func ParseSnapshotUnavailableReason

func ParseSnapshotUnavailableReason(s string) (SnapshotUnavailableReason, error)

ParseSnapshotUnavailableReason returns s as SnapshotUnavailableReason when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type SocialPlacementSurface

type SocialPlacementSurface = string

SocialPlacementSurface — Declared social-placement surface classification for social inventory

const (
	SocialPlacementSurfaceFeed       SocialPlacementSurface = "feed"
	SocialPlacementSurfaceStories    SocialPlacementSurface = "stories"
	SocialPlacementSurfaceShortVideo SocialPlacementSurface = "short_video"
	SocialPlacementSurfaceExplore    SocialPlacementSurface = "explore"
	SocialPlacementSurfaceSearch     SocialPlacementSurface = "search"
)

func KnownSocialPlacementSurfaceValues

func KnownSocialPlacementSurfaceValues() []SocialPlacementSurface

KnownSocialPlacementSurfaceValues returns the current schema-defined values for SocialPlacementSurface.

func ParseSocialPlacementSurface

func ParseSocialPlacementSurface(s string) (SocialPlacementSurface, error)

ParseSocialPlacementSurface returns s as SocialPlacementSurface when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type SortDirection

type SortDirection = string

SortDirection — Sort direction for list queries

const (
	SortDirectionAsc  SortDirection = "asc"
	SortDirectionDesc SortDirection = "desc"
)

func KnownSortDirectionValues

func KnownSortDirectionValues() []SortDirection

KnownSortDirectionValues returns the current schema-defined values for SortDirection.

func ParseSortDirection

func ParseSortDirection(s string) (SortDirection, error)

ParseSortDirection returns s as SortDirection when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type SortMetric

type SortMetric = string

SortMetric — Numeric delivery metrics available for sorting breakdown rows. Subset of

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"
)

func KnownSortMetricValues

func KnownSortMetricValues() []SortMetric

KnownSortMetricValues returns the current schema-defined values for SortMetric.

func ParseSortMetric

func ParseSortMetric(s string) (SortMetric, error)

ParseSortMetric returns s as SortMetric when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type Special

type Special struct {
	Name     string          `json:"name"`               // Name of the event (e.g., 'Olympics 2028', 'Super Bowl LXI')
	Category SpecialCategory `json:"category,omitempty"` // Category of the event
	Starts   string          `json:"starts,omitempty"`   // When the event starts (ISO 8601)
	Ends     string          `json:"ends,omitempty"`     // When the event ends (ISO 8601). Omit for single-day events.
}

Special — Event-anchored content tied to a real-world event or occasion. When present on a collection

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"
)

func KnownSpecialCategoryValues

func KnownSpecialCategoryValues() []SpecialCategory

KnownSpecialCategoryValues returns the current schema-defined values for SpecialCategory.

func ParseSpecialCategory

func ParseSpecialCategory(s string) (SpecialCategory, error)

ParseSpecialCategory returns s as SpecialCategory when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type Specialism

type Specialism = string

Specialism — Specialized capability claims an agent can make. Each specialism maps to a

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"
	SpecialismCreativeTransformers      Specialism = "creative-transformers"
	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"
	SpecialismSponsoredIntelligence     Specialism = "sponsored-intelligence"
)

func KnownSpecialismValues

func KnownSpecialismValues() []Specialism

KnownSpecialismValues returns the current schema-defined values for Specialism.

func ParseSpecialism

func ParseSpecialism(s string) (Specialism, error)

ParseSpecialism returns s as Specialism when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type SponsoredPlacementType

type SponsoredPlacementType = string

SponsoredPlacementType — Declared sponsored-placement classification for catalog-driven retail-media

const (
	SponsoredPlacementTypeSponsoredSearch  SponsoredPlacementType = "sponsored_search"
	SponsoredPlacementTypeSponsoredDisplay SponsoredPlacementType = "sponsored_display"
	SponsoredPlacementTypeSponsoredNative  SponsoredPlacementType = "sponsored_native"
)

func KnownSponsoredPlacementTypeValues

func KnownSponsoredPlacementTypeValues() []SponsoredPlacementType

KnownSponsoredPlacementTypeValues returns the current schema-defined values for SponsoredPlacementType.

func ParseSponsoredPlacementType

func ParseSponsoredPlacementType(s string) (SponsoredPlacementType, error)

ParseSponsoredPlacementType returns s as SponsoredPlacementType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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 {
	AdcpVersion            string                  `json:"adcp_version,omitempty"`             // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion       int                     `json:"adcp_major_version,omitempty"`       // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	IdempotencyKey         string                  `json:"idempotency_key"`                    // Client-generated unique key for at-most-once execution. Natural per-account
	Accounts               []AccountInput          `json:"accounts"`                           // Per-account sync entries. Each entry uses one of two key shapes: the `account`
	DeleteMissing          *bool                   `json:"delete_missing,omitempty"`           // When true, accounts previously synced by this agent but not included in this
	DryRun                 *bool                   `json:"dry_run,omitempty"`                  // When true, preview what would change without applying. Returns what would be
	PushNotificationConfig *PushNotificationConfig `json:"push_notification_config,omitempty"` // Webhook for async notifications when account status changes (e.g.
	Context                any                     `json:"context,omitempty"`
	Ext                    any                     `json:"ext,omitempty"`
}

SyncAccountsRequest — Sync advertiser account state with a seller. Two modes, distinguished by the key on each

type SyncCatalogsRequest

type SyncCatalogsRequest struct {
	AdcpVersion            string                  `json:"adcp_version,omitempty"`             // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion       int                     `json:"adcp_major_version,omitempty"`       // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	IdempotencyKey         string                  `json:"idempotency_key"`                    // Client-generated unique key for at-most-once execution. `catalog_id` gives
	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
	CatalogIDs             []string                `json:"catalog_ids,omitempty"`              // Optional filter to limit sync scope to specific catalog IDs. When provided
	DeleteMissing          *bool                   `json:"delete_missing,omitempty"`           // When true, buyer-managed catalogs on the account not included in this sync
	DryRun                 *bool                   `json:"dry_run,omitempty"`                  // When true, preview changes without applying them. Returns what would be
	ValidationMode         ValidationMode          `json:"validation_mode,omitempty"`          // Validation strictness. 'strict' fails entire sync on any validation error.
	PushNotificationConfig *PushNotificationConfig `json:"push_notification_config,omitempty"` // Optional webhook configuration for async sync notifications. Publisher will
	Context                any                     `json:"context,omitempty"`
	Ext                    any                     `json:"ext,omitempty"`
}

SyncCatalogsRequest — Request parameters for syncing catalog feeds with upsert semantics. Supports bulk operations

type SyncCreativeAssignment

type SyncCreativeAssignment struct {
	CreativeID   string   `json:"creative_id"`
	PackageID    string   `json:"package_id"`
	Weight       *float64 `json:"weight,omitempty"`
	PlacementIDs []string `json:"placement_ids,omitempty"`
}

SyncCreativeAssignment assigns a synced creative to an existing package.

type SyncCreativesRequest

type SyncCreativesRequest struct {
	AdcpVersion            string                   `json:"adcp_version,omitempty"`             // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion       int                      `json:"adcp_major_version,omitempty"`       // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	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
	Assignments            []SyncCreativeAssignment `json:"assignments,omitempty"`              // Optional bulk assignment of creatives to packages. Each entry maps one
	IdempotencyKey         string                   `json:"idempotency_key"`                    // Client-generated idempotency key for safe retries. If a sync fails without a
	DeleteMissing          *bool                    `json:"delete_missing,omitempty"`           // When true, creatives not included in this sync will be archived. Use with
	DryRun                 *bool                    `json:"dry_run,omitempty"`                  // When true, preview changes without applying them. Returns what would be
	ValidationMode         ValidationMode           `json:"validation_mode,omitempty"`          // Validation strictness. 'strict' fails entire sync on any validation error.
	PushNotificationConfig *PushNotificationConfig  `json:"push_notification_config,omitempty"` // Optional webhook configuration for async sync notifications. The agent will
	Context                any                      `json:"context,omitempty"`
	Ext                    any                      `json:"ext,omitempty"`
}

SyncCreativesRequest — Request parameters for syncing creative assets with upsert semantics - supports bulk operations

type SyncEventSourcesRequest

type SyncEventSourcesRequest struct {
	AdcpVersion      string             `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion int                `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	IdempotencyKey   string             `json:"idempotency_key"`              // Client-generated unique key for at-most-once execution. `event_source_id`
	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
	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

type SyncGovernanceAccountResult

type SyncGovernanceAccountResult struct {
	Account          AccountReference            `json:"account"`                     // Account reference, echoed from request
	Status           string                      `json:"status"`                      // Sync result. synced: governance agents persisted. failed: could not complete
	GovernanceAgents []SyncGovernanceAgentResult `json:"governance_agents,omitempty"` // Governance agent now synced on this account. Reflects the persisted state
	Errors           []AdcpError                 `json:"errors,omitempty"`            // Per-account errors (only present when status is 'failed')
}

type SyncGovernanceAgentResult

type SyncGovernanceAgentResult struct {
	URL string `json:"url"` // Governance agent endpoint URL.
}

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 {
	AdcpVersion      string                   `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion int                      `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	IdempotencyKey   string                   `json:"idempotency_key"`              // Client-generated unique key for at-most-once execution. `account` gives
	Accounts         []GovernanceAccountInput `json:"accounts"`                     // Per-account governance agent configuration. Each entry pairs an account
	Context          any                      `json:"context,omitempty"`
	Ext              any                      `json:"ext,omitempty"`
}

SyncGovernanceRequest — Sync the governance agent endpoint against specific accounts. The seller persists the governance

type SyncGovernanceResponse

type SyncGovernanceResponse interface {
	// contains filtered or unexported methods
}

SyncGovernanceResponse is a discriminated union — use one of the generated variant structs.

type SyncGovernanceSuccess

type SyncGovernanceSuccess struct {
	Accounts []SyncGovernanceAccountResult `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 SyncPlansPlan

type SyncPlansPlan struct {
	PlanID           string                    `json:"plan_id"`                     // Plan identifier.
	Status           string                    `json:"status"`                      // Sync result status. 'active' means sync succeeded; 'error' means sync failed.
	Version          int                       `json:"version"`                     // Plan version (increments on each sync).
	Categories       []SyncPlansPlanCategory   `json:"categories,omitempty"`        // Validation categories active for this plan.
	ResolvedPolicies []SyncPlansResolvedPolicy `json:"resolved_policies,omitempty"` // Policies the governance agent will enforce for this plan. Includes explicitly
}

type SyncPlansPlanCategory

type SyncPlansPlanCategory struct {
	CategoryID string `json:"category_id"` // Validation category identifier.
	Status     string `json:"status"`      // Whether this category is active for this plan.
}

type SyncPlansRequest

type SyncPlansRequest struct {
	AdcpVersion      string `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion int    `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	IdempotencyKey   string `json:"idempotency_key"`              // Client-generated unique key for at-most-once execution. `plan_id` gives
	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

type SyncPlansResolvedPolicy

type SyncPlansResolvedPolicy struct {
	PolicyID    string            `json:"policy_id"`        // Registry policy ID.
	Source      string            `json:"source"`           // How this policy was included. 'explicit': referenced in the brand compliance
	Enforcement PolicyEnforcement `json:"enforcement"`      // Enforcement level for this policy.
	Reason      string            `json:"reason,omitempty"` // Why this policy was included (e.g., 'Matched jurisdiction US and policy
}

type SyncPlansResponse

type SyncPlansResponse struct {
	AdcpVersion            string                  `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion       int                     `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	ContextID              string                  `json:"context_id,omitempty"`         // Session/conversation identifier for tracking related operations across
	Context                any                     `json:"context,omitempty"`
	TaskID                 string                  `json:"task_id,omitempty"`                  // Unique identifier for tracking asynchronous operations. Present when a task
	Status                 TaskStatus              `json:"status"`                             // Current task execution state. Indicates whether the task is completed, in
	Message                string                  `json:"message,omitempty"`                  // Human-readable summary of the task result. Provides natural language
	Timestamp              string                  `json:"timestamp,omitempty"`                // ISO 8601 timestamp when the response was generated. Useful for debugging
	Replayed               *bool                   `json:"replayed,omitempty"`                 // Set to true when this response was returned from the idempotency cache rather
	AdcpError              AdcpError               `json:"adcp_error,omitempty"`               // Transport-envelope error signal for fatal task failures. Per the two-layer
	PushNotificationConfig *PushNotificationConfig `json:"push_notification_config,omitempty"` // Push notification configuration for async task updates (A2A and REST
	GovernanceContext      string                  `json:"governance_context,omitempty"`       // Governance context token issued by the account's governance agent during
	Payload                map[string]any          `json:"payload,omitempty"`                  // Conceptual grouping for the task-specific response data defined by individual
	Plans                  []SyncPlansPlan         `json:"plans"`                              // Status for each synced plan.
	Ext                    any                     `json:"ext,omitempty"`
}

SyncPlansResponse — Response from syncing campaign plans. Returns status and active validation categories for each plan.

type Talent

type Talent struct {
	Role     TalentRole `json:"role"`                // Role of this person on the collection or installment
	Name     string     `json:"name"`                // Person's name as credited on the collection
	BrandURL string     `json:"brand_url,omitempty"` // URL to this person's brand.json entry. Enables buyer agents to evaluate the
}

Talent — A person associated with a collection or installment, with an optional link to their brand.json

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"
)

func KnownTalentRoleValues

func KnownTalentRoleValues() []TalentRole

KnownTalentRoleValues returns the current schema-defined values for TalentRole.

func ParseTalentRole

func ParseTalentRole(s string) (TalentRole, error)

ParseTalentRole returns s as TalentRole when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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.
	GeoRegions            []string              `json:"geo_regions,omitempty"`              // Restrict delivery to specific regions/states. ISO 3166-2 subdivision codes
	GeoRegionsExclude     []string              `json:"geo_regions_exclude,omitempty"`      // Exclude specific regions/states from delivery. ISO 3166-2 subdivision codes
	GeoMetros             []GeoMetroTarget      `json:"geo_metros,omitempty"`               // Restrict delivery to specific metro areas. Each entry specifies the
	GeoMetrosExclude      []GeoMetroTarget      `json:"geo_metros_exclude,omitempty"`       // Exclude specific metro areas from delivery. Each entry specifies the
	GeoPostalAreas        []GeoPostalAreaTarget `json:"geo_postal_areas,omitempty"`         // Restrict delivery to specific postal areas. Prefer the native country + postal
	GeoPostalAreasExclude []GeoPostalAreaTarget `json:"geo_postal_areas_exclude,omitempty"` // Exclude specific postal areas from delivery. Prefer the native country +
	DaypartTargets        []DaypartTarget       `json:"daypart_targets,omitempty"`          // Restrict delivery to specific time windows. Each entry specifies days of week
	// Deprecated: Use TMP provider fields instead.
	AxeIncludeSegment string `json:"axe_include_segment,omitempty"` // Deprecated: Use TMP provider fields instead. AXE segment ID to include for
	// Deprecated: Use TMP provider fields instead.
	AxeExcludeSegment     string                        `json:"axe_exclude_segment,omitempty"`     // Deprecated: Use TMP provider fields instead. AXE segment ID to exclude from
	AudienceInclude       []string                      `json:"audience_include,omitempty"`        // Restrict delivery to members of these first-party CRM audiences. Only users
	AudienceExclude       []string                      `json:"audience_exclude,omitempty"`        // Suppress delivery to members of these first-party CRM audiences. Matched users
	SignalTargetingGroups *PackageSignalTargetingGroups `json:"signal_targeting_groups,omitempty"` // Basic Boolean grouping for seller-offered signals. v1 supports a required
	// Deprecated: DEPRECATED.
	SignalTargeting       []SignalTargeting         `json:"signal_targeting,omitempty"` // DEPRECATED. Use signal_targeting_groups for package-level signal targeting.
	FrequencyCap          *FrequencyCap             `json:"frequency_cap,omitempty"`
	PropertyList          *PropertyListRef          `json:"property_list,omitempty"`           // Reference to a property list for targeting specific properties within this
	CollectionList        *CollectionListRef        `json:"collection_list,omitempty"`         // Reference to a collection list for including specific collections (programs
	CollectionListExclude *CollectionListRef        `json:"collection_list_exclude,omitempty"` // Reference to a collection list for excluding specific collections (programs
	AgeRestriction        *AgeRestriction           `json:"age_restriction,omitempty"`         // Age restriction for compliance. Use for legal requirements (alcohol
	DevicePlatform        []DevicePlatform          `json:"device_platform,omitempty"`         // Restrict to specific platforms. Use for technical compatibility (app only
	DeviceType            []DeviceType              `json:"device_type,omitempty"`             // Restrict to specific device form factors. Use for campaigns targeting hardware
	DeviceTypeExclude     []DeviceType              `json:"device_type_exclude,omitempty"`     // Exclude specific device form factors from delivery (e.g., exclude CTV for
	StoreCatchments       []TargetingStoreCatchment `json:"store_catchments,omitempty"`        // Target users within store catchment areas from a synced store catalog. Each
	GeoProximity          []GeoProximityTarget      `json:"geo_proximity,omitempty"`           // Target users within travel time, distance, or a custom boundary around
	Language              []string                  `json:"language,omitempty"`                // Restrict to users with specific language preferences. ISO 639-1 codes (e.g.
	KeywordTargets        []KeywordTarget           `json:"keyword_targets,omitempty"`         // Keyword targeting for search and retail media platforms. Restricts delivery to
	NegativeKeywords      []NegativeKeywordTarget   `json:"negative_keywords,omitempty"`       // Keywords to exclude from delivery. Queries matching these keywords will not
}

Targeting — Optional restriction overlays for media buys. Most targeting should be expressed in the brief and

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 TargetingStoreCatchment

type TargetingStoreCatchment struct {
	CatalogID    string   `json:"catalog_id"`              // Synced store-type catalog ID from sync_catalogs.
	StoreIDs     []string `json:"store_ids,omitempty"`     // Filter to specific stores within the catalog. Omit to target all stores.
	CatchmentIDs []string `json:"catchment_ids,omitempty"` // Catchment zone IDs to target (e.g., 'walk', 'drive'). Omit to target all
}

type TaskStatus

type TaskStatus = string

TaskStatus — Standardized task status values based on A2A TaskState enum. Indicates the

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"
)

func KnownTaskStatusValues

func KnownTaskStatusValues() []TaskStatus

KnownTaskStatusValues returns the current schema-defined values for TaskStatus.

func ParseTaskStatus

func ParseTaskStatus(s string) (TaskStatus, error)

ParseTaskStatus returns s as TaskStatus when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type TaskType

type TaskType = string

TaskType — Valid AdCP task types across all domains. These represent the complete set of

const (
	TaskTypeCreateMediaBuy       TaskType = "create_media_buy"
	TaskTypeUpdateMediaBuy       TaskType = "update_media_buy"
	TaskTypeMediaBuyDelivery     TaskType = "media_buy_delivery"
	TaskTypeSyncCreatives        TaskType = "sync_creatives"
	TaskTypeBuildCreative        TaskType = "build_creative"
	TaskTypeActivateSignal       TaskType = "activate_signal"
	TaskTypeGetProducts          TaskType = "get_products"
	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"
	TaskTypeSearchBrands         TaskType = "search_brands"
	TaskTypeGetRights            TaskType = "get_rights"
	TaskTypeAcquireRights        TaskType = "acquire_rights"
)

func KnownTaskTypeValues

func KnownTaskTypeValues() []TaskType

KnownTaskTypeValues returns the current schema-defined values for TaskType.

func ParseTaskType

func ParseTaskType(s string) (TaskType, error)

ParseTaskType returns s as TaskType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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)
	CustomScenario      func(scenario string, params map[string]any) (any, error)
	CustomScenarios     []string
}

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.

const (
	TransportModeWalking         TransportMode = "walking"
	TransportModeCycling         TransportMode = "cycling"
	TransportModeDriving         TransportMode = "driving"
	TransportModePublicTransport TransportMode = "public_transport"
)

func KnownTransportModeValues

func KnownTransportModeValues() []TransportMode

KnownTransportModeValues returns the current schema-defined values for TransportMode.

func ParseTransportMode

func ParseTransportMode(s string) (TransportMode, error)

ParseTransportMode returns s as TransportMode when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type TravelTimeUnit

type TravelTimeUnit = string

TravelTimeUnit — Time unit for isochrone (travel-time catchment) calculations.

const (
	TravelTimeUnitMin TravelTimeUnit = "min"
	TravelTimeUnitHr  TravelTimeUnit = "hr"
)

func KnownTravelTimeUnitValues

func KnownTravelTimeUnitValues() []TravelTimeUnit

KnownTravelTimeUnitValues returns the current schema-defined values for TravelTimeUnit.

func ParseTravelTimeUnit

func ParseTravelTimeUnit(s string) (TravelTimeUnit, error)

ParseTravelTimeUnit returns s as TravelTimeUnit when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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

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"
	UIDTypeWorldIDNullifier    UIDType = "world_id_nullifier"
	UIDTypeOther               UIDType = "other"
)

func KnownUIDTypeValues

func KnownUIDTypeValues() []UIDType

KnownUIDTypeValues returns the current schema-defined values for UIDType.

func ParseUIDType

func ParseUIDType(s string) (UIDType, error)

ParseUIDType returns s as UIDType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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"
)

func KnownURLAssetTypeValues

func KnownURLAssetTypeValues() []URLAssetType

KnownURLAssetTypeValues returns the current schema-defined values for URLAssetType.

func ParseURLAssetType

func ParseURLAssetType(s string) (URLAssetType, error)

ParseURLAssetType returns s as URLAssetType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type UniversalMacro

type UniversalMacro = string

UniversalMacro — Standardized macro placeholders for dynamic value substitution in creative

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"
	UniversalMacroIMPRESSIONID      UniversalMacro = "IMPRESSION_ID"
	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"
	UniversalMacroITEMNAME          UniversalMacro = "ITEM_NAME"
	UniversalMacroITEMDESCRIPTION   UniversalMacro = "ITEM_DESCRIPTION"
	UniversalMacroITEMTAGLINE       UniversalMacro = "ITEM_TAGLINE"
	UniversalMacroITEMPRICE         UniversalMacro = "ITEM_PRICE"
	UniversalMacroITEMPRICECURRENCY UniversalMacro = "ITEM_PRICE_CURRENCY"
)

func KnownUniversalMacroValues

func KnownUniversalMacroValues() []UniversalMacro

KnownUniversalMacroValues returns the current schema-defined values for UniversalMacro.

func ParseUniversalMacro

func ParseUniversalMacro(s string) (UniversalMacro, error)

ParseUniversalMacro returns s as UniversalMacro when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type UpdateCollectionListRequest

type UpdateCollectionListRequest struct {
	AdcpVersion      string                 `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion int                    `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	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
	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
	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
	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
}

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"
)

func KnownUpdateFrequencyValues

func KnownUpdateFrequencyValues() []UpdateFrequency

KnownUpdateFrequencyValues returns the current schema-defined values for UpdateFrequency.

func ParseUpdateFrequency

func ParseUpdateFrequency(s string) (UpdateFrequency, error)

ParseUpdateFrequency returns s as UpdateFrequency when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type UpdateMediaBuyRequest

type UpdateMediaBuyRequest struct {
	AdcpVersion            string                  `json:"adcp_version,omitempty"`        // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion       int                     `json:"adcp_major_version,omitempty"`  // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
	Account                AccountReference        `json:"account"`                       // Account that owns this media buy. Pass a natural key (brand, operator
	MediaBuyID             string                  `json:"media_buy_id"`                  // Seller's ID of the media buy to update
	Revision               int                     `json:"revision,omitempty"`            // Expected current revision for optimistic concurrency. Optional for backward
	Paused                 *bool                   `json:"paused,omitempty"`              // Pause/resume the entire media buy (true = paused, false = active)
	Canceled               *bool                   `json:"canceled,omitempty"`            // Cancel the entire media buy. Cancellation is irreversible — canceled media
	CancellationReason     string                  `json:"cancellation_reason,omitempty"` // Reason for cancellation. Sellers SHOULD store this and return it in subsequent
	StartTime              string                  `json:"start_time,omitempty"`
	EndTime                string                  `json:"end_time,omitempty"`                 // New end date/time in ISO 8601 format
	Packages               []PackageUpdate         `json:"packages,omitempty"`                 // Package-specific updates for existing packages
	InvoiceRecipient       *BusinessEntity         `json:"invoice_recipient,omitempty"`        // Update who receives the invoice for this buy. When provided, the seller
	NewPackages            []PackageInput          `json:"new_packages,omitempty"`             // New packages to add to this media buy. Uses the same schema as
	ReportingWebhook       *ReportingWebhook       `json:"reporting_webhook,omitempty"`        // Optional webhook configuration for automated reporting delivery. Updates the
	PushNotificationConfig *PushNotificationConfig `json:"push_notification_config,omitempty"` // Optional webhook configuration for async update notifications. Publisher will
	IdempotencyKey         string                  `json:"idempotency_key"`                    // Client-generated idempotency key for safe retries. If an update fails without
	Context                any                     `json:"context,omitempty"`
	Ext                    any                     `json:"ext,omitempty"`
}

UpdateMediaBuyRequest — Request parameters for updating campaign and package settings

type UpstreamRecordedCall

type UpstreamRecordedCall struct {
	AttestationMode       string                 `json:"attestation_mode"`                  // Per-call attestation mode echoing the request's `params.attestation_mode`.
	Method                string                 `json:"method"`                            // HTTP method of the outbound call.
	Endpoint              string                 `json:"endpoint"`                          // Composed `<METHOD> <URL>` string used for `endpoint_pattern` matching, e.g.
	URL                   string                 `json:"url"`                               // Full URL of the outbound call (scheme + host + path + query). Treated as
	Host                  string                 `json:"host,omitempty"`                    // Host portion of the URL, useful for grouping calls by upstream platform.
	Path                  string                 `json:"path,omitempty"`                    // Path portion of the URL (without query string).
	ContentType           string                 `json:"content_type"`                      // Media type of the outbound request body, mirroring the agent's outbound
	Purpose               string                 `json:"purpose,omitempty"`                 // Optional adopter-supplied semantic tag for the call's role. Values
	Payload               any                    `json:"payload,omitempty"`                 // Request body the agent sent. Required when `attestation_mode` is `raw` (or
	PayloadDigestSha256   string                 `json:"payload_digest_sha256,omitempty"`   // SHA-256 digest of the canonicalized outbound request body, lowercase hex (64
	PayloadLength         int                    `json:"payload_length"`                    // Byte length of the post-redaction body bytes represented by this
	IdentifierMatchProofs []IdentifierMatchProof `json:"identifier_match_proofs,omitempty"` // Per-identifier echo proofs for digest-mode calls. Required when
	Timestamp             string                 `json:"timestamp"`                         // ISO 8601 timestamp the adopter recorded the outbound call. MUST reflect the
	StatusCode            int                    `json:"status_code,omitempty"`             // HTTP status code returned by the upstream. Optional — adopters MAY omit when
}

type UpstreamTrafficSuccess

type UpstreamTrafficSuccess struct {
	Success        bool                   `json:"success"`
	RecordedCalls  []UpstreamRecordedCall `json:"recorded_calls"`      // Outbound HTTP calls caused by the requesting principal in the requested
	TotalCount     int                    `json:"total_count"`         // Total calls in the requested window before any pagination —
	Truncated      *bool                  `json:"truncated,omitempty"` // True when `total_count > recorded_calls.length`. Runners MAY raise the `limit`
	SinceTimestamp string                 `json:"since_timestamp"`     // Echo of the `since_timestamp` the runner requested (or the session-start
	Context        any                    `json:"context,omitempty"`
	Ext            any                    `json:"ext,omitempty"`
}

UpstreamTrafficSuccess — A query_upstream_traffic scenario returned the outbound HTTP calls the agent has made since the

type UserMatch

type UserMatch struct {
	UIDs            []UserMatchUID `json:"uids,omitempty"`              // Universal ID values for user matching
	HashedEmail     string         `json:"hashed_email,omitempty"`      // SHA-256 hash of lowercase, trimmed email address. Buyer must normalize before
	HashedPhone     string         `json:"hashed_phone,omitempty"`      // SHA-256 hash of E.164-formatted phone number (e.g. +12065551234). Buyer must
	ClickID         string         `json:"click_id,omitempty"`          // Platform click identifier (fbclid, gclid, ttclid, ScCid, etc.)
	ClickIDType     string         `json:"click_id_type,omitempty"`     // Type of click identifier (e.g. fbclid, gclid, ttclid, msclkid, ScCid)
	ClientIP        string         `json:"client_ip,omitempty"`         // Client IP address for probabilistic matching
	ClientUserAgent string         `json:"client_user_agent,omitempty"` // Client user agent string for probabilistic matching
	Ext             any            `json:"ext,omitempty"`
}

UserMatch — User identifiers for attribution matching. Supports universal IDs, hashed identifiers, click IDs

type UserMatchUID

type UserMatchUID struct {
	Type  UIDType `json:"type"`  // Universal ID type
	Value string  `json:"value"` // Universal ID value
}

type ValidationIssue

type ValidationIssue struct {
	Field   string
	Code    string
	Message string
}

ValidationIssue describes one opt-in SDK validation finding. Field is a JSON-style field path; Code is a stable machine-readable token suitable for mapping to AdCP INVALID_FIELD responses.

func ValidateAudienceSelector

func ValidateAudienceSelector(selector AudienceSelector, opts ...ValidationOption) []ValidationIssue

ValidateAudienceSelector checks required fields and branch-specific fields for AudienceSelector's flattened type/value_type oneOf representation. Unknown discriminator values are allowed unless WithStrictEnums is supplied.

func ValidateOptimizationGoal

func ValidateOptimizationGoal(goal OptimizationGoal, opts ...ValidationOption) []ValidationIssue

ValidateOptimizationGoal checks required fields and current-schema invariants that Go zero values cannot express. It is intentionally not a full JSON Schema validator: unknown enum values are allowed unless WithStrictEnums is supplied, branch-specific fields are validated only for the active kind, and product/account capability checks still belong to the seller.

func ValidateSignalTargeting

func ValidateSignalTargeting(targeting SignalTargeting, opts ...ValidationOption) []ValidationIssue

ValidateSignalTargeting checks required fields and branch-specific fields for SignalTargeting's flattened value_type oneOf representation. Unknown value_type values are allowed unless WithStrictEnums is supplied.

func (ValidationIssue) Error

func (i ValidationIssue) Error() string

type ValidationMode

type ValidationMode = string

ValidationMode — Creative validation strictness levels

const (
	ValidationModeStrict  ValidationMode = "strict"
	ValidationModeLenient ValidationMode = "lenient"
)

func KnownValidationModeValues

func KnownValidationModeValues() []ValidationMode

KnownValidationModeValues returns the current schema-defined values for ValidationMode.

func ParseValidationMode

func ParseValidationMode(s string) (ValidationMode, error)

ParseValidationMode returns s as ValidationMode when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type ValidationOption

type ValidationOption func(*validationConfig)

ValidationOption configures opt-in SDK validators.

func WithStrictEnums

func WithStrictEnums() ValidationOption

WithStrictEnums reports values outside the current schema enum or oneOf variant set. Validators are forward-compatible by default and only require current-schema membership when this option is supplied.

type VastTrackingEvent

type VastTrackingEvent = string

VastTrackingEvent — Tracking events for video ads. Includes the IAB VAST 4.2 `Tracking@event`

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"
	VastTrackingEventAcceptInvitation     VastTrackingEvent = "acceptInvitation"
	VastTrackingEventAdExpand             VastTrackingEvent = "adExpand"
	VastTrackingEventAdCollapse           VastTrackingEvent = "adCollapse"
	VastTrackingEventMinimize             VastTrackingEvent = "minimize"
	VastTrackingEventOverlayViewDuration  VastTrackingEvent = "overlayViewDuration"
	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"
)

func KnownVastTrackingEventValues

func KnownVastTrackingEventValues() []VastTrackingEvent

KnownVastTrackingEventValues returns the current schema-defined values for VastTrackingEvent.

func ParseVastTrackingEvent

func ParseVastTrackingEvent(s string) (VastTrackingEvent, error)

ParseVastTrackingEvent returns s as VastTrackingEvent when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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"
)

func KnownVastVersionValues

func KnownVastVersionValues() []VastVersion

KnownVastVersionValues returns the current schema-defined values for VastVersion.

func ParseVastVersion

func ParseVastVersion(s string) (VastVersion, error)

ParseVastVersion returns s as VastVersion when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type VendorMetricOptimization

type VendorMetricOptimization struct {
	SupportedMetrics []VendorMetricOptimizationSupportedMetric `json:"supported_metrics"` // Vendor-defined metrics this product can steer delivery toward. Each entry
}

VendorMetricOptimization — Vendor-attested metric optimization capabilities for a product. Presence indicates the product

type VendorMetricOptimizationSupportedMetric

type VendorMetricOptimizationSupportedMetric struct {
	Vendor           BrandReference `json:"vendor"`                      // Vendor that defines and computes this metric. The vendor's `brand.json` is the
	MetricID         string         `json:"metric_id"`                   // Identifier for the metric within the vendor's vocabulary (e.g.
	SupportedTargets []string       `json:"supported_targets,omitempty"` // Target kinds available for `vendor_metric` goals against this `(vendor
}

VendorMetricOptimizationSupportedMetric — One vendor-defined metric that a product can optimize toward. Identified by the tuple `(vendor

type VendorMetricValue

type VendorMetricValue struct {
	Vendor                BrandReference `json:"vendor"`                           // Vendor that produced this value. Matches a `vendor_metrics[].vendor`
	MetricID              string         `json:"metric_id"`                        // Identifier for the metric within the vendor's vocabulary. Matches a
	Value                 float64        `json:"value"`                            // The reported value. Unit semantics are vendor-defined — see `unit` field below
	Unit                  string         `json:"unit,omitempty"`                   // Unit of the value. Free-form to accommodate the heterogeneity of vendor
	MeasurableImpressions float64        `json:"measurable_impressions,omitempty"` // Number of impressions in this reporting period that the vendor was able to
	Breakdown             map[string]any `json:"breakdown,omitempty"`              // Optional structured payload for vendor metrics that don't fit a single scalar
}

VendorMetricValue — A reported value for a vendor-defined metric, emitted in `delivery-metrics.json`

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"`
	AppliesToOutputFormatIDs []FormatRef    `json:"applies_to_output_format_ids,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 VersionEnvelope

type VersionEnvelope struct {
	AdcpVersion      string `json:"adcp_version,omitempty"`       // Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1"
	AdcpMajorVersion int    `json:"adcp_major_version,omitempty"` // DEPRECATED in favor of adcp_version (release-precision string). Servers MUST
}

VersionEnvelope — Release-precision AdCP protocol version negotiation fields. Composed via `allOf` into every AdCP

func VersionEnvelopeFor

func VersionEnvelopeFor(version string) (VersionEnvelope, bool)

VersionEnvelopeFor returns a request/response version envelope for a release-precision or full-semver AdCP version.

type VideoPlacementType

type VideoPlacementType = string

VideoPlacementType — Declared video placement classification for OLV and other video inventory

const (
	VideoPlacementTypeInstream            VideoPlacementType = "instream"
	VideoPlacementTypeAccompanyingContent VideoPlacementType = "accompanying_content"
	VideoPlacementTypeInterstitial        VideoPlacementType = "interstitial"
	VideoPlacementTypeStandalone          VideoPlacementType = "standalone"
)

func KnownVideoPlacementTypeValues

func KnownVideoPlacementTypeValues() []VideoPlacementType

KnownVideoPlacementTypeValues returns the current schema-defined values for VideoPlacementType.

func ParseVideoPlacementType

func ParseVideoPlacementType(s string) (VideoPlacementType, error)

ParseVideoPlacementType returns s as VideoPlacementType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type ViewabilityStandard

type ViewabilityStandard = string

ViewabilityStandard — Viewability measurement standard applied to determine whether an impression

const (
	ViewabilityStandardMrc    ViewabilityStandard = "mrc"
	ViewabilityStandardGroupm ViewabilityStandard = "groupm"
)

func KnownViewabilityStandardValues

func KnownViewabilityStandardValues() []ViewabilityStandard

KnownViewabilityStandardValues returns the current schema-defined values for ViewabilityStandard.

func ParseViewabilityStandard

func ParseViewabilityStandard(s string) (ViewabilityStandard, error)

ParseViewabilityStandard returns s as ViewabilityStandard when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type WatermarkMediaType

type WatermarkMediaType = string

WatermarkMediaType — Media category of a content watermark. Identifies what kind of content the

const (
	WatermarkMediaTypeAudio WatermarkMediaType = "audio"
	WatermarkMediaTypeImage WatermarkMediaType = "image"
	WatermarkMediaTypeVideo WatermarkMediaType = "video"
	WatermarkMediaTypeText  WatermarkMediaType = "text"
)

func KnownWatermarkMediaTypeValues

func KnownWatermarkMediaTypeValues() []WatermarkMediaType

KnownWatermarkMediaTypeValues returns the current schema-defined values for WatermarkMediaType.

func ParseWatermarkMediaType

func ParseWatermarkMediaType(s string) (WatermarkMediaType, error)

ParseWatermarkMediaType returns s as WatermarkMediaType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type WcagLevel

type WcagLevel = string

WcagLevel — Web Content Accessibility Guidelines conformance level

const (
	WcagLevelA   WcagLevel = "A"
	WcagLevelAA  WcagLevel = "AA"
	WcagLevelAAA WcagLevel = "AAA"
)

func KnownWcagLevelValues

func KnownWcagLevelValues() []WcagLevel

KnownWcagLevelValues returns the current schema-defined values for WcagLevel.

func ParseWcagLevel

func ParseWcagLevel(s string) (WcagLevel, error)

ParseWcagLevel returns s as WcagLevel when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type WebhookActivityRecord

type WebhookActivityRecord struct {
	IdempotencyKey   string           `json:"idempotency_key"`              // Equals the `idempotency_key` carried in the webhook payload itself (see
	SubscriberID     string           `json:"subscriber_id,omitempty"`      // Identifies which registered webhook subscriber received this fire. **Required
	FiredAt          string           `json:"fired_at"`                     // ISO 8601 timestamp when the seller initiated the HTTP request for this attempt.
	CompletedAt      *string          `json:"completed_at,omitempty"`       // ISO 8601 timestamp when the seller observed the response (or terminal timeout
	NotificationType NotificationType `json:"notification_type"`            // Notification type carried by this fire, verbatim from the webhook payload.
	SequenceNumber   int              `json:"sequence_number,omitempty"`    // Sequence number from the webhook payload. Surfaced here so the buyer can spot
	Attempt          int              `json:"attempt"`                      // 1-indexed retry counter for this logical fire. Initial fire is attempt=1
	Status           string           `json:"status"`                       // Outcome of this attempt. `success` — response received with 2xx
	URL              string           `json:"url"`                          // Target URL for this fire. Query string and fragment MUST be stripped before
	HTTPStatusCode   *int             `json:"http_status_code,omitempty"`   // HTTP status code returned by the buyer's endpoint. Explicitly `null` when no
	ResponseTimeMs   *int             `json:"response_time_ms,omitempty"`   // Wall-clock latency between request send and response receipt, in milliseconds.
	PayloadSizeBytes int              `json:"payload_size_bytes,omitempty"` // Size of the request body the seller sent, in bytes. Useful for diagnosing
	ErrorMessage     *string          `json:"error_message,omitempty"`      // Short human-readable server-side classification of why this attempt did not
	Ext              any              `json:"ext,omitempty"`                // Resource-specific extension slot. Adopters MAY surface a resource-specific
}

WebhookActivityRecord — Single webhook delivery attempt surfaced to a calling principal as a buyer-side debug aid.

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"
)

func KnownWebhookResponseTypeValues

func KnownWebhookResponseTypeValues() []WebhookResponseType

KnownWebhookResponseTypeValues returns the current schema-defined values for WebhookResponseType.

func ParseWebhookResponseType

func ParseWebhookResponseType(s string) (WebhookResponseType, error)

ParseWebhookResponseType returns s as WebhookResponseType when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

type WebhookSecurityMethod

type WebhookSecurityMethod = string

WebhookSecurityMethod — Security methods for authenticating webhook requests

const (
	WebhookSecurityMethodHmacSha256 WebhookSecurityMethod = "hmac_sha256"
	WebhookSecurityMethodAPIKey     WebhookSecurityMethod = "api_key"
	WebhookSecurityMethodNone       WebhookSecurityMethod = "none"
)

func KnownWebhookSecurityMethodValues

func KnownWebhookSecurityMethodValues() []WebhookSecurityMethod

KnownWebhookSecurityMethodValues returns the current schema-defined values for WebhookSecurityMethod.

func ParseWebhookSecurityMethod

func ParseWebhookSecurityMethod(s string) (WebhookSecurityMethod, error)

ParseWebhookSecurityMethod returns s as WebhookSecurityMethod when s is one of the current schema-defined values. It is an opt-in strict helper; JSON unmarshalling preserves unknown values.

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.

type WholesaleFeedVersioningCaps

type WholesaleFeedVersioningCaps struct {
	Supported              bool  `json:"supported"`
	PricingVersionSeparate *bool `json:"pricing_version_separate,omitempty"`
	CacheScopeAccount      *bool `json:"cache_scope_account,omitempty"`
}

type WholesaleFeedWebhooksCaps

type WholesaleFeedWebhooksCaps struct {
	Supported  bool     `json:"supported"`
	EventTypes []string `json:"event_types,omitempty"`
}

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.