/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import * as z from "zod/v3"; import { remap as remap$ } from "../../lib/primitives.js"; import { safeParse } from "../../lib/schemas.js"; import { ClosedEnum } from "../../types/enums.js"; import { Result as SafeParseResult } from "../../types/fp.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; /** * A flag indicating whether or not the folder is enabled for public access. Set to “1” to enable and “0” to disable. */ export const PostFoldersPublicEnum = { Zero: "0", One: "1", } as const; /** * A flag indicating whether or not the folder is enabled for public access. Set to “1” to enable and “0” to disable. */ export type PostFoldersPublicEnum = ClosedEnum; export type PostFoldersPublicUnion = PostFoldersPublicEnum | boolean; export type PostFoldersRequest = { /** * The name of the folder you want to create. */ name?: string | undefined; /** * The email address of the person you want to set as the owner of this folder. Defaults to the Wistia Account Owner. */ adminEmail?: string | undefined; public?: PostFoldersPublicEnum | boolean | undefined; }; /** * A string representing what type of media this is. */ export const PostFoldersType = { Video: "Video", Audio: "Audio", Image: "Image", PdfDocument: "PdfDocument", MicrosoftOfficeDocument: "MicrosoftOfficeDocument", Swf: "Swf", UnknownType: "UnknownType", } as const; /** * A string representing what type of media this is. */ export type PostFoldersType = ClosedEnum; /** * Post upload processing status. - `queued`: the file is waiting in the queue to be processed. - `processing`: the file is actively being processed. - `ready`: the file has been fully processed and is ready for embedding and viewing. - `failed`: the file was unable to be processed (usually a format or size error). * * @remarks */ export const PostFoldersStatus = { Queued: "queued", Processing: "processing", Ready: "ready", Failed: "failed", } as const; /** * Post upload processing status. - `queued`: the file is waiting in the queue to be processed. - `processing`: the file is actively being processed. - `ready`: the file has been fully processed and is ready for embedding and viewing. - `failed`: the file was unable to be processed (usually a format or size error). * * @remarks */ export type PostFoldersStatus = ClosedEnum; export type PostFoldersThumbnail = { url?: string | undefined; width?: number | undefined; height?: number | undefined; }; /** * A link to where you can fetch the medias for this folder. */ export type PostFoldersMedias = { /** * A unique numeric identifier for the media within the system. */ id?: number | undefined; /** * The display name of the media. */ name?: string | undefined; /** * A string representing what type of media this is. */ type?: PostFoldersType | undefined; /** * Whether or not the media is archived, either true or false. */ archived?: boolean | undefined; /** * The date when the media was originally uploaded. */ created?: Date | undefined; /** * The date when the media was last changed. */ updated?: Date | undefined; /** * Specifies the length (in seconds) for audio and video files. Specifies number of pages in the document. Omitted for other types of media. */ duration?: number | null | undefined; /** * DEPRECATED: If you want to programmatically embed videos, follow the construct an embed code guide. * * @remarks * * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible. */ embedCode?: string | undefined; /** * A unique alphanumeric identifier for this media. */ hashedId?: string | undefined; /** * A description for the media which usually appears near the top of the sidebar on the media's page. */ description?: string | undefined; /** * A floating point value between 0 and 1 that indicates the progress of the processing for this file. */ progress?: number | undefined; /** * Post upload processing status. - `queued`: the file is waiting in the queue to be processed. - `processing`: the file is actively being processed. - `ready`: the file has been fully processed and is ready for embedding and viewing. - `failed`: the file was unable to be processed (usually a format or size error). * * @remarks */ status?: PostFoldersStatus | undefined; /** * The title of the section in which the media appears. This attribute is omitted if the media is not in a section (default). */ section?: string | null | undefined; thumbnail?: PostFoldersThumbnail | undefined; }; /** * A folder (previously called a project) is a container in which to organize media into. It can be * * @remarks * used to set permissions that apply to all the media in the folder as well as * organizing media into subfolders (previously called media groups). */ export type PostFoldersResponse = { /** * A unique numeric identifier for the folder within the system. */ id: number; /** * The folder’s display name. */ name: string; /** * The folder’s description. */ description?: string | null | undefined; /** * The number of different medias that have been uploaded to the folder. */ mediaCount: number; /** * A link to where you can fetch the medias for this folder. */ medias: PostFoldersMedias; /** * The date that the folder was originally created. */ created: Date; /** * The date that the folder was last updated. */ updated: Date; /** * A private hashed id, uniquely identifying the folder within the system. */ hashedId: string; /** * A boolean indicating whether the folder is available for public (anonymous) viewing. */ public: boolean; /** * If the folder is public, this field contains a string representing the ID used for referencing the folder in public URLs. */ publicId: string | null; anonymousCanUpload?: boolean | undefined; anonymousCanDownload?: boolean | undefined; /** * A cursor for stable pagination based on current `sort_by` order. You can pass this to `cursor[before]` or `cursor[after]` as a parameter to fetch the records before or after this record in the same sort order. This is only populated if records were fetched with `cursor[enabled]`, or `cursor[before]` or `cursor[after]`. */ cursor?: string | null | undefined; }; /** @internal */ export const PostFoldersPublicEnum$outboundSchema: z.ZodNativeEnum< typeof PostFoldersPublicEnum > = z.nativeEnum(PostFoldersPublicEnum); /** @internal */ export type PostFoldersPublicUnion$Outbound = string | boolean; /** @internal */ export const PostFoldersPublicUnion$outboundSchema: z.ZodType< PostFoldersPublicUnion$Outbound, z.ZodTypeDef, PostFoldersPublicUnion > = z.union([PostFoldersPublicEnum$outboundSchema, z.boolean()]); export function postFoldersPublicUnionToJSON( postFoldersPublicUnion: PostFoldersPublicUnion, ): string { return JSON.stringify( PostFoldersPublicUnion$outboundSchema.parse(postFoldersPublicUnion), ); } /** @internal */ export type PostFoldersRequest$Outbound = { name?: string | undefined; adminEmail?: string | undefined; public?: string | boolean | undefined; }; /** @internal */ export const PostFoldersRequest$outboundSchema: z.ZodType< PostFoldersRequest$Outbound, z.ZodTypeDef, PostFoldersRequest > = z.object({ name: z.string().optional(), adminEmail: z.string().optional(), public: z.union([PostFoldersPublicEnum$outboundSchema, z.boolean()]) .optional(), }); export function postFoldersRequestToJSON( postFoldersRequest: PostFoldersRequest, ): string { return JSON.stringify( PostFoldersRequest$outboundSchema.parse(postFoldersRequest), ); } /** @internal */ export const PostFoldersType$inboundSchema: z.ZodNativeEnum< typeof PostFoldersType > = z.nativeEnum(PostFoldersType); /** @internal */ export const PostFoldersStatus$inboundSchema: z.ZodNativeEnum< typeof PostFoldersStatus > = z.nativeEnum(PostFoldersStatus); /** @internal */ export const PostFoldersThumbnail$inboundSchema: z.ZodType< PostFoldersThumbnail, z.ZodTypeDef, unknown > = z.object({ url: z.string().optional(), width: z.number().int().optional(), height: z.number().int().optional(), }); export function postFoldersThumbnailFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => PostFoldersThumbnail$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'PostFoldersThumbnail' from JSON`, ); } /** @internal */ export const PostFoldersMedias$inboundSchema: z.ZodType< PostFoldersMedias, z.ZodTypeDef, unknown > = z.object({ id: z.number().int().optional(), name: z.string().optional(), type: PostFoldersType$inboundSchema.optional(), archived: z.boolean().optional(), created: z.string().datetime({ offset: true }).transform(v => new Date(v)) .optional(), updated: z.string().datetime({ offset: true }).transform(v => new Date(v)) .optional(), duration: z.nullable(z.number()).optional(), embedCode: z.string().optional(), hashed_id: z.string().optional(), description: z.string().optional(), progress: z.number().optional(), status: PostFoldersStatus$inboundSchema.optional(), section: z.nullable(z.string()).optional(), thumbnail: z.lazy(() => PostFoldersThumbnail$inboundSchema).optional(), }).transform((v) => { return remap$(v, { "hashed_id": "hashedId", }); }); export function postFoldersMediasFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => PostFoldersMedias$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'PostFoldersMedias' from JSON`, ); } /** @internal */ export const PostFoldersResponse$inboundSchema: z.ZodType< PostFoldersResponse, z.ZodTypeDef, unknown > = z.object({ id: z.number().int(), name: z.string(), description: z.nullable(z.string()).optional(), media_count: z.number().int(), medias: z.lazy(() => PostFoldersMedias$inboundSchema), created: z.string().datetime({ offset: true }).transform(v => new Date(v)), updated: z.string().datetime({ offset: true }).transform(v => new Date(v)), hashed_id: z.string(), public: z.boolean(), public_id: z.nullable(z.string()), anonymous_can_upload: z.boolean().optional(), anonymous_can_download: z.boolean().optional(), cursor: z.nullable(z.string()).optional(), }).transform((v) => { return remap$(v, { "media_count": "mediaCount", "hashed_id": "hashedId", "public_id": "publicId", "anonymous_can_upload": "anonymousCanUpload", "anonymous_can_download": "anonymousCanDownload", }); }); export function postFoldersResponseFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => PostFoldersResponse$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'PostFoldersResponse' from JSON`, ); }