@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>
336 lines (305 loc) • 8.6 kB
text/typescript
/*
* 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 * as types from "../types/primitives.js";
import { SDKValidationError } from "./sdkvalidationerror.js";
/**
* Subscription period for this billing cycle.
*/
export type SubmitInvoicePeriod = {
start: Date;
end: Date;
};
export type SubmitInvoiceItems = {
/**
* Partner's resource ID.
*/
resourceId?: string | undefined;
/**
* Partner's billing plan ID.
*/
billingPlanId: string;
/**
* 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;
name: string;
details?: string | undefined;
/**
* Currency amount as a decimal string.
*/
price: string;
quantity: number;
units: string;
/**
* Currency amount as a decimal string.
*/
total: string;
};
export type SubmitInvoiceDiscounts = {
/**
* Partner's resource ID.
*/
resourceId?: string | undefined;
/**
* Partner's billing plan ID.
*/
billingPlanId: string;
/**
* 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;
name: string;
details?: string | undefined;
/**
* Currency amount as a decimal string.
*/
amount: string;
};
export const Result = {
Paid: "paid",
Notpaid: "notpaid",
Overdue: "overdue",
} as const;
export type Result = ClosedEnum<typeof Result>;
/**
* Test mode
*/
export type Test = {
validate?: boolean | undefined;
result?: Result | undefined;
};
export type SubmitInvoiceRequestBody = {
/**
* Partner-provided invoice identifier. If provided, it must be unique for this installation.
*/
externalId?: string | undefined;
/**
* Invoice date. Must be within the period's start and end.
*/
invoiceDate: Date;
/**
* Additional memo for the invoice.
*/
memo?: string | undefined;
/**
* Subscription period for this billing cycle.
*/
period: SubmitInvoicePeriod;
items: Array<SubmitInvoiceItems>;
discounts?: Array<SubmitInvoiceDiscounts> | undefined;
/**
* Set this to `true` if this is the final invoice for the installation. Can only be set when the installation is pending deletion.
*/
final?: boolean | undefined;
/**
* Test mode
*/
test?: Test | undefined;
};
export type SubmitInvoiceRequest = {
integrationConfigurationId: string;
requestBody: SubmitInvoiceRequestBody;
};
export type SubmitInvoiceResponseBody = {
invoiceId?: string | undefined;
test?: boolean | undefined;
validationErrors?: Array<string> | undefined;
};
/** @internal */
export type SubmitInvoicePeriod$Outbound = {
start: string;
end: string;
};
/** @internal */
export const SubmitInvoicePeriod$outboundSchema: z.ZodType<
SubmitInvoicePeriod$Outbound,
z.ZodTypeDef,
SubmitInvoicePeriod
> = z.object({
start: z.date().transform(v => v.toISOString()),
end: z.date().transform(v => v.toISOString()),
});
export function submitInvoicePeriodToJSON(
submitInvoicePeriod: SubmitInvoicePeriod,
): string {
return JSON.stringify(
SubmitInvoicePeriod$outboundSchema.parse(submitInvoicePeriod),
);
}
/** @internal */
export type SubmitInvoiceItems$Outbound = {
resourceId?: string | undefined;
billingPlanId: string;
start?: string | undefined;
end?: string | undefined;
name: string;
details?: string | undefined;
price: string;
quantity: number;
units: string;
total: string;
};
/** @internal */
export const SubmitInvoiceItems$outboundSchema: z.ZodType<
SubmitInvoiceItems$Outbound,
z.ZodTypeDef,
SubmitInvoiceItems
> = z.object({
resourceId: z.string().optional(),
billingPlanId: z.string(),
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 submitInvoiceItemsToJSON(
submitInvoiceItems: SubmitInvoiceItems,
): string {
return JSON.stringify(
SubmitInvoiceItems$outboundSchema.parse(submitInvoiceItems),
);
}
/** @internal */
export type SubmitInvoiceDiscounts$Outbound = {
resourceId?: string | undefined;
billingPlanId: string;
start?: string | undefined;
end?: string | undefined;
name: string;
details?: string | undefined;
amount: string;
};
/** @internal */
export const SubmitInvoiceDiscounts$outboundSchema: z.ZodType<
SubmitInvoiceDiscounts$Outbound,
z.ZodTypeDef,
SubmitInvoiceDiscounts
> = z.object({
resourceId: z.string().optional(),
billingPlanId: z.string(),
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 submitInvoiceDiscountsToJSON(
submitInvoiceDiscounts: SubmitInvoiceDiscounts,
): string {
return JSON.stringify(
SubmitInvoiceDiscounts$outboundSchema.parse(submitInvoiceDiscounts),
);
}
/** @internal */
export const Result$outboundSchema: z.ZodNativeEnum<typeof Result> = z
.nativeEnum(Result);
/** @internal */
export type Test$Outbound = {
validate?: boolean | undefined;
result?: string | undefined;
};
/** @internal */
export const Test$outboundSchema: z.ZodType<Test$Outbound, z.ZodTypeDef, Test> =
z.object({
validate: z.boolean().optional(),
result: Result$outboundSchema.optional(),
});
export function testToJSON(test: Test): string {
return JSON.stringify(Test$outboundSchema.parse(test));
}
/** @internal */
export type SubmitInvoiceRequestBody$Outbound = {
externalId?: string | undefined;
invoiceDate: string;
memo?: string | undefined;
period: SubmitInvoicePeriod$Outbound;
items: Array<SubmitInvoiceItems$Outbound>;
discounts?: Array<SubmitInvoiceDiscounts$Outbound> | undefined;
final?: boolean | undefined;
test?: Test$Outbound | undefined;
};
/** @internal */
export const SubmitInvoiceRequestBody$outboundSchema: z.ZodType<
SubmitInvoiceRequestBody$Outbound,
z.ZodTypeDef,
SubmitInvoiceRequestBody
> = z.object({
externalId: z.string().optional(),
invoiceDate: z.date().transform(v => v.toISOString()),
memo: z.string().optional(),
period: z.lazy(() => SubmitInvoicePeriod$outboundSchema),
items: z.array(z.lazy(() => SubmitInvoiceItems$outboundSchema)),
discounts: z.array(z.lazy(() => SubmitInvoiceDiscounts$outboundSchema))
.optional(),
final: z.boolean().optional(),
test: z.lazy(() => Test$outboundSchema).optional(),
});
export function submitInvoiceRequestBodyToJSON(
submitInvoiceRequestBody: SubmitInvoiceRequestBody,
): string {
return JSON.stringify(
SubmitInvoiceRequestBody$outboundSchema.parse(submitInvoiceRequestBody),
);
}
/** @internal */
export type SubmitInvoiceRequest$Outbound = {
integrationConfigurationId: string;
RequestBody: SubmitInvoiceRequestBody$Outbound;
};
/** @internal */
export const SubmitInvoiceRequest$outboundSchema: z.ZodType<
SubmitInvoiceRequest$Outbound,
z.ZodTypeDef,
SubmitInvoiceRequest
> = z.object({
integrationConfigurationId: z.string(),
requestBody: z.lazy(() => SubmitInvoiceRequestBody$outboundSchema),
}).transform((v) => {
return remap$(v, {
requestBody: "RequestBody",
});
});
export function submitInvoiceRequestToJSON(
submitInvoiceRequest: SubmitInvoiceRequest,
): string {
return JSON.stringify(
SubmitInvoiceRequest$outboundSchema.parse(submitInvoiceRequest),
);
}
/** @internal */
export const SubmitInvoiceResponseBody$inboundSchema: z.ZodType<
SubmitInvoiceResponseBody,
z.ZodTypeDef,
unknown
> = z.object({
invoiceId: types.optional(types.string()),
test: types.optional(types.boolean()),
validationErrors: types.optional(z.array(types.string())),
});
export function submitInvoiceResponseBodyFromJSON(
jsonString: string,
): SafeParseResult<SubmitInvoiceResponseBody, SDKValidationError> {
return safeParse(
jsonString,
(x) => SubmitInvoiceResponseBody$inboundSchema.parse(JSON.parse(x)),
`Failed to parse 'SubmitInvoiceResponseBody' from JSON`,
);
}