UNPKG

sdk-node-apis-efi

Version:

Module for integration with Efi Bank API

145 lines (144 loc) 3.96 kB
import * as z from "zod"; const UfSchema = z.enum([ 'AC', 'AL', 'AP', 'AM', 'BA', 'CE', 'DF', 'ES', 'GO', 'MA', 'MT', 'MS', 'MG', 'PA', 'PB', 'PR', 'PE', 'PI', 'RJ', 'RN', 'RS', 'RO', 'RR', 'SC', 'SP', 'SE', 'TO', ]); const Rfc3339DateTimeSchema = z.iso.datetime({ offset: true }); export const CreateAccountBodySchema = z .object({ clienteFinal: z .object({ cpf: z.string(), nomeCompleto: z.string(), dataNascimento: z.string(), nomeMae: z.string().optional(), celular: z.string(), email: z.email(), cnpj: z.string().optional(), razaoSocial: z.string().optional(), endereco: z .object({ cep: z.string(), estado: UfSchema, cidade: z.string(), bairro: z.string(), logradouro: z.string(), numero: z.string(), complemento: z.string().optional(), }) .strict(), }) .strict(), meioDeNotificacao: z.array(z.enum(['sms', 'whatsapp'])).min(1), escoposIntegrados: z.array(z.string()).min(1), cupom: z.string().min(1).max(20).optional(), }) .strict(); export const AccountIdParamsSchema = z.object({ idContaSimplificada: z.string() }).strict(); export const GetAccountCredentialsParamsSchema = AccountIdParamsSchema; export const CreateAccountCertificateParamsSchema = AccountIdParamsSchema; const CreateAccountWebhookBodySchema = z .object({ webhookUrl: z.url(), url: z.never().optional(), chave: z.never().optional(), }) .strict(); const UpdateAccountWebhookBodySchema = z .object({ url: z.url(), chave: z.string(), webhookUrl: z.never().optional(), }) .strict(); export const AccountWebhookBodySchema = z.union([ CreateAccountWebhookBodySchema, UpdateAccountWebhookBodySchema, ]); export const AccountWebhookParamsSchema = z.object({ identificadorWebhook: z.string() }).strict(); export const AccountDetailWebhookParamsSchema = AccountWebhookParamsSchema; export const AccountListWebhookParamsSchema = z .object({ inicio: Rfc3339DateTimeSchema, fim: Rfc3339DateTimeSchema, 'paginacao.paginaAtual': z.number().int().min(0).optional(), 'paginacao.itensPorPagina': z.number().int().min(1).max(1000).optional(), }) .strict(); export const AccountDeleteWebhookParamsSchema = AccountWebhookParamsSchema; export const CreateAccountResponseSchema = z .object({ contaSimplificada: z.object({ identificador: z.string() }).loose(), }) .loose(); export const GetAccountCredentialsResponseSchema = z .object({ clientId: z.string(), clientSecret: z.string(), conta: z .object({ numero: z.string(), digito: z.string(), payeeCode: z.string(), }) .loose(), escopos: z.array(z.string()), ativo: z.boolean(), }) .loose(); export const CreateAccountCertificateResponseSchema = z.string(); export const AccountConfigWebhookResponseSchema = z .object({ identificadorWebhook: z.string() }) .loose(); export const AccountDetailWebhookResponseSchema = z .object({ webhookUrl: z.url(), identificadorWebhook: z.string(), criacao: Rfc3339DateTimeSchema, }) .loose(); export const AccountListWebhookResponseSchema = z .object({ parametros: z .object({ inicio: Rfc3339DateTimeSchema, fim: Rfc3339DateTimeSchema, paginacao: z .object({ paginaAtual: z.number().int(), itensPorPagina: z.number().int(), quantidadeDePaginas: z.number().int(), quantidadeTotalDeItens: z.number().int(), }) .loose(), }) .loose(), webhooks: z.array(AccountDetailWebhookResponseSchema), }) .loose(); export const AccountDeleteWebhookResponseSchema = z.void();