UNPKG

@vercel/sdk

Version:

<p align="center"> <a href="https://vercel.com"> <img src="https://assets.vercel.com/image/upload/v1588805858/repositories/vercel/logo.png" height="96"> <h3 align="center">Vercel</h3> </a> <p align="center">Develop. Preview. Ship.</p> </p>

488 lines (448 loc) 12.2 kB
/* * 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 { ClosedEnum } from "../types/enums.js"; import { smartUnion } from "../types/smartUnion.js"; /** * Period for the billing cycle. The period end date cannot be older than 24 hours earlier than our current server's time. */ export type Period = { start: Date; end: Date; }; export type BillingItems = { /** * Partner's billing plan ID. */ billingPlanId: string; /** * Partner's resource ID. */ resourceId?: string | undefined; /** * Start and end are only needed if different from the period's start/end. */ start?: Date | undefined; /** * Start and end are only needed if different from the period's start/end. */ end?: Date | undefined; /** * Line item name. */ name: string; /** * Line item details. */ details?: string | undefined; /** * Price per unit. */ price: string; /** * Quantity of units. */ quantity: number; /** * Units of the quantity. */ units: string; /** * Total amount. */ total: string; }; export type Discounts = { /** * Partner's billing plan ID. */ billingPlanId: string; /** * Partner's resource ID. */ resourceId?: string | undefined; /** * Start and end are only needed if different from the period's start/end. */ start?: Date | undefined; /** * Start and end are only needed if different from the period's start/end. */ end?: Date | undefined; /** * Discount name. */ name: string; /** * Discount details. */ details?: string | undefined; /** * Discount amount. */ amount: string; }; export type Billing2 = { items: Array<BillingItems>; discounts?: Array<Discounts> | undefined; }; export type Billing1 = { /** * Partner's billing plan ID. */ billingPlanId: string; /** * Partner's resource ID. */ resourceId?: string | undefined; /** * Start and end are only needed if different from the period's start/end. */ start?: Date | undefined; /** * Start and end are only needed if different from the period's start/end. */ end?: Date | undefined; /** * Line item name. */ name: string; /** * Line item details. */ details?: string | undefined; /** * Price per unit. */ price: string; /** * Quantity of units. */ quantity: number; /** * Units of the quantity. */ units: string; /** * Total amount. */ total: string; }; /** * Billing data (interim invoicing data). */ export type SubmitBillingDataBilling = Billing2 | Array<Billing1>; /** * @remarks * Type of the metric. * - total: measured total value, such as Database size * - interval: usage during the period, such as i/o or number of queries. * - rate: rate of usage, such as queries per second. */ export const SubmitBillingDataType = { Total: "total", Interval: "interval", Rate: "rate", } as const; /** * @remarks * Type of the metric. * - total: measured total value, such as Database size * - interval: usage during the period, such as i/o or number of queries. * - rate: rate of usage, such as queries per second. */ export type SubmitBillingDataType = ClosedEnum<typeof SubmitBillingDataType>; export type Usage = { /** * Partner's resource ID. */ resourceId?: string | undefined; /** * Metric name. */ name: string; /** * @remarks * Type of the metric. * - total: measured total value, such as Database size * - interval: usage during the period, such as i/o or number of queries. * - rate: rate of usage, such as queries per second. */ type: SubmitBillingDataType; /** * Metric units. Example: "GB" */ units: string; /** * Metric value for the day. Could be a final or an interim value for the day. */ dayValue: number; /** * Metric value for the billing period. Could be a final or an interim value for the period. */ periodValue: number; /** * The limit value of the metric for a billing period, if a limit is defined by the plan. */ planValue?: number | undefined; }; export type SubmitBillingDataRequestBody = { /** * Server time of your integration, used to determine the most recent data for race conditions & updates. Only the latest usage data for a given day, week, and month will be kept. */ timestamp: Date; /** * End of Day, the UTC datetime for when the end of the billing/usage day is in UTC time. This tells us which day the usage data is for, and also allows for your "end of day" to be different from UTC 00:00:00. eod must be within the period dates, and cannot be older than 24h earlier from our server's current time. */ eod: Date; /** * Period for the billing cycle. The period end date cannot be older than 24 hours earlier than our current server's time. */ period: Period; /** * Billing data (interim invoicing data). */ billing: Billing2 | Array<Billing1>; usage: Array<Usage>; }; export type SubmitBillingDataRequest = { integrationConfigurationId: string; requestBody: SubmitBillingDataRequestBody; }; /** @internal */ export type Period$Outbound = { start: string; end: string; }; /** @internal */ export const Period$outboundSchema: z.ZodType< Period$Outbound, z.ZodTypeDef, Period > = z.object({ start: z.date().transform(v => v.toISOString()), end: z.date().transform(v => v.toISOString()), }); export function periodToJSON(period: Period): string { return JSON.stringify(Period$outboundSchema.parse(period)); } /** @internal */ export type BillingItems$Outbound = { billingPlanId: string; resourceId?: string | undefined; start?: string | undefined; end?: string | undefined; name: string; details?: string | undefined; price: string; quantity: number; units: string; total: string; }; /** @internal */ export const BillingItems$outboundSchema: z.ZodType< BillingItems$Outbound, z.ZodTypeDef, BillingItems > = z.object({ billingPlanId: z.string(), resourceId: z.string().optional(), start: z.date().transform(v => v.toISOString()).optional(), end: z.date().transform(v => v.toISOString()).optional(), name: z.string(), details: z.string().optional(), price: z.string(), quantity: z.number(), units: z.string(), total: z.string(), }); export function billingItemsToJSON(billingItems: BillingItems): string { return JSON.stringify(BillingItems$outboundSchema.parse(billingItems)); } /** @internal */ export type Discounts$Outbound = { billingPlanId: string; resourceId?: string | undefined; start?: string | undefined; end?: string | undefined; name: string; details?: string | undefined; amount: string; }; /** @internal */ export const Discounts$outboundSchema: z.ZodType< Discounts$Outbound, z.ZodTypeDef, Discounts > = z.object({ billingPlanId: z.string(), resourceId: z.string().optional(), start: z.date().transform(v => v.toISOString()).optional(), end: z.date().transform(v => v.toISOString()).optional(), name: z.string(), details: z.string().optional(), amount: z.string(), }); export function discountsToJSON(discounts: Discounts): string { return JSON.stringify(Discounts$outboundSchema.parse(discounts)); } /** @internal */ export type Billing2$Outbound = { items: Array<BillingItems$Outbound>; discounts?: Array<Discounts$Outbound> | undefined; }; /** @internal */ export const Billing2$outboundSchema: z.ZodType< Billing2$Outbound, z.ZodTypeDef, Billing2 > = z.object({ items: z.array(z.lazy(() => BillingItems$outboundSchema)), discounts: z.array(z.lazy(() => Discounts$outboundSchema)).optional(), }); export function billing2ToJSON(billing2: Billing2): string { return JSON.stringify(Billing2$outboundSchema.parse(billing2)); } /** @internal */ export type Billing1$Outbound = { billingPlanId: string; resourceId?: string | undefined; start?: string | undefined; end?: string | undefined; name: string; details?: string | undefined; price: string; quantity: number; units: string; total: string; }; /** @internal */ export const Billing1$outboundSchema: z.ZodType< Billing1$Outbound, z.ZodTypeDef, Billing1 > = z.object({ billingPlanId: z.string(), resourceId: z.string().optional(), start: z.date().transform(v => v.toISOString()).optional(), end: z.date().transform(v => v.toISOString()).optional(), name: z.string(), details: z.string().optional(), price: z.string(), quantity: z.number(), units: z.string(), total: z.string(), }); export function billing1ToJSON(billing1: Billing1): string { return JSON.stringify(Billing1$outboundSchema.parse(billing1)); } /** @internal */ export type SubmitBillingDataBilling$Outbound = | Billing2$Outbound | Array<Billing1$Outbound>; /** @internal */ export const SubmitBillingDataBilling$outboundSchema: z.ZodType< SubmitBillingDataBilling$Outbound, z.ZodTypeDef, SubmitBillingDataBilling > = smartUnion([ z.lazy(() => Billing2$outboundSchema), z.array(z.lazy(() => Billing1$outboundSchema)), ]); export function submitBillingDataBillingToJSON( submitBillingDataBilling: SubmitBillingDataBilling, ): string { return JSON.stringify( SubmitBillingDataBilling$outboundSchema.parse(submitBillingDataBilling), ); } /** @internal */ export const SubmitBillingDataType$outboundSchema: z.ZodNativeEnum< typeof SubmitBillingDataType > = z.nativeEnum(SubmitBillingDataType); /** @internal */ export type Usage$Outbound = { resourceId?: string | undefined; name: string; type: string; units: string; dayValue: number; periodValue: number; planValue?: number | undefined; }; /** @internal */ export const Usage$outboundSchema: z.ZodType< Usage$Outbound, z.ZodTypeDef, Usage > = z.object({ resourceId: z.string().optional(), name: z.string(), type: SubmitBillingDataType$outboundSchema, units: z.string(), dayValue: z.number(), periodValue: z.number(), planValue: z.number().optional(), }); export function usageToJSON(usage: Usage): string { return JSON.stringify(Usage$outboundSchema.parse(usage)); } /** @internal */ export type SubmitBillingDataRequestBody$Outbound = { timestamp: string; eod: string; period: Period$Outbound; billing: Billing2$Outbound | Array<Billing1$Outbound>; usage: Array<Usage$Outbound>; }; /** @internal */ export const SubmitBillingDataRequestBody$outboundSchema: z.ZodType< SubmitBillingDataRequestBody$Outbound, z.ZodTypeDef, SubmitBillingDataRequestBody > = z.object({ timestamp: z.date().transform(v => v.toISOString()), eod: z.date().transform(v => v.toISOString()), period: z.lazy(() => Period$outboundSchema), billing: smartUnion([ z.lazy(() => Billing2$outboundSchema), z.array(z.lazy(() => Billing1$outboundSchema)), ]), usage: z.array(z.lazy(() => Usage$outboundSchema)), }); export function submitBillingDataRequestBodyToJSON( submitBillingDataRequestBody: SubmitBillingDataRequestBody, ): string { return JSON.stringify( SubmitBillingDataRequestBody$outboundSchema.parse( submitBillingDataRequestBody, ), ); } /** @internal */ export type SubmitBillingDataRequest$Outbound = { integrationConfigurationId: string; RequestBody: SubmitBillingDataRequestBody$Outbound; }; /** @internal */ export const SubmitBillingDataRequest$outboundSchema: z.ZodType< SubmitBillingDataRequest$Outbound, z.ZodTypeDef, SubmitBillingDataRequest > = z.object({ integrationConfigurationId: z.string(), requestBody: z.lazy(() => SubmitBillingDataRequestBody$outboundSchema), }).transform((v) => { return remap$(v, { requestBody: "RequestBody", }); }); export function submitBillingDataRequestToJSON( submitBillingDataRequest: SubmitBillingDataRequest, ): string { return JSON.stringify( SubmitBillingDataRequest$outboundSchema.parse(submitBillingDataRequest), ); }