/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. * @generated-id: 024663aeb142 */ import * as z from "zod/v3"; import { ClosedEnum } from "../../types/enums.js"; import { FacetFilter, FacetFilter$Outbound, FacetFilter$outboundSchema, } from "./facetfilter.js"; import { StructuredText, StructuredText$Outbound, StructuredText$outboundSchema, } from "./structuredtext.js"; import { Thumbnail, Thumbnail$Outbound, Thumbnail$outboundSchema, } from "./thumbnail.js"; /** * This determines whether this is a Social Feed post or a regular announcement. */ export const CreateAnnouncementRequestChannel = { Main: "MAIN", SocialFeed: "SOCIAL_FEED", } as const; /** * This determines whether this is a Social Feed post or a regular announcement. */ export type CreateAnnouncementRequestChannel = ClosedEnum< typeof CreateAnnouncementRequestChannel >; /** * This determines whether this is an external-link post or a regular announcement post. TEXT - Regular announcement that can contain rich text. LINK - Announcement that is linked to an external site. */ export const CreateAnnouncementRequestPostType = { Text: "TEXT", Link: "LINK", } as const; /** * This determines whether this is an external-link post or a regular announcement post. TEXT - Regular announcement that can contain rich text. LINK - Announcement that is linked to an external site. */ export type CreateAnnouncementRequestPostType = ClosedEnum< typeof CreateAnnouncementRequestPostType >; export type CreateAnnouncementRequest = { /** * The date and time at which the announcement becomes active. */ startTime: Date; /** * The date and time at which the announcement expires. */ endTime: Date; /** * The headline of the announcement. */ title: string; body?: StructuredText | undefined; /** * An emoji used to indicate the nature of the announcement. */ emoji?: string | undefined; thumbnail?: Thumbnail | undefined; banner?: Thumbnail | undefined; /** * Filters which restrict who should see the announcement. Values are taken from the corresponding filters in people search. */ audienceFilters?: Array | undefined; /** * The Glean Document ID of the source document this Announcement was created from (e.g. Slack thread). */ sourceDocumentId?: string | undefined; /** * Whether or not to hide an author attribution. */ hideAttribution?: boolean | undefined; /** * This determines whether this is a Social Feed post or a regular announcement. */ channel?: CreateAnnouncementRequestChannel | undefined; /** * This determines whether this is an external-link post or a regular announcement post. TEXT - Regular announcement that can contain rich text. LINK - Announcement that is linked to an external site. */ postType?: CreateAnnouncementRequestPostType | undefined; /** * Used by the Social Feed to pin posts to the front of the feed. */ isPrioritized?: boolean | undefined; /** * URL for viewing the announcement. It will be set to document URL for announcements from other datasources e.g. simpplr. Can only be written when channel="SOCIAL_FEED". */ viewUrl?: string | undefined; }; /** @internal */ export const CreateAnnouncementRequestChannel$outboundSchema: z.ZodNativeEnum< typeof CreateAnnouncementRequestChannel > = z.nativeEnum(CreateAnnouncementRequestChannel); /** @internal */ export const CreateAnnouncementRequestPostType$outboundSchema: z.ZodNativeEnum< typeof CreateAnnouncementRequestPostType > = z.nativeEnum(CreateAnnouncementRequestPostType); /** @internal */ export type CreateAnnouncementRequest$Outbound = { startTime: string; endTime: string; title: string; body?: StructuredText$Outbound | undefined; emoji?: string | undefined; thumbnail?: Thumbnail$Outbound | undefined; banner?: Thumbnail$Outbound | undefined; audienceFilters?: Array | undefined; sourceDocumentId?: string | undefined; hideAttribution?: boolean | undefined; channel?: string | undefined; postType?: string | undefined; isPrioritized?: boolean | undefined; viewUrl?: string | undefined; }; /** @internal */ export const CreateAnnouncementRequest$outboundSchema: z.ZodType< CreateAnnouncementRequest$Outbound, z.ZodTypeDef, CreateAnnouncementRequest > = z.object({ startTime: z.date().transform(v => v.toISOString()), endTime: z.date().transform(v => v.toISOString()), title: z.string(), body: StructuredText$outboundSchema.optional(), emoji: z.string().optional(), thumbnail: Thumbnail$outboundSchema.optional(), banner: Thumbnail$outboundSchema.optional(), audienceFilters: z.array(FacetFilter$outboundSchema).optional(), sourceDocumentId: z.string().optional(), hideAttribution: z.boolean().optional(), channel: CreateAnnouncementRequestChannel$outboundSchema.optional(), postType: CreateAnnouncementRequestPostType$outboundSchema.optional(), isPrioritized: z.boolean().optional(), viewUrl: z.string().optional(), }); export function createAnnouncementRequestToJSON( createAnnouncementRequest: CreateAnnouncementRequest, ): string { return JSON.stringify( CreateAnnouncementRequest$outboundSchema.parse(createAnnouncementRequest), ); }