/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import * as z from "zod/v3"; import { remap as remap$ } from "../../lib/primitives.js"; /** * The unique IDs of the tags assigned to the short link. */ export type BulkUpdateLinksTagIds = string | Array; /** * The unique name of the tags assigned to the short link (case insensitive). */ export type BulkUpdateLinksTagNames = string | Array; export type BulkUpdateLinksTestVariants = { url: string; percentage: number; }; export type Data = { /** * The destination URL of the short link. */ url?: string | undefined; /** * The ID of the tenant that created the link inside your system. If set, it can be used to fetch all links for a tenant. */ tenantId?: string | null | undefined; /** * The ID of the program the short link is associated with. */ programId?: string | null | undefined; /** * The ID of the partner the short link is associated with. */ partnerId?: string | null | undefined; /** * Whether to track conversions for the short link. Defaults to `false` if not provided. */ trackConversion?: boolean | undefined; /** * Whether the short link is archived. Defaults to `false` if not provided. */ archived?: boolean | undefined; /** * The unique IDs of the tags assigned to the short link. */ tagIds?: string | Array | undefined; /** * The unique name of the tags assigned to the short link (case insensitive). */ tagNames?: string | Array | undefined; /** * The unique ID existing folder to assign the short link to. */ folderId?: string | null | undefined; /** * The comments for the short link. */ comments?: string | null | undefined; /** * The date and time when the short link will expire at. */ expiresAt?: string | null | undefined; /** * The URL to redirect to when the short link has expired. */ expiredUrl?: string | null | undefined; /** * The password required to access the destination URL of the short link. */ password?: string | null | undefined; /** * Whether the short link uses Custom Link Previews feature. Defaults to `false` if not provided. */ proxy?: boolean | undefined; /** * The custom link preview title (og:title). Will be used for Custom Link Previews if `proxy` is true. Learn more: https://d.to/og */ title?: string | null | undefined; /** * The custom link preview description (og:description). Will be used for Custom Link Previews if `proxy` is true. Learn more: https://d.to/og */ description?: string | null | undefined; /** * The custom link preview image (og:image). Will be used for Custom Link Previews if `proxy` is true. Learn more: https://d.to/og */ image?: string | null | undefined; /** * The custom link preview video (og:video). Will be used for Custom Link Previews if `proxy` is true. Learn more: https://d.to/og */ video?: string | null | undefined; /** * Whether the short link uses link cloaking. Defaults to `false` if not provided. */ rewrite?: boolean | undefined; /** * The iOS destination URL for the short link for iOS device targeting. */ ios?: string | null | undefined; /** * The Android destination URL for the short link for Android device targeting. */ android?: string | null | undefined; /** * Geo targeting information for the short link in JSON format `{[COUNTRY]: https://example.com }`. See https://d.to/geo for more information. */ geo?: { [k: string]: string } | null | undefined; /** * Allow search engines to index your short link. Defaults to `false` if not provided. Learn more: https://d.to/noindex */ doIndex?: boolean | undefined; /** * The UTM source of the short link. If set, this will populate or override the UTM source in the destination URL. */ utmSource?: string | null | undefined; /** * The UTM medium of the short link. If set, this will populate or override the UTM medium in the destination URL. */ utmMedium?: string | null | undefined; /** * The UTM campaign of the short link. If set, this will populate or override the UTM campaign in the destination URL. */ utmCampaign?: string | null | undefined; /** * The UTM term of the short link. If set, this will populate or override the UTM term in the destination URL. */ utmTerm?: string | null | undefined; /** * The UTM content of the short link. If set, this will populate or override the UTM content in the destination URL. */ utmContent?: string | null | undefined; /** * The referral tag of the short link. If set, this will populate or override the `ref` query parameter in the destination URL. */ ref?: string | null | undefined; /** * An array of webhook IDs to trigger when the link is clicked. These webhooks will receive click event data. */ webhookIds?: Array | null | undefined; /** * An array of A/B test URLs and the percentage of traffic to send to each URL. */ testVariants?: Array | null | undefined; /** * The date and time when the tests started. */ testStartedAt?: string | null | undefined; /** * The date and time when the tests were or will be completed. */ testCompletedAt?: string | null | undefined; /** * Deprecated: Use `dashboard` instead. Whether the short link's stats are publicly accessible. Defaults to `false` if not provided. * * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible. */ publicStats?: boolean | undefined; /** * Deprecated: Use `tagIds` instead. The unique ID of the tag assigned to the short link. * * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible. */ tagId?: string | null | undefined; }; export type BulkUpdateLinksRequestBody = { /** * The IDs of the links to update. Takes precedence over `externalIds`. */ linkIds?: Array | undefined; /** * The external IDs of the links to update as stored in your database. */ externalIds?: Array | undefined; data: Data; }; /** @internal */ export type BulkUpdateLinksTagIds$Outbound = string | Array; /** @internal */ export const BulkUpdateLinksTagIds$outboundSchema: z.ZodType< BulkUpdateLinksTagIds$Outbound, z.ZodTypeDef, BulkUpdateLinksTagIds > = z.union([z.string(), z.array(z.string())]); export function bulkUpdateLinksTagIdsToJSON( bulkUpdateLinksTagIds: BulkUpdateLinksTagIds, ): string { return JSON.stringify( BulkUpdateLinksTagIds$outboundSchema.parse(bulkUpdateLinksTagIds), ); } /** @internal */ export type BulkUpdateLinksTagNames$Outbound = string | Array; /** @internal */ export const BulkUpdateLinksTagNames$outboundSchema: z.ZodType< BulkUpdateLinksTagNames$Outbound, z.ZodTypeDef, BulkUpdateLinksTagNames > = z.union([z.string(), z.array(z.string())]); export function bulkUpdateLinksTagNamesToJSON( bulkUpdateLinksTagNames: BulkUpdateLinksTagNames, ): string { return JSON.stringify( BulkUpdateLinksTagNames$outboundSchema.parse(bulkUpdateLinksTagNames), ); } /** @internal */ export type BulkUpdateLinksTestVariants$Outbound = { url: string; percentage: number; }; /** @internal */ export const BulkUpdateLinksTestVariants$outboundSchema: z.ZodType< BulkUpdateLinksTestVariants$Outbound, z.ZodTypeDef, BulkUpdateLinksTestVariants > = z.object({ url: z.string(), percentage: z.number(), }); export function bulkUpdateLinksTestVariantsToJSON( bulkUpdateLinksTestVariants: BulkUpdateLinksTestVariants, ): string { return JSON.stringify( BulkUpdateLinksTestVariants$outboundSchema.parse( bulkUpdateLinksTestVariants, ), ); } /** @internal */ export type Data$Outbound = { url?: string | undefined; tenantId?: string | null | undefined; programId?: string | null | undefined; partnerId?: string | null | undefined; trackConversion?: boolean | undefined; archived?: boolean | undefined; tagIds?: string | Array | undefined; tagNames?: string | Array | undefined; folderId?: string | null | undefined; comments?: string | null | undefined; expiresAt?: string | null | undefined; expiredUrl?: string | null | undefined; password?: string | null | undefined; proxy?: boolean | undefined; title?: string | null | undefined; description?: string | null | undefined; image?: string | null | undefined; video?: string | null | undefined; rewrite?: boolean | undefined; ios?: string | null | undefined; android?: string | null | undefined; geo?: { [k: string]: string } | null | undefined; doIndex?: boolean | undefined; utm_source?: string | null | undefined; utm_medium?: string | null | undefined; utm_campaign?: string | null | undefined; utm_term?: string | null | undefined; utm_content?: string | null | undefined; ref?: string | null | undefined; webhookIds?: Array | null | undefined; testVariants?: Array | null | undefined; testStartedAt?: string | null | undefined; testCompletedAt?: string | null | undefined; publicStats?: boolean | undefined; tagId?: string | null | undefined; }; /** @internal */ export const Data$outboundSchema: z.ZodType = z.object({ url: z.string().optional(), tenantId: z.nullable(z.string()).optional(), programId: z.nullable(z.string()).optional(), partnerId: z.nullable(z.string()).optional(), trackConversion: z.boolean().optional(), archived: z.boolean().optional(), tagIds: z.union([z.string(), z.array(z.string())]).optional(), tagNames: z.union([z.string(), z.array(z.string())]).optional(), folderId: z.nullable(z.string()).optional(), comments: z.nullable(z.string()).optional(), expiresAt: z.nullable(z.string()).optional(), expiredUrl: z.nullable(z.string()).optional(), password: z.nullable(z.string()).optional(), proxy: z.boolean().optional(), title: z.nullable(z.string()).optional(), description: z.nullable(z.string()).optional(), image: z.nullable(z.string()).optional(), video: z.nullable(z.string()).optional(), rewrite: z.boolean().optional(), ios: z.nullable(z.string()).optional(), android: z.nullable(z.string()).optional(), geo: z.nullable(z.record(z.string())).optional(), doIndex: z.boolean().optional(), utmSource: z.nullable(z.string()).optional(), utmMedium: z.nullable(z.string()).optional(), utmCampaign: z.nullable(z.string()).optional(), utmTerm: z.nullable(z.string()).optional(), utmContent: z.nullable(z.string()).optional(), ref: z.nullable(z.string()).optional(), webhookIds: z.nullable(z.array(z.string())).optional(), testVariants: z.nullable( z.array(z.lazy(() => BulkUpdateLinksTestVariants$outboundSchema)), ).optional(), testStartedAt: z.nullable(z.string()).optional(), testCompletedAt: z.nullable(z.string()).optional(), publicStats: z.boolean().optional(), tagId: z.nullable(z.string()).optional(), }).transform((v) => { return remap$(v, { utmSource: "utm_source", utmMedium: "utm_medium", utmCampaign: "utm_campaign", utmTerm: "utm_term", utmContent: "utm_content", }); }); export function dataToJSON(data: Data): string { return JSON.stringify(Data$outboundSchema.parse(data)); } /** @internal */ export type BulkUpdateLinksRequestBody$Outbound = { linkIds?: Array | undefined; externalIds?: Array | undefined; data: Data$Outbound; }; /** @internal */ export const BulkUpdateLinksRequestBody$outboundSchema: z.ZodType< BulkUpdateLinksRequestBody$Outbound, z.ZodTypeDef, BulkUpdateLinksRequestBody > = z.object({ linkIds: z.array(z.string()).optional(), externalIds: z.array(z.string()).optional(), data: z.lazy(() => Data$outboundSchema), }); export function bulkUpdateLinksRequestBodyToJSON( bulkUpdateLinksRequestBody: BulkUpdateLinksRequestBody, ): string { return JSON.stringify( BulkUpdateLinksRequestBody$outboundSchema.parse(bulkUpdateLinksRequestBody), ); }