import {z} from 'zod' export type GetApiV1CrmMetricsDepreciationArgs = {car__isnull?: boolean | undefined, category?: number | undefined, category__in?: Array | undefined, disable__isnull?: boolean | undefined, disable__method?: (0 | 1 | 2) | undefined, disabled?: boolean | undefined, exclude_ids?: Array | undefined, filter_key?: string | undefined, free?: boolean | undefined, group?: number | undefined, group__in?: Array | undefined, has_sublease?: boolean | undefined, id?: number | undefined, id__in?: Array | undefined, ordering?: string | undefined, page?: number | undefined, pageSize?: number | undefined, rental_point?: number | undefined, rental_point__in?: Array | undefined, request?: number | undefined, saleable?: boolean | undefined, search?: string | undefined, state?: number | undefined, state__in?: Array | undefined, status?: number | undefined, sublease_user?: number | undefined, sublease_user__in?: Array | undefined, sublease_user__isnull?: boolean | undefined, type?: number | undefined, unique_id?: string | undefined, unique_id__in?: Array | undefined}; export type GetApiV1CrmMetricsDepreciationOptions = {baseUrl?: string | undefined, bearerAuth?: string | undefined, fetch?: typeof fetch | undefined}; export const disabledEnum = z.union([z.literal(0), z.literal(1), z.literal(2)]); export const nullEnum = z.unknown(); export const type135Enum = z.enum(["CAR", "SCOOTER", "MOTORCYCLE"]); export const inventoryCar = z.object({id: z.number().int(), type: type135Enum.optional(), brand: z.string().max(255).nullable().optional(), model: z.string().max(255).nullable().optional(), number: z.string().max(255).nullable().optional(), tech_passport: z.string().max(255).nullable().optional(), serial: z.string().max(255).nullable().optional(), vin: z.string().max(18).nullable().optional(), extra: z.unknown()}); export const metricsInventoryDepreciation = z.object({id: z.number().int(), group: z.number().int().nullable().optional(), name: z.string().max(255), unique_id: z.string().max(255).nullable().optional(), category: z.number().int().nullable().optional(), image: z.string().nullable().optional(), extra: z.unknown(), sublease_user: z.number().int().nullable().optional(), state: z.number().int().nullable().optional(), disabled: z.union([disabledEnum, nullEnum]).nullable().optional(), rental_point: z.number().int().nullable().optional(), car: inventoryCar, span: z.number().int(), usage: z.number().int(), depreciation: z.string(), coverage: z.string(), residual: z.string(), buy_price: z.string().nullable().optional(), buy_date: z.string().nullable().optional()}); export const paginatedMetricsInventoryDepreciationList = z.object({count: z.number().int(), next: z.string().nullable().optional(), previous: z.string().nullable().optional(), results: z.array(metricsInventoryDepreciation)}); 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 }; /** * GET /v1/crm/metrics/depreciation/ */ export const getApiV1CrmMetricsDepreciation = async (args: GetApiV1CrmMetricsDepreciationArgs, options?: GetApiV1CrmMetricsDepreciationOptions) => { const {baseUrl = "https://api.yume.cloud", fetch: fetchFn = fetch, bearerAuth} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.car__isnull != null) query.append("car__isnull", String(args.car__isnull)) if (args.category != null) query.append("category", String(args.category)) if (args.category__in != null) query.append("category__in", args.category__in.join(',')) if (args.disable__isnull != null) query.append("disable__isnull", String(args.disable__isnull)) if (args.disable__method != null) query.append("disable__method", String(args.disable__method)) if (args.disabled != null) query.append("disabled", String(args.disabled)) if (args.exclude_ids != null) query.append("exclude_ids", args.exclude_ids.join(',')) if (args.filter_key != null) query.append("filter_key", String(args.filter_key)) if (args.free != null) query.append("free", String(args.free)) if (args.group != null) query.append("group", String(args.group)) if (args.group__in != null) query.append("group__in", args.group__in.join(',')) if (args.has_sublease != null) query.append("has_sublease", String(args.has_sublease)) if (args.id != null) query.append("id", String(args.id)) if (args.id__in != null) query.append("id__in", args.id__in.join(',')) if (args.ordering != null) query.append("ordering", String(args.ordering)) if (args.page != null) query.append("page", String(args.page)) if (args.pageSize != null) query.append("pageSize", String(args.pageSize)) if (args.rental_point != null) query.append("rental_point", String(args.rental_point)) if (args.rental_point__in != null) query.append("rental_point__in", args.rental_point__in.join(',')) if (args.request != null) query.append("request", String(args.request)) if (args.saleable != null) query.append("saleable", String(args.saleable)) if (args.search != null) query.append("search", String(args.search)) if (args.state != null) query.append("state", String(args.state)) if (args.state__in != null) query.append("state__in", args.state__in.join(',')) if (args.status != null) query.append("status", String(args.status)) if (args.sublease_user != null) query.append("sublease_user", String(args.sublease_user)) if (args.sublease_user__in != null) query.append("sublease_user__in", args.sublease_user__in.join(',')) if (args.sublease_user__isnull != null) query.append("sublease_user__isnull", String(args.sublease_user__isnull)) if (args.type != null) query.append("type", String(args.type)) if (args.unique_id != null) query.append("unique_id", String(args.unique_id)) if (args.unique_id__in != null) query.append("unique_id__in", args.unique_id__in.join(',')) if (bearerAuth !== undefined) headers.set('authorization', `Bearer ${bearerAuth}`) const url = `${baseUrl.replace(/\/+$/, '')}/v1/crm/metrics/depreciation/${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(paginatedMetricsInventoryDepreciationList, await res.json()) };