import {z} from 'zod' export type GetApiCatalogsProductGroupsArgs = {id?: Array | undefined, feed_id?: string | undefined, catalog_id?: string | undefined, ad_account_id?: string | undefined, bookmark?: string | undefined, page_size?: number | undefined}; export type GetApiCatalogsProductGroupsOptions = {baseUrl?: string | undefined, pinterestOauth2?: string | undefined, fetch?: typeof fetch | undefined}; export const pinterestLibIntegerFormatType = z.string(); export const catalogsProductGroupPricingCriteria = z.object({inclusion: z.boolean().optional(), negated: z.boolean().optional(), values: z.number().gte(0)}); export const minPriceFilter = z.object({MIN_PRICE: catalogsProductGroupPricingCriteria}); export const maxPriceFilter = z.object({MAX_PRICE: catalogsProductGroupPricingCriteria}); export const nonNullableCatalogsCurrency = z.enum(["AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN", "BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BRL", "BSD", "BTN", "BWP", "BYN", "BYR", "BZD", "CAD", "CDF", "CHF", "CLP", "CNY", "COP", "CRC", "CUC", "CUP", "CVE", "CZK", "DJF", "DKK", "DOP", "DZD", "EGP", "ERN", "ETB", "EUR", "FJD", "FKP", "GBP", "GEL", "GGP", "GHS", "GIP", "GMD", "GNF", "GTQ", "GYD", "HKD", "HNL", "HRK", "HTG", "HUF", "IDR", "ILS", "IMP", "INR", "IQD", "IRR", "ISK", "JEP", "JMD", "JOD", "JPY", "KES", "KGS", "KHR", "KMF", "KPW", "KRW", "KWD", "KYD", "KZT", "LAK", "LBP", "LKR", "LRD", "LSL", "LYD", "MAD", "MDL", "MGA", "MKD", "MMK", "MNT", "MOP", "MRO", "MUR", "MVR", "MWK", "MXN", "MYR", "MZN", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB", "PEN", "PGK", "PHP", "PKR", "PLN", "PYG", "QAR", "RON", "RSD", "RUB", "RWF", "SAR", "SBD", "SCR", "SDG", "SEK", "SGD", "SHP", "SLL", "SOS", "SPL", "SRD", "STD", "SVC", "SYP", "SZL", "THB", "TJS", "TMT", "TND", "TOP", "TRY", "TTD", "TVD", "TWD", "TZS", "UAH", "UGX", "USD", "UYU", "UZS", "VEF", "VND", "VUV", "WST", "XAF", "XCD", "XDR", "XOF", "XPF", "YER", "ZAR", "ZMW", "ZWD"]); export const catalogsProductGroupCurrencyCriteria = z.object({negated: z.literal(false).optional(), values: nonNullableCatalogsCurrency}); export const currencyFilter = z.object({CURRENCY: catalogsProductGroupCurrencyCriteria}); export const catalogsProductGroupMultipleStringCriteria = z.object({negated: z.boolean().optional(), values: z.array(z.string())}); export const itemIdFilter = z.object({ITEM_ID: catalogsProductGroupMultipleStringCriteria}); export const availabilityFilter = z.object({AVAILABILITY: catalogsProductGroupMultipleStringCriteria}); export const brandFilter = z.object({BRAND: catalogsProductGroupMultipleStringCriteria}); export const conditionFilter = z.object({CONDITION: catalogsProductGroupMultipleStringCriteria}); export const filterOperatorType = z.enum(["IS", "CONTAINS"]); export const catalogsProductGroupFilterOperatorTypeCriteria = z.object({filter_operator_type: filterOperatorType.optional(), negated: z.boolean().optional(), values: z.array(z.string())}); export const customLabel0Filter = z.object({CUSTOM_LABEL_0: catalogsProductGroupFilterOperatorTypeCriteria}); export const customLabel1Filter = z.object({CUSTOM_LABEL_1: catalogsProductGroupFilterOperatorTypeCriteria}); export const customLabel2Filter = z.object({CUSTOM_LABEL_2: catalogsProductGroupFilterOperatorTypeCriteria}); export const customLabel3Filter = z.object({CUSTOM_LABEL_3: catalogsProductGroupFilterOperatorTypeCriteria}); export const customLabel4Filter = z.object({CUSTOM_LABEL_4: catalogsProductGroupFilterOperatorTypeCriteria}); export const itemGroupIdFilter = z.object({ITEM_GROUP_ID: catalogsProductGroupMultipleStringCriteria}); export const gender = z.enum(["FEMALE", "MALE", "UNISEX"]); export const catalogsProductGroupMultipleGenderCriteria = z.object({negated: z.boolean().optional(), values: z.array(gender)}); export const genderFilter = z.object({GENDER: catalogsProductGroupMultipleGenderCriteria}); export const mediaType = z.enum(["IMAGE", "VIDEO"]); export const catalogsProductGroupMultipleMediaTypesCriteria = z.object({negated: z.boolean().optional(), values: z.array(mediaType)}); export const mediaTypeFilter = z.object({MEDIA_TYPE: catalogsProductGroupMultipleMediaTypesCriteria}); export const catalogsProductGroupMultipleStringListCriteriaValuesItemsItem = z.array(z.string()); export const catalogsProductGroupMultipleStringListCriteria = z.object({negated: z.boolean().optional(), values: z.array(catalogsProductGroupMultipleStringListCriteriaValuesItemsItem)}); export const productType4Filter = z.object({PRODUCT_TYPE_4: catalogsProductGroupMultipleStringListCriteria}); export const productType3Filter = z.object({PRODUCT_TYPE_3: catalogsProductGroupMultipleStringListCriteria}); export const productType2Filter = z.object({PRODUCT_TYPE_2: catalogsProductGroupMultipleStringListCriteria}); export const productType1Filter = z.object({PRODUCT_TYPE_1: catalogsProductGroupMultipleStringListCriteria}); export const productType0Filter = z.object({PRODUCT_TYPE_0: catalogsProductGroupMultipleStringListCriteria}); export const googleProductCategory6Filter = z.object({GOOGLE_PRODUCT_CATEGORY_6: catalogsProductGroupMultipleStringListCriteria}); export const googleProductCategory5Filter = z.object({GOOGLE_PRODUCT_CATEGORY_5: catalogsProductGroupMultipleStringListCriteria}); export const googleProductCategory4Filter = z.object({GOOGLE_PRODUCT_CATEGORY_4: catalogsProductGroupMultipleStringListCriteria}); export const googleProductCategory3Filter = z.object({GOOGLE_PRODUCT_CATEGORY_3: catalogsProductGroupMultipleStringListCriteria}); export const googleProductCategory2Filter = z.object({GOOGLE_PRODUCT_CATEGORY_2: catalogsProductGroupMultipleStringListCriteria}); export const googleProductCategory1Filter = z.object({GOOGLE_PRODUCT_CATEGORY_1: catalogsProductGroupMultipleStringListCriteria}); export const googleProductCategory0Filter = z.object({GOOGLE_PRODUCT_CATEGORY_0: catalogsProductGroupMultipleStringListCriteria}); export const numericFilterOperatorType = z.enum(["GREATER_THAN", "GREATER_THAN_OR_EQUALS", "LESS_THAN", "LESS_THAN_OR_EQUALS"]); export const catalogsProductGroupUint32Criteria = z.object({negated: z.boolean().optional(), operator: numericFilterOperatorType, value: z.number().int().gte(0).lte(4294967295)}); export const customNumber0Filter = z.object({CUSTOM_NUMBER_0: catalogsProductGroupUint32Criteria}); export const customNumber1Filter = z.object({CUSTOM_NUMBER_1: catalogsProductGroupUint32Criteria}); export const customNumber2Filter = z.object({CUSTOM_NUMBER_2: catalogsProductGroupUint32Criteria}); export const customNumber3Filter = z.object({CUSTOM_NUMBER_3: catalogsProductGroupUint32Criteria}); export const customNumber4Filter = z.object({CUSTOM_NUMBER_4: catalogsProductGroupUint32Criteria}); export const titleKeywordsFilter = z.object({TITLE_KEYWORDS: catalogsProductGroupMultipleStringCriteria}); export const productCategoryEnum = z.enum(["ACCENT_TABLES", "ACCESSORIES", "ANKLETS", "APRONS", "AREA_RUGS", "ARMOIRES_AND_WARDROBES", "ART_AND_CRAFT_PAINTS", "ART_BRUSHES", "ARTIFICIAL_FLORA", "ARTWORK", "AUDIO", "AUDIO_ACCESSORIES", "BACKPACKS", "BAG_AND_LUGGAGE_ACCESSORIES", "BAGS_AND_LUGGAGE", "BAKEWARE", "BANDANAS", "BAR_CARTS", "BARWARE", "BASKETS", "BATH_AND_BODY", "BATH_AND_SHOWER", "BATH_MATS_AND_RUGS", "BATH_TOWELS_AND_WASHCLOTHS", "BATHROOM_ACCESSORIES", "BATHROOM_ACCESSORY_SETS", "BATHROOM_VANITIES", "BEACH_TOWELS", "BEADS_AND_JEWELRY_MAKING_SUPPLIES", "BEAUTY_SUPPLEMENTS", "BED_SHEETS", "BEDDING", "BEDROOM_VANITIES", "BEDS_AND_ACCESSORIES", "BEDS_AND_BED_FRAMES", "BELT_BAGS", "BELTS_AND_SUSPENDERS", "BENCHES", "BEVERAGES", "BIRD_SUPPLIES", "BLANKETS", "BLOUSES", "BLUSHES_AND_BRONZERS", "BODY_CARE", "BODY_JEWELRY", "BODY_MAKEUP", "BODY_MOISTURIZERS", "BODY_WASHES", "BOOKCASES_AND_STANDING_SHELVES", "BOOKENDS", "BOOKS", "BOOTS", "BRACELETS", "BRIDESMAID_DRESSES", "BROOCHES_AND_LAPEL_PINS", "BROW_MAKEUP", "BUFFETS_AND_SIDEBOARDS", "BUTTON_DOWN_SHIRTS", "CABINET_HARDWARE", "CABINETS_AND_STORAGE_FURNITURE", "CAKE_DECORATING_SUPPLIES", "CAMPING_AND_HIKING", "CANDLE_HOLDERS", "CANDLES", "CARDSTOCK_PAPERS", "CASUAL_PANTS", "CAT_SUPPLIES", "CHAIRS", "CHANDELIERS", "CHARMS_AND_PENDANTS", "CHINA_CABINETS_AND_HUTCHES", "CLOGS_AND_MULES", "CLOTH_NAPKINS", "CLOTHING", "CLOTHING_AND_CLOSET_STORAGE", "CLOTHING_SETS", "COASTERS", "COATS_AND_JACKETS", "COFFEE_AND_TEA_CUPS", "COFFEE_MAKERS_AND_ESPRESSO_MACHINES", "COLORING_BOOKS", "COMMUNICATIONS", "COMPUTER_ACCESSORIES", "COOKIE_CUTTERS", "COOKWARE", "COOKWARE_AND_BAKEWARE", "COSMETIC_AND_TOILETRY_BAGS", "COSTUMES_AND_ACCESSORIES", "CRAFT_ADHESIVES_AND_MAGNETS", "CRAFT_CUTTING_TOOLS", "CRAFT_MOLDS", "CRIBS_AND_TODDLER_BEDS", "CURTAIN_AND_DRAPE_RODS", "CURTAINS_AND_DRAPES", "CUTTING_BOARDS", "CYCLING", "DECORATIVE_BOWLS", "DECORATIVE_JARS", "DECORATIVE_TAPESTRIES", "DECORATIVE_TRAYS", "DEODORANTS_AND_ANTIPERSPIRANTS", "DESK_AND_SHELF_CLOCKS", "DESKS", "DIAPER_BAGS", "DINNERWARE", "DISHWASHERS", "DOG_SUPPLIES", "DOOR_MATS", "DRAWING_AND_PAINTING", "DRESS_PANTS", "DRESSERS", "DRESSES", "DRILLS_AND_SCREWDRIVERS", "DRINKWARE", "DUFFEL_BAGS", "DUVET_COVERS", "DVDS_AND_VIDEOS", "EARRINGS", "ELECTRONICS_ACCESSORIES", "ENGAGEMENT_AND_WEDDING_RINGS", "ENTERTAINMENT_CENTERS_AND_TV_STANDS", "ERASERS", "EYE_MAKEUP", "EYE_SHADOW", "EYELINERS", "FABRIC", "FACE_COVERINGS", "FACE_LOTIONS_AND_CREAMS", "FACE_MAKEUP", "FACIAL_CLEANSERS", "FACIAL_MOISTURIZERS", "FALSE_EYELASHES", "FIGURINES", "FIREPLACE_AND_WOOD_STOVE_ACCESSORIES", "FIREPLACES", "FISHING", "FLAGS_AND_WINDSOCKS", "FLATS", "FLATWARE", "FLOOR_LAMPS", "FLOWER_GIRL_DRESSES", "FOOD_AND_BEVERAGE_CARRIERS", "FOOD_COOKERS_AND_STEAMERS", "FOOD_ITEMS", "FOOD_MIXERS_AND_BLENDERS", "FOOD_STORAGE_CONTAINERS", "FOOD_STORAGE_SUPPLIES", "FOUNDATIONS_AND_CONCEALERS", "FOUNTAINS_AND_PONDS", "FRAGRANCE", "FURNITURE", "FURNITURE_SETS", "GAMES", "GARDENING", "GARDENING_TOOLS", "GLOVES_AND_MITTENS", "GLUES_AND_TAPES", "GROOM_AND_GROOMSMEN_SUITS", "HAIR", "HAIR_ACCESSORIES", "HAIR_CARE", "HAIR_COLOR", "HAIR_COMBS", "HAIR_PINS_CLAWS_AND_CLIPS", "HAIR_REMOVAL", "HAIR_TOOLS", "HAIR_TREATMENT", "HAIR_WREATHS", "HAND_AND_FOOT_CARE", "HAND_SOAPS_AND_SANITIZERS", "HANDBAGS", "HANDKERCHIEFS", "HARDWARE_SUPPLIES", "HATS", "HEADBOARDS_AND_FOOTBOARDS", "HEADWEAR", "HIGHLIGHTERS", "HOBBIES_AND_CREATIVE_ARTS", "HOME_ACCESSORIES", "HOME_DECOR_DECALS", "HOME_FRAGRANCE_ACCESSORIES", "HOME_FRAGRANCES", "HOME_IMPROVEMENT_TOOLS_AND_SUPPLIES", "HOSIERY", "HOUSEHOLD_APPLIANCES", "HOUSEHOLD_SUPPLIES", "INCENSE", "INDOOR_GAMES", "JEANS", "JEWELRY_AND_WATCH_ACCESSORIES", "JEWELRY_AND_WATCHES", "JEWELRY_SETS", "JUMPSUITS_AND_ROMPERS", "KEYCHAINS", "KITCHEN_AND_DINING", "KITCHEN_AND_DINING_ROOM_TABLES", "KITCHEN_APPLIANCES", "KITCHEN_KNIVES", "KITCHEN_LINENS", "KITCHEN_MATS", "KITCHEN_ORGANIZERS", "KITCHEN_TOOLS_AND_UTENSILS", "KITCHEN_TOWELS", "KNITTING_AND_CROCHET", "KNITTING_AND_CROCHET_TOOLS", "LAMP_SHADES", "LAMPS", "LANYARDS", "LAUNDRY_HAMPERS_AND_SUPPLIES", "LAWN_AND_GARDEN", "LAWN_AND_GARDEN_DECOR", "LAWN_ORNAMENTS_AND_GARDEN_SCULPTURES", "LEGGINGS", "LEOTARDS_AND_UNITARDS", "LIGHTING", "LIGHTING_ACCESSORIES", "LIGHTING_FIXTURES", "LIP_BALMS", "LIP_CARE", "LIP_MAKEUP", "LIPSTICKS_AND_LIP_GLOSSES", "MAGAZINES_AND_NEWSPAPERS", "MAGNETS", "MAKEUP", "MAKEUP_TOOLS", "MASCARAS", "MATTRESSES", "MEASURES_AND_RULERS", "MEASURING_TOOLS_AND_SENSORS", "MESSENGER_BAGS", "MIRRORS", "MUSIC_AND_SOUND_RECORDINGS", "NAIL_ART", "NAIL_ART_KIT_AND_TOOLS", "NAIL_CARE", "NAIL_POLISHES", "NAILS", "NECKLACES", "NECKTIES", "NIGHT_LIGHTS_AND_AMBIENT_LIGHTING", "NIGHTSTANDS", "NOVELTY_SIGNS", "ONE_PIECES", "ONESIES", "OTTOMANS", "OUTDOOR_FURNITURE", "OUTDOOR_FURNITURE_SETS", "OUTDOOR_GAMES", "OUTDOOR_GRILLS", "OUTDOOR_LIVING", "OUTDOOR_PLAY_EQUIPMENT", "OUTDOOR_RECREATION", "OUTDOOR_RUGS", "OUTDOOR_SEATING", "OUTDOOR_STRUCTURES", "OUTDOOR_TABLES", "OUTERWEAR", "OVENS_AND_COOKTOPS", "OVERALLS", "OXFORDS_AND_LOAFERS", "PAINT_AND_PAINT_TOOLS", "PANTS", "PAPER_CRAFTS", "PARASOLS_AND_RAIN_UMBRELLAS", "PARTY_AND_CELEBRATION", "PENDANT_LIGHTS", "PENS_AND_PENCILS", "PERFUMES_AND_COLOGNES", "PET_CARRIERS_AND_CRATES", "PET_COLLARS_AND_HARNESSES", "PET_SUPPLIES", "PHOTO_ALBUMS_AND_STORAGE", "PICTURE_FRAMES", "PILLOWCASES_AND_SHAMS", "PINBACK_BUTTONS", "PLACEMATS", "PLANTS", "PONYTAIL_HOLDERS", "POOL_AND_SPA_ACCESSORIES", "POSTERS_PRINTS_AND_VISUAL_ARTWORK", "POTS_AND_PLANTERS", "POTTERY_AND_SCULPTING", "PRIMERS_AND_MAKEUP_SETTERS", "PUMPS", "PUZZLES", "QUILTS_AND_COMFORTERS", "RAZORS_AND_SHAVING_TOOLS", "RINGS", "RUGS", "RUNNER_RUGS", "SANDALS", "SASHES", "SAWS", "SCARVES_AND_SHAWLS", "SCULPTURES_AND_STATUES", "SEASONAL_AND_HOLIDAY_DECORATIONS", "SEATING", "SERUMS_AND_ESSENCES", "SERVEWARE", "SEWING_MACHINES", "SEWING_PATTERNS", "SHAMPOO_AND_CONDITIONER", "SHOE_ACCESSORIES", "SHOES", "SHOPPING_TOTES", "SHORTS", "SHOWER_CURTAINS", "SKINCARE", "SKINCARE_MASKS_AND_PEELS", "SKIRTS", "SLEEPWEAR_AND_LOUNGEWEAR", "SLIPCOVERS_AND_CUSHIONS", "SLIPPERS", "SNEAKERS_AND_ATHLETIC_SHOES", "SOCKS_AND_TIGHTS", "SOFAS", "SPORTS_UNIFORMS", "STEMWARE", "STOCKINGS", "STORAGE_AND_ORGANIZATION", "STORAGE_CABINETS_AND_LOCKERS", "STORAGE_HOOKS_AND_RACKS", "SUITCASES", "SUITS", "SUITS_AND_SUIT_SEPARATES", "GLASSES_AND_SUNGLASSES", "SUNSCREEN", "SWEATERS_AND_CARDIGANS", "SWEATSHIRTS_AND_HOODIES", "SWIMWEAR", "T_SHIRTS", "TABLE_LAMPS", "TABLE_RUNNERS", "TABLECLOTHS", "TABLES", "TABLEWARE", "TANK_TOPS", "TANNING_OILS_AND_LOTIONS", "TEETH_WHITENING", "TEETH_WHITENING_TOOLS", "TELEPHONY", "TEXTILE_AND_SEWING", "THREAD_AND_YARN", "THROW_PILLOWS", "TIARAS", "TOILET_PAPER_HOLDERS", "TONERS_AND_ASTRINGENTS", "TOOL_STORAGE_AND_ORGANIZATION", "TOOLS", "TOPS", "TOWEL_RACKS_AND_HOLDERS", "TOYS", "TRADITIONAL_AND_CEREMONIAL_CLOTHING", "TUMBLERS_AND_WATER_BOTTLES", "UNIFORMS", "VASES", "VEHICLE_PARTS_AND_ACCESSORIES", "VEILS", "WALL_CLOCKS", "WALL_LIGHT_FIXTURES", "WALL_PAINTS", "WALL_SHELVES_AND_LEDGES", "WALLETS_AND_CARD_CASES", "WALLPAPERS", "WATCHES", "WATERING_AND_IRRIGATION", "WEDDING_CEREMONY_DECOR", "WEDDING_CLOTHING", "WEDDING_DECOR", "WEDDING_DRESS", "WEDDING_GIFTS", "WEDDING_STATIONERY", "WEDDING_TABLE_DECOR", "WIGS_AND_HAIR_EXTENSIONS", "WINDOW_BLINDS_AND_SHADES", "WINDOW_TREATMENT_ACCESSORIES", "WINDOW_TREATMENTS", "WINE_RACKS", "WOOD_BOARDS_AND_PLANKS", "WOODWORKING_MATERIALS", "WOODWORKING_PLANS", "WORK_BENCHES", "WREATHS_AND_GARLANDS"]); export const catalogsProductGroupMultiplePinterestProductCategoryCriteria = z.object({negated: z.boolean().optional(), values: z.array(productCategoryEnum)}); export const pinterestProductCategoriesFilter = z.object({PINTEREST_PRODUCT_CATEGORIES: catalogsProductGroupMultiplePinterestProductCategoryCriteria}); export const catalogsBaseFilterKeys = z.union([minPriceFilter, maxPriceFilter, currencyFilter, itemIdFilter, availabilityFilter, brandFilter, conditionFilter, customLabel0Filter, customLabel1Filter, customLabel2Filter, customLabel3Filter, customLabel4Filter, itemGroupIdFilter, genderFilter, mediaTypeFilter, productType4Filter, productType3Filter, productType2Filter, productType1Filter, productType0Filter, googleProductCategory6Filter, googleProductCategory5Filter, googleProductCategory4Filter, googleProductCategory3Filter, googleProductCategory2Filter, googleProductCategory1Filter, googleProductCategory0Filter, customNumber0Filter, customNumber1Filter, customNumber2Filter, customNumber3Filter, customNumber4Filter, titleKeywordsFilter, pinterestProductCategoriesFilter]); export const productGroupReferenceFilter = z.object({PRODUCT_GROUP: catalogsProductGroupMultipleStringCriteria}); export const catalogsProductGroupFilterKeys = z.union([catalogsBaseFilterKeys, productGroupReferenceFilter]); export const catalogsProductGroupFiltersAnyOf = z.object({any_of: z.array(catalogsProductGroupFilterKeys)}); export const catalogsProductGroupFiltersAllOf = z.object({all_of: z.array(catalogsProductGroupFilterKeys)}); export const catalogsProductGroupFilters = z.union([catalogsProductGroupFiltersAnyOf, catalogsProductGroupFiltersAllOf]); export const catalogsProductGroupStatus = z.enum(["ACTIVE", "INACTIVE"]); export const catalogsProductGroupType = z.enum(["MERCHANT_CREATED", "ALL_PRODUCTS", "BEST_DEALS", "PINNER_FAVORITES", "TOP_SELLERS", "BACK_IN_STOCK", "NEW_ARRIVALS", "SHOPIFY_COLLECTIONS", "I2PC", "CATALOG_EXPANSION"]); export const priceFilterPrice = z.object({currency: nonNullableCatalogsCurrency, negated: z.boolean().optional(), operator: numericFilterOperatorType, value: z.number().gte(0)}); export const priceFilter = z.object({PRICE: priceFilterPrice}); export const hotelIdFilter = z.object({HOTEL_ID: catalogsProductGroupMultipleStringCriteria}); export const country = z.enum(["AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW"]); export const catalogsProductGroupMultipleCountriesCriteria = z.object({negated: z.boolean().optional(), values: z.array(country)}); export const countryFilter = z.object({COUNTRY: catalogsProductGroupMultipleCountriesCriteria}); export const catalogsHotelProductGroupFilterKeys = z.union([priceFilter, hotelIdFilter, brandFilter, customLabel0Filter, customLabel1Filter, customLabel2Filter, customLabel3Filter, customLabel4Filter, countryFilter, titleKeywordsFilter]); export const catalogsHotelProductGroupFiltersAnyOf = z.object({any_of: z.array(catalogsHotelProductGroupFilterKeys)}); export const catalogsHotelProductGroupFiltersAllOf = z.object({all_of: z.array(catalogsHotelProductGroupFilterKeys)}); export const catalogsHotelProductGroupFilters = z.union([catalogsHotelProductGroupFiltersAnyOf, catalogsHotelProductGroupFiltersAllOf]); export const catalogsHotelProductGroupType = z.enum(["MERCHANT_CREATED", "ALL_LISTINGS"]); export const creativeAssetsIdFilter = z.object({CREATIVE_ASSETS_ID: catalogsProductGroupMultipleStringCriteria}); export const linkFilter = z.object({LINK: catalogsProductGroupFilterOperatorTypeCriteria}); export const catalogsCreativeAssetsProductGroupFilterKeys = z.union([creativeAssetsIdFilter, customLabel0Filter, customLabel1Filter, customLabel2Filter, customLabel3Filter, customLabel4Filter, googleProductCategory6Filter, googleProductCategory5Filter, googleProductCategory4Filter, googleProductCategory3Filter, googleProductCategory2Filter, googleProductCategory1Filter, googleProductCategory0Filter, mediaTypeFilter, titleKeywordsFilter, linkFilter]); export const catalogsCreativeAssetsProductGroupFiltersAnyOf = z.object({any_of: z.array(catalogsCreativeAssetsProductGroupFilterKeys)}); export const catalogsCreativeAssetsProductGroupFiltersAllOf = z.object({all_of: z.array(catalogsCreativeAssetsProductGroupFilterKeys)}); export const catalogsCreativeAssetsProductGroupFilters = z.union([catalogsCreativeAssetsProductGroupFiltersAnyOf, catalogsCreativeAssetsProductGroupFiltersAllOf]); export const catalogsVerticalProductGroup = z.discriminatedUnion("catalog_type", [z.object({catalog_id: pinterestLibIntegerFormatType, catalog_type: z.literal("RETAIL"), country: z.string().nullable().optional(), created_at: z.number().int().optional(), description: z.string().nullable().optional(), feed_id: z.string().nullable(), filters: catalogsProductGroupFilters, id: pinterestLibIntegerFormatType, is_featured: z.boolean().optional(), locale: z.string().nullable().optional(), name: z.string().optional(), status: catalogsProductGroupStatus.optional(), type: catalogsProductGroupType, updated_at: z.number().int().optional()}), z.object({catalog_id: pinterestLibIntegerFormatType, catalog_type: z.literal("HOTEL"), created_at: z.number().int().optional(), description: z.string().nullable().optional(), filters: catalogsHotelProductGroupFilters, id: pinterestLibIntegerFormatType, name: z.string().optional(), type: catalogsHotelProductGroupType, updated_at: z.number().int().optional()}), z.object({catalog_id: pinterestLibIntegerFormatType, catalog_type: z.literal("CREATIVE_ASSETS"), created_at: z.number().int().optional(), description: z.string().nullable().optional(), filters: catalogsCreativeAssetsProductGroupFilters, id: pinterestLibIntegerFormatType, name: z.string().optional(), updated_at: z.number().int().optional()})]); export const getApiCatalogsProductGroupsResponse = z.object({bookmark: z.string().nullable().optional(), items: z.array(catalogsVerticalProductGroup)}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * List product groups * * GET /catalogs/product_groups */ export const getApiCatalogsProductGroups = async (args: GetApiCatalogsProductGroupsArgs, options?: GetApiCatalogsProductGroupsOptions) => { const {baseUrl = "https://api.pinterest.com/v5", fetch: fetchFn = fetch, pinterestOauth2} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.id != null) query.append("id", args.id.join(',')) if (args.feed_id != null) query.append("feed_id", String(args.feed_id)) if (args.catalog_id != null) query.append("catalog_id", String(args.catalog_id)) if (args.ad_account_id != null) query.append("ad_account_id", String(args.ad_account_id)) if (args.bookmark != null) query.append("bookmark", String(args.bookmark)) if (args.page_size != null) query.append("page_size", String(args.page_size)) if (pinterestOauth2 !== undefined) headers.set('authorization', `Bearer ${pinterestOauth2}`) const url = `${baseUrl.replace(/\/+$/, '')}/catalogs/product_groups${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(getApiCatalogsProductGroupsResponse, await res.json()) };