sdk-node-apis-efi
Version:
Module for integration with Efi Bank API
576 lines (504 loc) • 14.2 kB
text/typescript
import { z } from 'zod/v4'
export const StatusPixReceivedSchema = z.enum(['ATIVA', 'CONCLUIDA', 'REMOVIDA_PELO_USUARIO_RECEBEDOR', 'REMOVIDA_PELO_PSP'])
export const StatusPixDevolutionSchema = z.enum(['EM_PROCESSAMENTO', 'DEVOLVIDO', 'NAO_REALIZADO'])
export type StatusPixDevolution = z.infer<typeof StatusPixDevolutionSchema>
export type StatusPixReceived = z.infer<typeof StatusPixReceivedSchema>
export const PixCOBCalendarioSchema = z
.object({
expiracao: z.number(),
})
.strict()
export type PixCOBCalendario = z.infer<typeof PixCOBCalendarioSchema>
export const PixCOBVCalendarioSchema = z
.object({
dataDeVencimento: z.string(),
validadeAposVencimento: z.number().optional(),
})
.strict()
export type PixCOBVCalendario = z.infer<typeof PixCOBVCalendarioSchema>
export const PixCOBDevedorSchema = z
.union([
z
.object({
cpf: z.string().describe('CPF do devedor (somente números)'),
nome: z.string().describe('Nome do devedor'),
})
.strict(),
z
.object({
cnpj: z.string().describe('CNPJ do devedor (somente números)'),
nome: z.string().describe('Nome do devedor'),
})
.strict(),
])
.optional()
export type PixCOBDevedor = z.infer<typeof PixCOBDevedorSchema>
export const PixCOBVDevedorSchema = z.union([
z
.object({
cpf: z.string().describe('CPF do devedor (somente números)'),
nome: z.string().describe('Nome do devedor'),
email: z.email().optional(),
logradouro: z.string().optional(),
cidade: z.string().optional(),
uf: z.string().optional(),
cep: z.string().optional(),
})
.strict(),
z
.object({
cnpj: z.string().describe('CNPJ do devedor (somente números)'),
nome: z.string().describe('Nome do devedor'),
email: z.email().optional(),
logradouro: z.string().optional(),
cidade: z.string().optional(),
uf: z.string().optional(),
cep: z.string().optional(),
})
.strict(),
])
export type PixCOBVDevedor = z.infer<typeof PixCOBVDevedorSchema>
export const PixCOBValorSchema = z
.object({
original: z.string(),
})
.strict()
export type PixCOBValor = z.infer<typeof PixCOBValorSchema>
export const PixCOBVValorSchema = z
.object({
original: z.string(),
multa: z
.object({
modalidade: z.number(),
valorPerc: z.string(),
})
.strict()
.optional(),
juros: z
.object({
modalidade: z.number(),
valorPerc: z.string(),
})
.strict()
.optional(),
abatimento: z
.object({
modalidade: z.number(),
valorPerc: z.string(),
})
.strict()
.optional(),
desconto: z
.union([
z
.object({
modalidade: z.number(),
valorPerc: z.string(),
})
.strict(),
z
.object({
modalidade: z.number(),
descontoDataFixa: z.array(
z.object({
data: z.string(),
valorPerc: z.string(),
}),
),
})
.strict(),
])
.optional(),
})
.strict()
export type PixCOBVValor = z.infer<typeof PixCOBVValorSchema>
export const PixInfoAdicionalSchema = z
.object({
nome: z.string(),
valor: z.string(),
})
.strict()
export type PixInfoAdicional = z.infer<typeof PixInfoAdicionalSchema>
// -------------------------------------------
// Criar cobrança imediata (sem txid)
// -------------------------------------------
export const PixCreateImmediateChargeBodySchema = z
.object({
calendario: PixCOBCalendarioSchema,
devedor: PixCOBDevedorSchema,
valor: PixCOBValorSchema,
chave: z.string(),
solicitacaoPagador: z.string().optional(),
loc: z.object({ id: z.number() }).optional(),
infoAdicionais: z.array(PixInfoAdicionalSchema).optional(),
})
.strict()
export type PixCreateImmediateChargeBody = z.infer<typeof PixCreateImmediateChargeBodySchema>
export const PixCreateImmediateChargeResponseSchema = z
.object({
calendario: PixCOBCalendarioSchema.extend({ criacao: z.string() }),
txid: z.string(),
revisao: z.number(),
status: StatusPixReceivedSchema,
valor: PixCOBValorSchema,
chave: z.string(),
devedor: PixCOBDevedorSchema,
solicitacaoPagador: z.string().optional(),
infoAdicionais: z.array(PixInfoAdicionalSchema).optional(),
loc: z.object({
id: z.number(),
location: z.string(),
tipoCob: z.literal('cob'),
criacao: z.string(),
}),
location: z.string(),
pixCopiaECola: z.string(),
})
.strict()
export type PixCreateImmediateChargeResponse = z.infer<typeof PixCreateImmediateChargeResponseSchema>
// -------------------------------------------
// Criar cobrança (com txid)
// -------------------------------------------
export const PixCreateChargeParamsSchema = z
.object({
txid: z.string(),
})
.strict()
export type PixCreateChargeParams = z.infer<typeof PixCreateChargeParamsSchema>
export const PixCreateChargeBodySchema = PixCreateImmediateChargeBodySchema
export type PixCreateChargeBody = z.infer<typeof PixCreateChargeBodySchema>
export const PixCreateChargeResponseSchema = PixCreateImmediateChargeResponseSchema
export type PixCreateChargeResponse = z.infer<typeof PixCreateChargeResponseSchema>
// -------------------------------------------
// Revisar cobrança
// -------------------------------------------
export const PixUpdateChargeParamsSchema = z
.object({
txid: z.string(),
})
.strict()
export type PixUpdateChargeParams = z.infer<typeof PixUpdateChargeParamsSchema>
export const PixUpdateChargeBodySchema = z
.object({
calendario: PixCOBCalendarioSchema.optional(),
devedor: PixCOBDevedorSchema,
valor: PixCOBValorSchema.optional(),
status: StatusPixReceivedSchema.optional(),
chave: z.string().optional(),
solicitacaoPagador: z.string().optional(),
loc: z.object({ id: z.number() }).optional(),
infoAdicionais: z.array(PixInfoAdicionalSchema).optional(),
})
.strict()
export type PixUpdateChargeBody = z.infer<typeof PixUpdateChargeBodySchema>
export const PixUpdateChargeResponseSchema = z
.object({
calendario: PixCOBCalendarioSchema.extend({
criacao: z.string(),
}),
txid: z.string(),
revisao: z.number(),
status: StatusPixReceivedSchema,
valor: PixCOBValorSchema,
chave: z.string(),
devedor: PixCOBDevedorSchema,
solicitacaoPagador: z.string().optional(),
infoAdicionais: z.array(PixInfoAdicionalSchema).optional(),
loc: z.object({
id: z.number(),
location: z.string(),
tipoCob: z.literal('cob'),
criacao: z.string(),
}),
location: z.string(),
pixCopiaECola: z.string(),
})
.strict()
export type PixUpdateChargeResponse = z.infer<typeof PixUpdateChargeResponseSchema>
// -------------------------------------------
// Consultar cobrança
// -------------------------------------------
export const PixDetailChargeParamsSchema = z
.object({
txid: z.string(),
revisao: z.number().optional(),
})
.strict()
export type PixDetailChargeParams = z.infer<typeof PixDetailChargeParamsSchema>
export const PixDetailChargeResponseSchema = z
.object({
calendario: PixCOBCalendarioSchema.extend({
criacao: z.string(),
}),
txid: z.string(),
revisao: z.number(),
status: StatusPixReceivedSchema,
valor: PixCOBValorSchema,
chave: z.string(),
devedor: PixCOBDevedorSchema,
solicitacaoPagador: z.string().optional(),
infoAdicionais: z.array(PixInfoAdicionalSchema).optional(),
loc: z.object({
id: z.number(),
location: z.string(),
tipoCob: z.literal('cob'),
criacao: z.string(),
}),
location: z.string(),
pixCopiaECola: z.string().optional(),
pix: z
.array(
z
.object({
endToEndId: z.string(),
txid: z.string(),
valor: z.string(),
horario: z.string(),
infoPagador: z.string().optional(),
devolucoes: z
.array(
z
.object({
id: z.string(),
rtrId: z.string(),
valor: z.string(),
horario: z.object({
solicitacao: z.string(),
}),
status: StatusPixDevolutionSchema,
})
.strict(),
)
.optional(),
})
.strict(),
)
.optional(),
})
.strict()
export type PixDetailChargeResponse = z.infer<typeof PixDetailChargeResponseSchema>
// -------------------------------------------
// Listar cobranças
// -------------------------------------------
export const PixListChargesParamsSchema = z
.object({
inicio: z.string(),
fim: z.string(),
cpf: z.string().optional(),
cnpj: z.string().optional(),
status: StatusPixReceivedSchema.optional(),
'paginacao.paginaAtual': z.number().optional(),
'paginacao.itensPorPagina': z.number().optional(),
})
.strict()
export type PixListChargesParams = z.infer<typeof PixListChargesParamsSchema>
export const PixListChargesResponseSchema = z
.object({
parametros: z
.object({
inicio: z.string(),
fim: z.string(),
paginacao: z
.object({
paginaAtual: z.number(),
itensPorPagina: z.number(),
quantidadeDePaginas: z.number(),
quantidadeTotalDeItens: z.number(),
})
.strict(),
cpf: z.string().optional(),
cnpj: z.string().optional(),
status: StatusPixReceivedSchema.optional(),
})
.strict(),
cobs: z.array(
z
.object({
calendario: PixCOBCalendarioSchema.extend({
criacao: z.string(),
}),
txid: z.string(),
revisao: z.number(),
status: StatusPixReceivedSchema,
valor: PixCOBValorSchema,
chave: z.string(),
devedor: PixCOBDevedorSchema,
solicitacaoPagador: z.string().optional(),
infoAdicionais: z.array(PixInfoAdicionalSchema).optional(),
loc: z.object({
id: z.number(),
location: z.string(),
tipoCob: z.literal('cob'),
criacao: z.string(),
}),
location: z.string(),
pixCopiaECola: z.string().optional(),
pix: z
.array(
z
.object({
endToEndId: z.string(),
txid: z.string(),
valor: z.string(),
chave: z.string(),
horario: z.string(),
infoPagador: z.string().optional(),
devolucoes: z
.array(
z
.object({
id: z.string(),
rtrId: z.string(),
valor: z.string(),
horario: z.object({
solicitacao: z.string(),
liquidacao: z.string().optional(),
}),
status: StatusPixDevolutionSchema,
})
.strict(),
)
.optional(),
})
.strict(),
)
.optional(),
})
.strict(),
),
})
.strict()
export type PixListChargesResponse = z.infer<typeof PixListChargesResponseSchema>
// -------------------------------------------
// Criar cobrança com vencimento
// -------------------------------------------
export const PixCreateDueChargeParamsSchema = z
.object({
txid: z.string(),
})
.strict()
export const PixCreateDueChargeBodySchema = z
.object({
calendario: PixCOBVCalendarioSchema,
devedor: PixCOBVDevedorSchema,
valor: PixCOBVValorSchema,
chave: z.string(),
solicitacaoPagador: z.string().optional(),
loc: z.object({ id: z.number() }).optional(),
infoAdicionais: z.array(PixInfoAdicionalSchema).optional(),
})
.strict()
export type PixCreateDueChargeBody = z.infer<typeof PixCreateDueChargeBodySchema>
export const PixCreateDueChargeResponseSchema = z
.object({
calendario: PixCOBVCalendarioSchema.extend({ criacao: z.string() }),
txid: z.string(),
revisao: z.number(),
status: StatusPixReceivedSchema,
devedor: PixCOBVDevedorSchema,
recebedor: z.union([
z
.object({
cpf: z.string(),
nome: z.string(),
logradouro: z.string(),
cidade: z.string(),
uf: z.string(),
cep: z.string(),
})
.strict(),
z
.object({
cnpj: z.string(),
nome: z.string(),
nomeFantasia: z.string(),
logradouro: z.string(),
cidade: z.string(),
uf: z.string(),
cep: z.string(),
})
.strict(),
]),
valor: PixCOBVValorSchema,
chave: z.string(),
solicitacaoPagador: z.string().optional(),
infoAdicionais: z.array(PixInfoAdicionalSchema).optional(),
loc: z.object({
id: z.number(),
location: z.string(),
tipoCob: z.literal('cobv'),
criacao: z.string(),
}),
pixCopiaECola: z.string(),
})
.strict()
export type PixCreateDueChargeResponse = z.infer<typeof PixCreateDueChargeResponseSchema>
// -------------------------------------------
// Revisar cobrança com vencimento
// -------------------------------------------
export const PixUpdateDueChargeParamsSchema = z
.object({
txid: z.string(),
})
.strict()
export type PixUpdateDueChargeParams = z.infer<typeof PixUpdateDueChargeParamsSchema>
export const PixUpdateDueChargeBodySchema = z
.object({
calendario: PixCOBCalendarioSchema.optional(),
devedor: PixCOBVDevedorSchema,
valor: PixCOBVValorSchema.optional(),
status: StatusPixReceivedSchema.optional(),
chave: z.string().optional(),
solicitacaoPagador: z.string().optional(),
loc: z.object({ id: z.number() }).optional(),
infoAdicionais: z.array(PixInfoAdicionalSchema).optional(),
})
.strict()
export type PixUpdateDueChargeBody = z.infer<typeof PixUpdateDueChargeBodySchema>
export const PixUpdateDueChargeResponseSchema = z
.object({
calendario: PixCOBVCalendarioSchema.extend({
criacao: z.string()
}),
txid: z.string(),
revisao: z.number(),
status: StatusPixReceivedSchema,
valor: PixCOBVValorSchema,
chave: z.string(),
devedor: PixCOBVDevedorSchema,
recebedor: z.union([
z
.object({
cpf: z.string(),
nome: z.string(),
logradouro: z.string(),
cidade: z.string(),
uf: z.string(),
cep: z.string(),
})
.strict(),
z
.object({
cnpj: z.string(),
nome: z.string(),
nomeFantasia: z.string(),
logradouro: z.string(),
cidade: z.string(),
uf: z.string(),
cep: z.string(),
})
.strict(),
]),
solicitacaoPagador: z.string().optional(),
infoAdicionais: z.array(PixInfoAdicionalSchema).optional(),
loc: z.object({
id: z.number(),
location: z.string(),
tipoCob: z.literal('cobv'),
criacao: z.string(),
}),
pixCopiaECola: z.string(),
})
.strict()
export type PixUpdateDueChargeResponse = z.infer<typeof PixUpdateDueChargeResponseSchema>
// --