/* * 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"; /** * If `cursor[enabled]` is set to 1, the first result set will be fetched with cursor pagination enabled. This * * @remarks * values is ignored if `cursor[before]` or `cursor[after]` are set. */ export const GetFoldersFolderIdSharingsEnabled = { Zero: 0, One: 1, } as const; /** * If `cursor[enabled]` is set to 1, the first result set will be fetched with cursor pagination enabled. This * * @remarks * values is ignored if `cursor[before]` or `cursor[after]` are set. */ export type GetFoldersFolderIdSharingsEnabled = ClosedEnum< typeof GetFoldersFolderIdSharingsEnabled >; /** * If `cursor[enabled]` is set to 1 than cursor pagination is enabled and the * * @remarks * first set of records are fetched up to the `per_page`. Cursor * pagination will also be turned on if `cursor[before]` or `cursor[after]` * are set. Records returned will have a `cursor` property set which can be used to fetch more records in the same `sort_by` ordering. * The cursor value of the last record can be used to fetch records after the current result set and * the cursor of the first record can be used to fetch records before the result set. * * NOTE: a cursor value is only valid if the `sort_by` value hasn't changed from the * last fetch. For example, you cannot fetch using `sort_by` id and than pass that * cursor value to a `sort_by` name. */ export type GetFoldersFolderIdSharingsCursor = { /** * If `cursor[enabled]` is set to 1, the first result set will be fetched with cursor pagination enabled. This * * @remarks * values is ignored if `cursor[before]` or `cursor[after]` are set. */ enabled?: GetFoldersFolderIdSharingsEnabled | undefined; /** * If `cursor[before]` is set than cursor pagination is enabled and all records * * @remarks * before the cursor up to the `per_page` are returned. This feature is useful for * fetching "new records", for example, in a "pull to refersh" feature when showing records in a descending * order. */ before?: string | undefined; /** * If `cursor[after]` is set than cursor pagination is enabled and all records * * @remarks * after the cursor up to the `per_page` are returned. */ after?: string | undefined; }; /** * Ordering. When using cursor pagination (see cursor param), * * @remarks * only `id` is supported. */ export const GetFoldersFolderIdSharingsSortBy = { Id: "id", } as const; /** * Ordering. When using cursor pagination (see cursor param), * * @remarks * only `id` is supported. */ export type GetFoldersFolderIdSharingsSortBy = ClosedEnum< typeof GetFoldersFolderIdSharingsSortBy >; /** * Ordering Sort Direction (0 = desc, 1 = asc; default is 1) */ export const GetFoldersFolderIdSharingsSortDirection = { Zero: 0, One: 1, } as const; /** * Ordering Sort Direction (0 = desc, 1 = asc; default is 1) */ export type GetFoldersFolderIdSharingsSortDirection = ClosedEnum< typeof GetFoldersFolderIdSharingsSortDirection >; export type GetFoldersFolderIdSharingsRequest = { /** * Folder Hashed ID */ folderId: string; /** * The page number to retrieve. This cannot be combined with `cursor`, * * @remarks * pagination. */ page?: number | undefined; /** * The number of medias per page. Use this for both offset pagination and cursor pagination. */ perPage?: number | undefined; /** * If `cursor[enabled]` is set to 1 than cursor pagination is enabled and the * * @remarks * first set of records are fetched up to the `per_page`. Cursor * pagination will also be turned on if `cursor[before]` or `cursor[after]` * are set. Records returned will have a `cursor` property set which can be used to fetch more records in the same `sort_by` ordering. * The cursor value of the last record can be used to fetch records after the current result set and * the cursor of the first record can be used to fetch records before the result set. * * NOTE: a cursor value is only valid if the `sort_by` value hasn't changed from the * last fetch. For example, you cannot fetch using `sort_by` id and than pass that * cursor value to a `sort_by` name. */ cursor?: GetFoldersFolderIdSharingsCursor | undefined; /** * Ordering. When using cursor pagination (see cursor param), * * @remarks * only `id` is supported. */ sortBy?: GetFoldersFolderIdSharingsSortBy | undefined; /** * Ordering Sort Direction (0 = desc, 1 = asc; default is 1) */ sortDirection?: GetFoldersFolderIdSharingsSortDirection | undefined; /** * Filter sharings by their hashed IDs */ hashedIds?: Array | undefined; }; export type GetFoldersFolderIdSharingsShare = { id: number; name: string; type: string; email: string; }; export type GetFoldersFolderIdSharingsFolder = { id: number; name: string; }; /** * A sharing is an object that links either a contact or a contact group to a folder, including information about the contacts' permissions to that folder. * * @remarks */ export type GetFoldersFolderIdSharingsResponse = { id: number; isAdmin: boolean; canShare: boolean; canDownload: boolean; canUpload: boolean; share: GetFoldersFolderIdSharingsShare; folder: GetFoldersFolderIdSharingsFolder; /** * 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 GetFoldersFolderIdSharingsEnabled$outboundSchema: z.ZodNativeEnum< typeof GetFoldersFolderIdSharingsEnabled > = z.nativeEnum(GetFoldersFolderIdSharingsEnabled); /** @internal */ export type GetFoldersFolderIdSharingsCursor$Outbound = { enabled?: number | undefined; before?: string | undefined; after?: string | undefined; }; /** @internal */ export const GetFoldersFolderIdSharingsCursor$outboundSchema: z.ZodType< GetFoldersFolderIdSharingsCursor$Outbound, z.ZodTypeDef, GetFoldersFolderIdSharingsCursor > = z.object({ enabled: GetFoldersFolderIdSharingsEnabled$outboundSchema.optional(), before: z.string().optional(), after: z.string().optional(), }); export function getFoldersFolderIdSharingsCursorToJSON( getFoldersFolderIdSharingsCursor: GetFoldersFolderIdSharingsCursor, ): string { return JSON.stringify( GetFoldersFolderIdSharingsCursor$outboundSchema.parse( getFoldersFolderIdSharingsCursor, ), ); } /** @internal */ export const GetFoldersFolderIdSharingsSortBy$outboundSchema: z.ZodNativeEnum< typeof GetFoldersFolderIdSharingsSortBy > = z.nativeEnum(GetFoldersFolderIdSharingsSortBy); /** @internal */ export const GetFoldersFolderIdSharingsSortDirection$outboundSchema: z.ZodNativeEnum = z .nativeEnum(GetFoldersFolderIdSharingsSortDirection); /** @internal */ export type GetFoldersFolderIdSharingsRequest$Outbound = { folderId: string; page?: number | undefined; per_page?: number | undefined; cursor?: GetFoldersFolderIdSharingsCursor$Outbound | undefined; sort_by: string; sort_direction: number; "hashed_ids[]"?: Array | undefined; }; /** @internal */ export const GetFoldersFolderIdSharingsRequest$outboundSchema: z.ZodType< GetFoldersFolderIdSharingsRequest$Outbound, z.ZodTypeDef, GetFoldersFolderIdSharingsRequest > = z.object({ folderId: z.string(), page: z.number().int().optional(), perPage: z.number().int().optional(), cursor: z.lazy(() => GetFoldersFolderIdSharingsCursor$outboundSchema) .optional(), sortBy: GetFoldersFolderIdSharingsSortBy$outboundSchema.default("id"), sortDirection: GetFoldersFolderIdSharingsSortDirection$outboundSchema.default( 1, ), hashedIds: z.array(z.string()).optional(), }).transform((v) => { return remap$(v, { perPage: "per_page", sortBy: "sort_by", sortDirection: "sort_direction", hashedIds: "hashed_ids[]", }); }); export function getFoldersFolderIdSharingsRequestToJSON( getFoldersFolderIdSharingsRequest: GetFoldersFolderIdSharingsRequest, ): string { return JSON.stringify( GetFoldersFolderIdSharingsRequest$outboundSchema.parse( getFoldersFolderIdSharingsRequest, ), ); } /** @internal */ export const GetFoldersFolderIdSharingsShare$inboundSchema: z.ZodType< GetFoldersFolderIdSharingsShare, z.ZodTypeDef, unknown > = z.object({ id: z.number().int(), name: z.string(), type: z.string(), email: z.string(), }); export function getFoldersFolderIdSharingsShareFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => GetFoldersFolderIdSharingsShare$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'GetFoldersFolderIdSharingsShare' from JSON`, ); } /** @internal */ export const GetFoldersFolderIdSharingsFolder$inboundSchema: z.ZodType< GetFoldersFolderIdSharingsFolder, z.ZodTypeDef, unknown > = z.object({ id: z.number().int(), name: z.string(), }); export function getFoldersFolderIdSharingsFolderFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => GetFoldersFolderIdSharingsFolder$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'GetFoldersFolderIdSharingsFolder' from JSON`, ); } /** @internal */ export const GetFoldersFolderIdSharingsResponse$inboundSchema: z.ZodType< GetFoldersFolderIdSharingsResponse, z.ZodTypeDef, unknown > = z.object({ id: z.number().int(), is_admin: z.boolean(), can_share: z.boolean(), can_download: z.boolean(), can_upload: z.boolean(), share: z.lazy(() => GetFoldersFolderIdSharingsShare$inboundSchema), folder: z.lazy(() => GetFoldersFolderIdSharingsFolder$inboundSchema), cursor: z.nullable(z.string()).optional(), }).transform((v) => { return remap$(v, { "is_admin": "isAdmin", "can_share": "canShare", "can_download": "canDownload", "can_upload": "canUpload", }); }); export function getFoldersFolderIdSharingsResponseFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => GetFoldersFolderIdSharingsResponse$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'GetFoldersFolderIdSharingsResponse' from JSON`, ); }