lib/client/services/lineItem/lineItem.struct.ts (117 lines of code) (raw):

import { array, boolean, number, object, optional, string, type Describe, } from "superstruct"; import type { LineItem } from "./lineItem.type"; import { DateTimeStruct } from "../../../common/types"; import { CustomPacingCurveStruct, LineItemActivityAssociationStruct, LineItemDealInfoDtoStruct, } from "../../common/types/lineItemSummary.type"; import { StatsStruct, MoneyStruct, AppliedLabelStruct, ThirdPartyMeasurementSettingsStruct, GoalStruct, GrpSettingsStruct, CreativePlaceholderStruct, TargetingStruct, CreativeTargetingStruct, FrequencyCapStruct, DeliveryIndicatorStruct, DeliveryDataStruct, BaseCustomFieldValueStruct, } from "../../common/types"; import { AllowedFormatsEnum, ChildContentEligibilityEnum, CompanionDeliveryOptionEnum, CompetitiveConstraintScopeEnum, CostTypeEnum, CreativeRotationTypeEnum, DeliveryForecastSourceEnum, DeliveryRateTypeEnum, EnvironmentTypeEnum, LineItemDiscountTypeEnum, LineItemSummaryReservationStatusEnum, LineItemTypeEnum, ProgrammaticCreativeSourceEnum, RoadblockingTypeEnum, SkippableAdTypeEnum, StatusEnum, } from "../../common/enums"; import { StartDateTimeTypeEnum } from "../../../common/enums"; /** * Represents a LineItem struct * Can be used to validate and parse LineItem objects */ export const LineItemStruct: Describe<LineItem> = object({ orderId: number(), id: number(), name: string(), externalId: optional(string()), orderName: string(), startDateTime: DateTimeStruct, startDateTimeType: StartDateTimeTypeEnum, endDateTime: optional(DateTimeStruct), autoExtensionDays: number(), unlimitedEndDateTime: boolean(), creativeRotationType: CreativeRotationTypeEnum, deliveryRateType: DeliveryRateTypeEnum, deliveryForecastSource: DeliveryForecastSourceEnum, customPacingCurve: optional(CustomPacingCurveStruct), roadblockingType: RoadblockingTypeEnum, skippableAdType: SkippableAdTypeEnum, frequencyCaps: optional(array(FrequencyCapStruct)), lineItemType: LineItemTypeEnum, priority: number(), costPerUnit: MoneyStruct, valueCostPerUnit: MoneyStruct, costType: CostTypeEnum, discountType: LineItemDiscountTypeEnum, discount: number(), contractedUnitsBought: number(), creativePlaceholders: array(CreativePlaceholderStruct), activityAssociations: optional(array(LineItemActivityAssociationStruct)), environmentType: EnvironmentTypeEnum, allowedFormats: optional(array(AllowedFormatsEnum)), companionDeliveryOption: CompanionDeliveryOptionEnum, allowOverbook: boolean(), skipInventoryCheck: boolean(), skipCrossSellingRuleWarningChecks: boolean(), reserveAtCreation: boolean(), stats: optional(StatsStruct), deliveryIndicator: optional(DeliveryIndicatorStruct), deliveryData: optional(DeliveryDataStruct), budget: MoneyStruct, status: StatusEnum, reservationStatus: LineItemSummaryReservationStatusEnum, isArchived: boolean(), webPropertyCode: string(), appliedLabels: optional(array(AppliedLabelStruct)), effectiveAppliedLabels: optional(array(AppliedLabelStruct)), disableSameAdvertiserCompetitiveExclusion: boolean(), lastModifiedByApp: string(), notes: optional(string()), competitiveConstraintScope: CompetitiveConstraintScopeEnum, lastModifiedDateTime: DateTimeStruct, creationDateTime: DateTimeStruct, customFieldValues: optional(array(BaseCustomFieldValueStruct)), isMissingCreatives: boolean(), youtubeKidsRestricted: optional(boolean()), programmaticCreativeSource: optional(ProgrammaticCreativeSourceEnum), thirdPartyMeasurementSettings: optional(ThirdPartyMeasurementSettingsStruct), videoMaxDuration: number(), primaryGoal: GoalStruct, secondaryGoals: optional(array(GoalStruct)), grpSettings: optional(GrpSettingsStruct), dealInfo: optional(LineItemDealInfoDtoStruct), viewabilityProviderCompanyIds: optional(array(number())), childContentEligibility: optional(ChildContentEligibilityEnum), customVastExtension: optional(string()), targeting: TargetingStruct, creativeTargetings: optional(array(CreativeTargetingStruct)), });