Booking form field reference
Every field of the TVNZ booking form, section by section, in the order the form shows them. This page is generated from the form layout and the platform schema, so it reflects the current configuration rather than a description of it.
How to read the tables
Campaign types lists the types the field appears for; All means every type. Required is When shown when a field is mandatory only once its section applies. Options lists the choices as they appear on screen; the full meaning of each is under Option lists.
Campaign
General info
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Campaign name | name | string | Yes | All | Campaign name. | ||
| Insertion order ID | insertion_order_id | string | No | All | Insertion order ID. | ||
| PO number | po_number | string | No | All | Purchase Order or Plan number. | ||
| Flight date | flight | object; date range; picker limited to today+5 … today+300 | Yes | All | Flight start and end dates. Start must fall between 5 and 90 days ahead when the campaign is past Draft and campaign type is Brand Awareness or Broadcast Activation; between 5 and 365 days ahead when the campaign is past Draft and campaign type is Digital Activation. | ||
| Agency | agency | string | Before booking | All | Agency. Choices depend on other answers. | ||
| Advertiser | advertiser | string | Before booking | All | Advertiser. Choices depend on other answers. | ||
| Product | product | string | Before booking | All | Product. Choices depend on other answers. | ||
| Product category | product_category | string | Before booking | All | Product category. Choices come from your account data. | ||
| Campaign status | campaign_status | — | No | All | Not shown in the form (set by the system). | ||
| Booked eCPM | booked_ecpm | currency | No | All | Not shown in the form (set by the system). |
Campaign type
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Campaign type | ad_product | card radio group | Brand Awareness, Broadcast Activation, Sponsorship, Digital Activation | Before booking | BrandAwareness | All | Ad product type. |
Buying method
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Buying method | buying_method | card radio group | Audience Trading, Spot | Before booking | Audience | Broadcast Activation | Buying method. |
Objective
Collapsible section; when collapsed it shows a summary of its values.
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Objective | linear_objective | string | Standard, Reach Velocity, Weekend Store Visit, Hunger Zone, New to Market | No | Standard | Brand Awareness, Broadcast Activation (Audience) | Linear campaign objective preset. |
Campaign budget
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Budget cap | budget | number; currency | Yes | All | Gross budget. | ||
| Discount % | discount_pct | number | No | Brand Awareness, Broadcast Activation | Discount percentage. Choices come from your account data. |
Campaign fields not in the current layout
The platform defines these, but the TVNZ layout does not place them, so they are not part of the form today.
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| deal | deal | string | Before booking | All | Deal. Choices depend on other answers. | ||
| notes | notes | string | No | All | Notes. |
Line item
Line item info
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Line item name | name | string | Before booking | All | Line item name. | ||
| Flight date | flight | object; date range | Before booking | All | Flight date. Start must fall between and days ahead when campaign type is Brand Awareness or Broadcast Activation; between and days ahead when campaign type is not Digital Activation. |
Product
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Digital product | digital_product | string | Standard Video, Ad on Pause, Social Stream, Daily Reach Blast | Before booking | StandardVideo | Digital Activation | Digital product. |
| Stream Type | digital_stream_type | string | TVNZ+ Network (All video on TVNZ+), VOD (Video on Demand) (only when digital product is set and digital product is not Daily Reach Blast), Live (Simulcast + FAST+ Live Events) (only when digital product is set and digital product is not Daily Reach Blast) | Before booking | Network | Digital Activation | Stream type. |
| Digital objective | digital_objective | string | Standard, Maintain Brand Presence, Reach Velocity | Before booking | Standard | Digital Activation | Digital campaign objective preset. Shown when campaign type is Digital Activation and digital product is not Daily Reach Blast. |
Targeting
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Age group | age_group | chip group | No | Sponsorship, Digital Activation | Age demographic. Shown when campaign type is Sponsorship or Digital Activation and digital product is not Daily Reach Blast. | ||
| Gender | gender | chip group | No | Sponsorship, Digital Activation | Gender demographic. Shown when campaign type is Sponsorship or Digital Activation and digital product is not Daily Reach Blast. | ||
| New to Market (Optimised Reach) | digital_new_to_market | boolean | Before booking | Digital Activation | Built for launches. Delivery is optimised for maximum unique reach, so as many people as possible see you once. Shown when campaign type is Digital Activation and digital product is not Daily Reach Blast. | ||
| Weekend Shopper (Wed-Sat + household shoppers) | digital_weekend_shopper | boolean | No | Digital Activation | Reach household shoppers from Wednesday to Saturday, right when the weekend shop is being planned. Weekend Shopper (Wed-Sat + household shoppers). Shown when campaign type is Digital Activation and digital product is not Daily Reach Blast. | ||
| Hunger Zone Food delivery (4-8pm) | digital_food_delivery | boolean | No | Digital Activation | Own the dinner decision. Spots run 4 to 8pm, when orders and cravings peak. Food Delivery (Sun-Sat 4-8pm + city profiles). Shown when campaign type is Digital Activation and digital product is not Daily Reach Blast. | ||
| Duration | digital_duration | — | No | All | Campaign durations in this context denote the various lengths of advertisements, measured in seconds, used within a marketing or promotional strategy.Campaign durations in this context denote the various lengths of advertisements, measured in seconds, used within a marketing or promotional strat. | ||
| Ad Mirroring | ad_mirroring | boolean | No | Broadcast Activation (Audience) | Your spot airs everywhere the channel does. The same break is mirrored to companion feeds and counts toward delivery. Ad Mirroring. |
Demographics
Collapsible section; when collapsed it shows a summary of its values.
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Demographics | linear_demographics | select | Before booking | 18+ | Brand Awareness, Broadcast Activation (Audience) | Demographics. Each offered choice inlines the audience's universe estimate, in people, as its universe property; a choice with no estimate on record omits it. Choices depend on other answers. |
Audience Segments
Collapsible section; when collapsed it shows a summary of its values.
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Digital audience type | digital_audience_type | radio group | Audience segment, Custom audience, DataIQ | No | Segment | Digital Activation | Audience targeting type (selects which of the audience fields applies). Shown when campaign type is Digital Activation and digital product is not Daily Reach Blast. |
| Segment | digital_audience_segment | string; UUID string | No | Digital Activation | Audience segment. Shown when campaign type is Digital Activation and digital audience type is Audience segment and digital product is not Daily Reach Blast. | ||
| Custom | digital_custom_audience | string; UUID string | Before booking | Digital Activation | Custom audience (bespoke audience built for the advertiser or product). Shown when campaign type is Digital Activation and digital audience type is Custom audience and digital product is not Daily Reach Blast. | ||
| DataIQ | digital_dataiq | array; array of UUID string | Before booking | Digital Activation | DataIQ third-party product targeting. Shown when campaign type is Digital Activation and digital audience type is DataIQ and digital product is not Daily Reach Blast. |
Genre
Collapsible section; when collapsed it shows a summary of its values.
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Genre | genre | array; picker, include or exclude | No | Brand Awareness, Digital Activation | Genre. Shown when campaign type is Brand Awareness or Digital Activation and digital product is not Daily Reach Blast. |
Channels
Collapsible section; when collapsed it shows a summary of its values.
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Channels | linear_channels | array; picker, include or exclude | No | Brand Awareness | Channels. | ||
| TVNZ 1 | linear_channel_tvnz_1 | string | optimized, or 0 to 100 in steps of 5 | No | optimized | Broadcast Activation (Audience) | TVNZ 1 channel share. Choices depend on other answers. |
| TVNZ 2 | linear_channel_tvnz_2 | string | optimized, or 0 to 100 in steps of 5 | No | optimized | Broadcast Activation (Audience) | TVNZ 2 channel share. Choices depend on other answers. |
| TVNZ Duke | linear_channel_tvnz_duke | string | optimized, or 0 to 100 in steps of 5 | No | optimized | Broadcast Activation (Audience) | TVNZ DUKE channel share. Choices depend on other answers. |
Programme
Collapsible section; when collapsed it shows a summary of its values.
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Programme linear exclusion | linear_programme_exclusion | select exclusion | No | Brand Awareness, Broadcast Activation (Audience) | Exclude specific programmes. Programme (linear) to exclude. | ||
| Programme digital exclusion | digital_programme_exclusion | select exclusion | No | Digital Activation | Programme (digital) to exclude. Shown when campaign type is Digital Activation and digital product is not Daily Reach Blast. | ||
| Programme digital exclusion | brand_programme_digital_exclusion | select exclusion | No | Brand Awareness | Exclude specific programmes. Programme (digital) to exclude. |
Programme Rating
Collapsible section; when collapsed it shows a summary of its values.
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Programme rating | programme_rating | array; picker, include or exclude | No | Brand Awareness, Broadcast Activation (Audience), Digital Activation | Programme ratings. |
Frequency Cap
Collapsible section; when collapsed it shows a summary of its values.
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Frequency Cap | digital_frequency_caps | frequency_caps | min, hour, day | No | Digital Activation | Frequency caps. Choices come from your account data. |
Geography
Collapsible section; when collapsed it shows a summary of its values.
Regions
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Regions | digital_region | array; picker, include or exclude | No | Digital Activation | Region targeting. Shown when campaign type is Digital Activation and digital product is not Daily Reach Blast. |
Cities
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Cities | digital_city | array; picker, include or exclude | No | Digital Activation | City targeting. Shown when campaign type is Digital Activation and digital product is not Daily Reach Blast. |
Device category
Collapsible section; when collapsed it shows a summary of its values.
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Device Category | digital_device_category | array; picker, include or exclude | No | Digital Activation | Device category targeting. Shown when campaign type is Digital Activation and digital product is not Daily Reach Blast. |
Sensitive content
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Sensitive content | spot_sensitive_content | — | No | None | All |
Peak %
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Peak % | linear_peak_pct | string | No | 0 | Brand Awareness | Minimum share delivered in peak time (70–100%). Peak premium percentage. Choices depend on other answers. | |
| Peak % | audience_peak_pct | string | No | 0 | Broadcast Activation (Audience) | Minimum share delivered in peak time. Peak %. Choices depend on other answers. | |
| Break position | fib_lib_mode | string | No preference, First in break, Last in break | No | NoPreference | Brand Awareness, Broadcast Activation (Audience) | Optionally prefer spots first or last in break, with a minimum share. First-In-Break or Last-In-Break preference. |
| FIB / LIB % | fib_lib_pct | string | 0 to 100 in steps of 5 | No | 0 | Brand Awareness, Broadcast Activation (Audience) | First-In-Break / Last-In-Break premium weight percentage. Choices depend on other answers. Shown when (campaign type is Brand Awareness or (campaign type is Broadcast Activation and buying method is Audience Trading)) and break position is First in break or Last in break. |
Budget
Info
Create a shell campaign and set spots later via TVMap
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Budget | budget | number; currency | Before booking | All | Gross budget. | ||
| Target Impacts | goal_target_impressions | integer | Before booking | Brand Awareness, Broadcast Activation (Audience), Digital Activation | Target audience impacts. Shown when (campaign type is Brand Awareness or Digital Activation or (campaign type is Broadcast Activation and buying method is Audience Trading)) and digital product is not Daily Reach Blast. | ||
| CPM | goal_cpm_override | currency | No | All | Based on rate card from targeting — or switch to custom. |
Split
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Flight pacing | linear_flight_pacing | radio group | Evenly, Weekly (only when !withinWeek(flight date is set, week start is set)) | Before booking | Evenly | Brand Awareness, Broadcast Activation (Audience) | Flight pacing. |
| Flight pacing split | linear_flight_pacing_split | budget split by interval | Before booking | Brand Awareness, Broadcast Activation (Audience) | Per-period delivery split (one entry per week, percentages sum to 100). Shown when (campaign type is Brand Awareness or (campaign type is Broadcast Activation and buying method is Audience Trading)) and flight pacing is Weekly. |
Schedule
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Week start | linear_week_start | string | Mon, Tue, Wed, Thu, Fri, Sat, Sun | Before booking | Sun | Brand Awareness, Broadcast Activation (Audience) | Campaign week start day. |
| Start time | linear_first_air_time | string | 00:00 to 23:45 in 15-minute steps | No | 00:00 | Brand Awareness, Broadcast Activation (Audience) | First airtime (earliest time of day an ad may air). |
| End time | linear_last_air_time | string | 00:15 to 24:00 in 15-minute steps | No | 24:00 | Brand Awareness, Broadcast Activation (Audience) | Last airtime (latest time of day an ad may air). |
| Duration | duration | — | No | All | Campaign durations in this context denote the various lengths of advertisements, measured in seconds, used within a marketing or promotional strategy.Campaign durations in this context denote the various lengths of advertisements, measured in seconds, used within a marketing or promotional strat. |
Dayparts
Collapsible section; when collapsed it shows a summary of its values.
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Dayparts | goal_dayparts | array; dayparts | No | Digital Activation | Daypart targeting. Shown when campaign type is Digital Activation and digital product is not Daily Reach Blast. |
Measurement
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| LINK tracking | digital_link_tracking | boolean | No | Digital Activation | Verify every airing via LINK watermarks for as-run, spot-level reporting. LINK tracking measurement (on request). | ||
| Conversion IQ | digital_conversion_iq | boolean | No | Digital Activation | Attribute site visits and conversions back to exposed households. Conversion IQ measurement (on request). | ||
| Brand Lift | digital_brand_lift | boolean | No | Digital Activation | Survey-based study measuring awareness and consideration lift among exposed viewers. Brand Lift measurement (on request). Choices come from your account data. |
Brand association / Asset types
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Openers (fixed 10 seconds) | spons_openers | boolean | No | Sponsorship | Include opener spots (fixed 10 seconds). | ||
| Credits (duration matches TVC length) | spons_credits | boolean | No | Sponsorship | Include credits spots. |
Sponsorship package
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Sponsorship package | spons_package | string | No | Sponsorship | Sponsorship package (preselected when opened via the Opportunities page). |
Creatives
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| Creative Code | creative | — | Yes | All | Select campaign flight dates before adding creatives. |
Line item fields not in the current layout
The platform defines these, but the TVNZ layout does not place them, so they are not part of the form today.
| Field | Property | Type | Options | Required | Default | Campaign types | Notes |
|---|---|---|---|---|---|---|---|
| blackout_periods | blackout_periods | array; list of date ranges | No | All | Blackout periods. Shown when flight date is set and digital product is not Daily Reach Blast. | ||
| ad_duration | ad_duration | string | 5s (only when campaign type is Broadcast Activation), 6s (only when campaign type is Digital Activation and digital product is not Daily Reach Blast), 10s (only when campaign type is Broadcast Activation), 15s, 30s, 45s (only when digital product is not Daily Reach Blast), 60s (only when digital product is not Daily Reach Blast), 90s (only when campaign type is not Brand Awareness and digital product is not Daily Reach Blast) | Before booking | 30 | All | Ad duration. |
| sensitive_content | sensitive_content | string | None, Alcohol, Gambling, Sensitive, Adult | Before booking | None | All | Sensitive content. |
| creatives | creatives | array; array of string | No | All | Creative codes (Landmark House ID for linear, VAST tag for digital). | ||
| creative_rotation | creative_rotation | array; date range | No | All | Creative rotation: how the line item's delivery divides between its creatives over the flight. Left unset, they rotate evenly for its whole length. | ||
| goal_price_override | goal_price_override | number | No | Brand Awareness, Broadcast Activation (Audience), Digital Activation | Internal price override. Choices come from your account data. | ||
| digital_attention | digital_attention | boolean | No | Digital Activation | Attention measurement (on request). |
Which fields each campaign type shows
Derived from the platform rules that gate each field on the campaign type (and, for Broadcast Activation, the buying method).
Campaign level
| Field | Brand Awareness | Broadcast Activation | Sponsorship | Digital Activation |
|---|---|---|---|---|
Line item name name | ✓ | ✓ | ✓ | ✓ |
Flight date flight | ✓ | ✓ | ✓ | ✓ |
Budget budget | ✓ | ✓ | ✓ | ✓ |
Campaign type ad_product | ✓ | ✓ | ✓ | ✓ |
Buying method buying_method | ✓ | |||
Advertiser advertiser | ✓ | ✓ | ✓ | ✓ |
Agency agency | ✓ | ✓ | ✓ | ✓ |
Insertion order ID insertion_order_id | ✓ | ✓ | ✓ | ✓ |
PO number po_number | ✓ | ✓ | ✓ | ✓ |
Product product | ✓ | ✓ | ✓ | ✓ |
Product category product_category | ✓ | ✓ | ✓ | ✓ |
deal | ✓ | Audience | ✓ | ✓ |
Objective linear_objective | ✓ | Audience | ||
Discount % discount_pct | ✓ | ✓ | ||
notes | ✓ | ✓ | ✓ | ✓ |
Line item level
| Field | Brand Awareness | Broadcast Activation | Sponsorship | Digital Activation |
|---|---|---|---|---|
Line item name name | ✓ | ✓ | ✓ | ✓ |
Flight date flight | ✓ | ✓ | ✓ | ✓ |
blackout_periods | ✓ | ✓ | ✓ | ✓ |
Digital product digital_product | ✓ | |||
Stream Type digital_stream_type | ✓ | |||
Digital objective digital_objective | ✓ | |||
ad_duration | ✓ | Audience | ✓ | ✓ |
sensitive_content | ✓ | ✓ | ✓ | ✓ |
creatives | ✓ | Audience | ✓ | ✓ |
creative_rotation | ✓ | Audience | ✓ | ✓ |
Budget budget | ✓ | ✓ | ✓ | ✓ |
Target Impacts goal_target_impressions | ✓ | Audience | ✓ | |
goal_price_override | ✓ | Audience | ✓ | |
Week start linear_week_start | ✓ | Audience | ||
Start time linear_first_air_time | ✓ | Audience | ||
End time linear_last_air_time | ✓ | Audience | ||
Flight pacing linear_flight_pacing | ✓ | Audience | ||
Flight pacing split linear_flight_pacing_split | ✓ | Audience | ||
Ad Mirroring ad_mirroring | Audience | |||
Frequency Cap digital_frequency_caps | ✓ | |||
Age group age_group | ✓ | ✓ | ||
Gender gender | ✓ | ✓ | ||
Channels linear_channels | ✓ | |||
TVNZ 1 linear_channel_tvnz_1 | Audience | |||
TVNZ 2 linear_channel_tvnz_2 | Audience | |||
TVNZ Duke linear_channel_tvnz_duke | Audience | |||
Genre genre | ✓ | ✓ | ||
Demographics linear_demographics | ✓ | Audience | ||
Programme linear exclusion linear_programme_exclusion | ✓ | Audience | ||
Programme digital exclusion brand_programme_digital_exclusion | ✓ | |||
Programme digital exclusion digital_programme_exclusion | ✓ | |||
Programme rating programme_rating | ✓ | Audience | ✓ | |
Dayparts goal_dayparts | ✓ | |||
Peak % linear_peak_pct | ✓ | |||
Peak % audience_peak_pct | Audience | |||
Break position fib_lib_mode | ✓ | Audience | ||
FIB / LIB % fib_lib_pct | ✓ | Audience | ||
Sponsorship package spons_package | ✓ | |||
Openers (fixed 10 seconds) spons_openers | ✓ | |||
Credits (duration matches TVC length) spons_credits | ✓ | |||
Regions digital_region | ✓ | |||
Cities digital_city | ✓ | |||
Device Category digital_device_category | ✓ | |||
Weekend Shopper (Wed-Sat + household shoppers) digital_weekend_shopper | ✓ | |||
Hunger Zone Food delivery (4-8pm) digital_food_delivery | ✓ | |||
New to Market (Optimised Reach) digital_new_to_market | ✓ | |||
Digital audience type digital_audience_type | ✓ | |||
Segment digital_audience_segment | ✓ | |||
Custom digital_custom_audience | ✓ | |||
DataIQ digital_dataiq | ✓ | |||
LINK tracking digital_link_tracking | ✓ | |||
Conversion IQ digital_conversion_iq | ✓ | |||
Brand Lift digital_brand_lift | ✓ | |||
digital_attention | ✓ |
Option lists
Values behind the drop-downs, as the platform defines them.
Status
| Value | Meaning |
|---|---|
| Draft | |
| PendingApproval | |
| Booked | |
| Active | |
| Paused | |
| Completed | |
| Cancelled |
AdProduct
| Value | Meaning |
|---|---|
| Brand Awareness | (BrandAwareness) |
| Broadcast Activation | (BroadcastActivation) |
| Sponsorship | |
| Digital Activation | (DigitalActivation) |
BuyingMethod
| Value | Meaning |
|---|---|
| Audience | Audience-traded linear buy (goal-based, full linear targeting) |
| Spot | Spot-based shell campaign (spots booked later in TVMap) |
LinearObjective
| Value | Meaning |
|---|---|
| Standard | Even delivery across the flight at the standard rate; no special optimisation. |
| Reach Velocity | Front-load delivery to build unique reach fast in the early part of the campaign. (ReachVelocity) |
| Weekend Store Visit | Weight delivery to Wed-Sat, reaching household shoppers as the weekend shop is planned. (WeekendStoreVisit) |
| Hunger Zone | Concentrate spots in the 4-8 PM dinner window, when food orders and cravings peak. (HungerZone) |
| New to Market | Built for launches; optimises for maximum unique reach so as many people as possible see it once. (NewToMarket) |
VolumeUnit
| Value | Meaning |
|---|---|
| Impacts | Brand Awareness (Total TV). |
| Impressions | Digital Activation. |
| TARPs | A Broadcast Activation audience buy. (Tarps) |
| Spots | Sponsorship and a Broadcast Activation spot buy. |
DigitalProduct
| Value | Meaning |
|---|---|
| Standard Video | (StandardVideo) |
| Ad on Pause | (AdOnPause) |
| Social Stream | (SocialStream) |
| Daily Reach Blast | (DailyReachBlast) |
StreamType
| Value | Meaning |
|---|---|
| TVNZ+ Network (All video on TVNZ+) | (Network) |
| VOD (Video on Demand) | (Vod) |
| Live (Simulcast + FAST+ Live Events) | (Live) |
DigitalObjective
| Value | Meaning |
|---|---|
| Standard | Default front-weighted delivery |
| Maintain Brand Presence | Even delivery across the flight (MaintainBrandPresence) |
| Reach Velocity | Fast awareness / front weighted (ReachVelocity) |
AdDuration
| Value | Meaning |
|---|---|
| 5s | (5) |
| 6s | (6) |
| 10s | (10) |
| 15s | (15) |
| 30s | (30) |
| 45s | (45) |
| 60s | (60) |
| 90s | (90) |
SensitiveContent
| Value | Meaning |
|---|---|
| None | |
| Alcohol | |
| Gambling | |
| Sensitive | |
| Adult | Adult / R-rated |
AirTimeStart
96 values from 00:00 to 23:45 in 15-minute steps.
AirTimeEnd
96 values from 00:15 to 24:00 in 15-minute steps.
FlightPacing
| Value | Meaning |
|---|---|
| Evenly | |
| Weekly | |
| Monthly |
Daypart.from_day
| Value | Meaning |
|---|---|
| Mon | |
| Tue | |
| Wed | |
| Thu | |
| Fri | |
| Sat | |
| Sun |
Daypart.to_day
| Value | Meaning |
|---|---|
| Mon | |
| Tue | |
| Wed | |
| Thu | |
| Fri | |
| Sat | |
| Sun |
FibLibMode
| Value | Meaning |
|---|---|
| No preference | (NoPreference) |
| First in break | (First) |
| Last in break | (Last) |
DigitalAudienceType
| Value | Meaning |
|---|---|
| Audience segment | (Segment) |
| Custom audience | (Custom) |
| DataIQ | (DataIq) |
ChannelSharePercent
0 to 100 in steps of 5, plus optimized.
FibLibPercent
0 to 100 in steps of 5.
Weekday (chrono)
| Value | Meaning |
|---|---|
| Mon | |
| Tue | |
| Wed | |
| Thu | |
| Fri | |
| Sat | |
| Sun |
Platform rules worth knowing
- Generated mechanically from campaign-schema.json (live product schema), not from Rust source.
- 15 campaign fields, 54 line item fields (struct/property order preserved).
- required reflects membership in the component's JSON Schema "required" array; note that the served schema lists some fields (e.g. Campaign.budget) as required even though they are Option<...> in practice (requiredness is really governed by x-tvbeat-required-if) — see inventory-diff.md.
- rust_type is always null: the served schema carries no Rust type names.
- Enum names come from the $ref'd component schema name; enums with no component (inline "enum": [...] nested inside another schema, e.g. Daypart.from_day/to_day) are named "<ParentSchema>.<property>".
- shape is generated purely from schema structure (properties/required/format/x-tvbeat-type/title); it does not include business-rule prose that only exists as Rust doc-comments (e.g. "periods may overlap and union").
- Read-only fields with no x-tvbeat-autostore are treated as server-derived/framework fields and are listed only in derived_or_readonly, not in *_fields. Read-only fields carrying x-tvbeat-autostore = true (e.g. Campaign.product_category) are real fields the server fills in, so they are kept in *_fields too.
- Enum tables for fib_lib_pct, linear_channel_tvnz_1, linear_channel_tvnz_2, linear_channel_tvnz_duke, linear_week_start come from schema-inventory.supplement.json, not from the served schema.