handlers/press-reader-entitlements/src/schemas.ts (17 lines of code) (raw):
import { z } from 'zod';
const ok = z.literal('ok');
const error = z.literal('error');
const successfulGetUserDetailsResponse = z.object({
status: ok,
id: z.string(),
primaryEmailAddress: z.string(),
});
const failedGetUserDetailsResponse = z.object({
status: error,
errors: z.array(z.object({ message: z.string(), description: z.string() })),
});
export const getUserDetailsSchema = z.discriminatedUnion('status', [
successfulGetUserDetailsResponse,
failedGetUserDetailsResponse,
]);
export type GetUserDetailsResponse = z.infer<typeof getUserDetailsSchema>;