sdk-node-apis-efi
Version:
Module for integration with Efi Bank API
1,537 lines • 66 kB
JavaScript
/// <reference types="node" preserve="true" />
import * as z from "zod";
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 const StatusPixSendSchema = z.enum(['EM_PROCESSAMENTO', 'REALIZADO', 'NAO_REALIZADO']);
export const StatusPixRecSchema = z.enum(['CRIADA', 'APROVADA', 'REJEITADA', 'EXPIRADA', 'CANCELADA']);
export const StatusPixSolicRecSchema = z.enum(['CRIADA', 'ENVIADA', 'RECEBIDA', 'REJEITADA', 'ACEITA', 'EXPIRADA', 'CANCELADA']);
export const StatusPixCobRSchema = z.enum(['CRIADA', 'ATIVA', 'CONCLUIDA', 'EXPIRADA', 'REJEITADA', 'CANCELADA']);
export const PixCobCalendarioSchema = z
.object({
expiracao: z.number(),
})
.strict();
export const PixCobVCalendarioSchema = z
.object({
dataDeVencimento: z.string(),
validadeAposVencimento: z.number().optional(),
})
.strict();
export const PixRecCalendarioSchema = z.object({
dataFinal: z.string().optional(),
dataInicial: z.string(),
periodicidade: z.enum(['SEMANAL', 'MENSAL', 'TRIMESTRAL', 'SEMESTRAL', 'ANUAL']),
}).strict();
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 const PixCobVDevedorSchema = z.union([
z
.object({
cpf: z.string(),
nome: z.string(),
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(),
nome: z.string(),
email: z.email().optional(),
logradouro: z.string().optional(),
cidade: z.string().optional(),
uf: z.string().optional(),
cep: z.string().optional(),
})
.strict(),
]);
export const PixAutomaticChargeDebtorSchema = z
.object({
email: z.email().optional(),
logradouro: z.string().max(200).optional(),
cidade: z.string().max(200).optional(),
uf: z.string().max(2).optional(),
cep: z.string().max(8).optional(),
})
.strict();
export const PixCobVRecebedorSchema = z.union([
z
.object({
cpf: z.string(),
nome: z.string(),
email: z.email(),
logradouro: z.string(),
cidade: z.string(),
uf: z.string(),
cep: z.string(),
})
.strict(),
z
.object({
cnpj: z.string(),
nome: z.string(),
email: z.email(),
logradouro: z.string(),
cidade: z.string(),
uf: z.string(),
cep: z.string(),
nomeFantasia: z.string()
})
.strict(),
]);
export const PixCobValorSchema = z
.object({
original: z.string(),
})
.strict();
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 const PixRecValorSchema = z.union([
z.object({
valorRec: z.string()
}).strict(),
z.object({
valorMinimoRecebedor: z.string(),
}).strict()
]);
export const PixInfoAdicionalSchema = z
.object({
nome: z.string(),
valor: z.string(),
})
.strict();
// -------------------------------------------
// 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 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(),
})
.loose();
// -------------------------------------------
// Criar cobrança (com txid)
// -------------------------------------------
export const PixCreateChargeParamsSchema = z
.object({
txid: z.string(),
})
.strict();
export const PixCreateChargeBodySchema = PixCreateImmediateChargeBodySchema;
export const PixCreateChargeResponseSchema = PixCreateImmediateChargeResponseSchema;
// -------------------------------------------
// Revisar cobrança
// -------------------------------------------
export const PixUpdateChargeParamsSchema = z
.object({
txid: z.string(),
})
.strict();
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 const PixUpdateChargeResponseSchema = z
.object({
calendario: PixCobCalendarioSchema.extend({
criacao: z.string(),
}),
txid: z.string(),
status: StatusPixReceivedSchema,
revisao: z.number(),
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(),
})
.loose();
// -------------------------------------------
// Consultar cobrança
// -------------------------------------------
export const PixDetailChargeParamsSchema = z
.object({
txid: z.string(),
revisao: z.number().optional(),
})
.strict();
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(),
})
.loose();
// -------------------------------------------
// Consultar lista de 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 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()),
})
.loose();
// -------------------------------------------
// 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 const PixCreateDueChargeResponseSchema = z
.object({
calendario: PixCobVCalendarioSchema.extend({
criacao: z.string(),
validadeAposVencimento: z.number()
}),
txid: z.string(),
revisao: z.number(),
status: StatusPixReceivedSchema,
devedor: PixCobVDevedorSchema,
recebedor: PixCobVRecebedorSchema,
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(),
})
.loose();
// -------------------------------------------
// Revisar cobrança com vencimento
// -------------------------------------------
export const PixUpdateDueChargeParamsSchema = z
.object({
txid: z.string(),
})
.strict();
export const PixUpdateDueChargeBodySchema = z
.object({
calendario: PixCobVCalendarioSchema.partial().strict().optional(),
devedor: z
.object({
cpf: z.string().optional(),
cnpj: z.string().optional(),
nome: z.string().optional(),
email: z.email().optional(),
logradouro: z.string().optional(),
cidade: z.string().optional(),
uf: z.string().optional(),
cep: z.string().optional(),
})
.strict()
.optional(),
valor: z
.object({
original: z.string().optional(),
multa: z.object({ modalidade: z.number().optional(), valorPerc: z.string().optional() }).strict().optional(),
juros: z.object({ modalidade: z.number().optional(), valorPerc: z.string().optional() }).strict().optional(),
abatimento: z.object({ modalidade: z.number().optional(), valorPerc: z.string().optional() }).strict().optional(),
desconto: z
.object({
modalidade: z.number().optional(),
valorPerc: z.string().optional(),
descontoDataFixa: z
.array(z.object({ data: z.string().optional(), valorPerc: z.string().optional() }).strict())
.optional(),
})
.strict()
.optional(),
})
.strict()
.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 const PixUpdateDueChargeResponseSchema = z
.object({
calendario: PixCobVCalendarioSchema.extend({
criacao: z.string(),
validadeAposVencimento: z.number()
}).strict(),
txid: z.string(),
revisao: z.number(),
status: StatusPixReceivedSchema,
devedor: PixCobVDevedorSchema,
recebedor: PixCobVRecebedorSchema,
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(),
}).strict(),
pixCopiaECola: z.string(),
})
.loose();
// -------------------------------------------
// Consultar cobrança com vencimento
// -------------------------------------------
export const PixDetailDueChargeParamsSchema = PixDetailChargeParamsSchema;
export const PixDetailDueChargeResponseSchema = z
.object({
calendario: PixCobVCalendarioSchema.extend({
criacao: z.string(),
validadeAposVencimento: z.number()
}).strict(),
txid: z.string(),
revisao: z.number(),
loc: z.object({
id: z.number(),
location: z.string(),
tipoCob: z.literal('cobv')
}).strict(),
status: StatusPixReceivedSchema,
devedor: PixCobVDevedorSchema,
recebedor: PixCobVDevedorSchema,
valor: PixCobVValorSchema,
chave: z.string(),
solicitacaoPagador: z.string().optional(),
infoAdicionais: z.array(PixInfoAdicionalSchema).optional(),
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(),
})
.loose();
// -------------------------------------------
// Consultar lista de cobranças com vencimento
// -------------------------------------------
export const PixListDueChargesParamsSchema = z
.object({
inicio: z.string(),
fim: z.string(),
cpf: z.string().optional(),
cnpj: z.string().optional(),
locationPresente: z.boolean().optional(),
status: StatusPixReceivedSchema.optional(),
loteCobVId: z.string().optional(),
'paginacao.paginaAtual': z.number().optional(),
'paginacao.itensPorPagina': z.number().optional(),
})
.strict();
export const PixListDueChargesResponseSchema = 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(),
locationPresente: z.boolean().optional(),
status: StatusPixReceivedSchema.optional(),
loteCobVId: z.string().optional(),
})
.strict(),
cobs: z.array(z
.object({
calendario: PixCobVCalendarioSchema.extend({
criacao: z.string(),
validadeAposVencimento: z.number()
}),
txid: z.string(),
revisao: z.number(),
status: StatusPixReceivedSchema,
devedor: PixCobVDevedorSchema,
recebedor: PixCobVRecebedorSchema,
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().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()),
})
.loose();
// -------------------------------------------
// Criar recorrência de Pix Automático
// -------------------------------------------
export const PixCreateRecurrenceAutomaticBodySchema = z.object({
vinculo: z.object({
contrato: z.string(),
devedor: PixCobDevedorSchema.nonoptional(),
objeto: z.string().optional()
}).strict(),
calendario: PixRecCalendarioSchema,
valor: PixRecValorSchema,
politicaRetentativa: z.enum(['NAO_PERMITE', 'PERMITE_3R_7D']),
loc: z.number().optional(),
ativacao: z.object({
dadosJornada: z.object({
txid: z.string(),
}).strict()
}).strict().optional(),
}).strict();
export const PixCreateRecurrenceAutomaticResponseSchema = z.object({
idRec: z.string(),
status: StatusPixRecSchema,
valor: PixRecValorSchema,
vinculo: z.object({
contrato: z.string(),
devedor: PixCobDevedorSchema.nonoptional(),
objeto: z.string().optional()
}).strict(),
calendario: PixRecCalendarioSchema,
politicaRetentativa: z.enum(['NAO_PERMITE', 'PERMITE_3R_7D']),
recebedor: z.object({
cnpj: z.string(),
nome: z.string(),
}).strict(),
loc: z.object({
criacao: z.string(),
id: z.number(),
location: z.string(),
idRec: z.string(),
}).strict(),
ativacao: z.object({
tipoJornada: z.string(),
dadosJornada: z.object({
txid: z.string(),
}).strict().optional()
}).strict(),
atualizacao: z.array(z.object({
status: StatusPixRecSchema,
data: z.string(),
}).strict())
}).loose();
// -------------------------------------------
// Consultar recorrência de Pix Automático
// -------------------------------------------
export const PixDetailRecurrenceAutomaticParamsSchema = z.object({
idRec: z.string(),
}).strict();
export const PixDetailRecurrenceAutomaticResponseSchema = PixCreateRecurrenceAutomaticResponseSchema.extend({
pagador: z.union([
z.object({
codMun: z.string(),
cpf: z.string(),
ispbParticipante: z.string(),
}).strict(),
z.object({
codMun: z.string(),
cnpj: z.string(),
ispbParticipante: z.string(),
}).strict()
]).optional(),
dadosQR: z.object({
jornada: z.string(),
pixCopiaECola: z.string(),
}).strict(),
}).loose();
// -------------------------------------------
// Revisar recorrência de Pix Automático
// -------------------------------------------
export const PixUpdateRecurrenceAutomaticParamsSchema = PixDetailRecurrenceAutomaticParamsSchema;
export const PixUpdateRecurrenceAutomaticBodySchema = z.object({
loc: z.number().optional(),
status: z.literal('CANCELADA').optional(),
vinculo: z.object({
devedor: z.object({
nome: z.string()
}).strict()
}).strict().optional(),
calendario: z.object({
dataInicial: z.string()
}).strict().optional(),
ativacao: z.object({
dadosJornada: z.object({
txid: z.string(),
}).strict()
}).strict().optional(),
}).strict();
export const PixUpdateRecurrenceAutomaticResponseSchema = PixCreateRecurrenceAutomaticResponseSchema;
// -------------------------------------------
// Consultar lista de recorrências de Pix Automático
// -------------------------------------------
export const PixListRecurrenceAutomaticParamsSchema = z.object({
inicio: z.string(),
fim: z.string(),
cpf: z.string().optional(),
cnpj: z.string().optional(),
locationPresente: z.boolean().optional(),
status: StatusPixRecSchema.optional(),
convenio: z.string().optional(),
'paginacao.paginaAtual': z.number().optional(),
'paginacao.itensPorPagina': z.number().optional(),
}).strict();
export const PixListRecurrenceAutomaticResponseSchema = 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(),
locationPresente: z.boolean().optional(),
status: StatusPixRecSchema.optional(),
convenio: z.string().optional(),
}).strict(),
recs: z.array(PixDetailRecurrenceAutomaticResponseSchema)
}).loose();
// -------------------------------------------
// Criar solicitação de confirmação de recorrência de Pix Automático
// -------------------------------------------
export const PixCreateRequestRecurrenceAutomaticBodySchema = z.object({
idRec: z.string(),
calendario: z.object({
dataExpiracaoSolicitacao: z.string(),
}).strict(),
destinatario: z.union([
z.object({
agencia: z.string(),
conta: z.string(),
cpf: z.string(),
ispbParticipante: z.string(),
}).strict(),
z.object({
agencia: z.string(),
conta: z.string(),
cnpj: z.string(),
ispbParticipante: z.string(),
}).strict(),
]),
}).strict();
export const PixCreateRequestRecurrenceAutomaticResponseSchema = z.object({
idSolicRec: z.string(),
idRec: z.string(),
calendario: z.object({
dataExpiracaoSolicitacao: z.string(),
}).strict(),
status: StatusPixSolicRecSchema,
destinatario: z.union([
z.object({
agencia: z.string(),
conta: z.string(),
cpf: z.string(),
ispbParticipante: z.string(),
}).strict(),
z.object({
agencia: z.string(),
conta: z.string(),
cnpj: z.string(),
ispbParticipante: z.string(),
}).strict(),
]),
atualizacao: z.array(z.object({
data: z.string(),
status: StatusPixSolicRecSchema,
}).strict()),
recPayload: PixCreateRecurrenceAutomaticResponseSchema
}).loose();
// -------------------------------------------
// Consultar solicitação de confirmação de recorrência de Pix Automático
// -------------------------------------------
export const PixDetailRequestRecurrenceAutomaticParamsSchema = z.object({
idSolicRec: z.string(),
}).strict();
export const PixDetailRequestRecurrenceAutomaticResponseSchema = PixCreateRequestRecurrenceAutomaticResponseSchema;
// -------------------------------------------
// Revisar solicitação de confirmação de recorrência de Pix Automático
// -------------------------------------------
export const PixUpdateRequestRecurrenceAutomaticParamsSchema = PixDetailRequestRecurrenceAutomaticParamsSchema;
export const PixUpdateRequestRecurrenceAutomaticBodySchema = z.object({
status: z.literal('CANCELADA'),
}).strict();
export const PixUpdateRequestRecurrenceAutomaticResponseSchema = PixCreateRequestRecurrenceAutomaticResponseSchema;
// -------------------------------------------
// Criar cobrança de Pix Automático (com txid)
// -------------------------------------------
export const PixCreateAutomaticChargeTxidParamsSchema = z.object({
txid: z.string(),
}).strict();
export const PixCreateAutomaticChargeTxidBodySchema = z.object({
idRec: z.string(),
infoAdicional: z.string().optional(),
calendario: z.object({
dataDeVencimento: z.string(),
}).strict(),
valor: PixCobValorSchema,
ajusteDiaUtil: z.boolean(),
devedor: PixAutomaticChargeDebtorSchema.optional(),
recebedor: z.object({
conta: z.string(),
tipoConta: z.enum(['CORRENTE', 'POUPANCA', 'PAGAMENTO']),
agencia: z.string(),
}).strict()
}).strict();
export const PixCreateAutomaticChargeTxidResponseSchema = z.object({
idRec: z.string(),
txid: z.string(),
infoAdicional: z.string().optional(),
calendario: z.object({
criacao: z.string(),
dataDeVencimento: z.string(),
}).strict(),
valor: PixCobValorSchema,
status: StatusPixCobRSchema,
politicaRetentativa: z.enum(['NAO_PERMITE', 'PERMITE_3R_7D']),
ajusteDiaUtil: z.boolean(),
devedor: PixAutomaticChargeDebtorSchema.optional(),
recebedor: z.object({
conta: z.string(),
tipoConta: z.enum(['CORRENTE', 'POUPANCA', 'PAGAMENTO']),
agencia: z.string(),
cnpj: z.string(),
nome: z.string(),
}).strict(),
atualizacao: z.array(z.object({
data: z.string(),
status: StatusPixCobRSchema,
}).strict())
}).loose();
// -------------------------------------------
// Revisar cobrança de Pix Automático
// -------------------------------------------
export const PixUpdateAutomaticChargeParamsSchema = PixCreateAutomaticChargeTxidParamsSchema;
export const PixUpdateAutomaticChargeBodySchema = z.object({
status: z.literal('CANCELADA')
}).strict();
export const PixUpdateAutomaticChargeResponseSchema = PixCreateAutomaticChargeTxidResponseSchema;
// -------------------------------------------
// Consultar cobrança de Pix Automático
// -------------------------------------------
export const PixDetailAutomaticChargeParamsSchema = PixCreateAutomaticChargeTxidParamsSchema;
export const PixDetailAutomaticChargeResponseSchema = PixCreateAutomaticChargeTxidResponseSchema.extend({
pix: z.array(z.object({
endToEndId: z.string(),
txid: z.string(),
valor: z.string(),
horario: z.string(),
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(),
tentativas: z.array(z.object({
dataLiquidacao: z.string(),
tipo: z.string(),
status: z.string(),
endToEndId: z.string(),
atualizacao: z.array(z.object({
data: z.string(),
status: z.string(),
}).strict())
}).strict()).optional(),
encerramento: z
.object({
cancelamento: z
.object({
solicitante: z.string(),
codigo: z.string(),
descricao: z.string(),
})
.loose(),
})
.loose()
.optional(),
}).loose();
// -------------------------------------------
// Criar cobrança de Pix Automático (sem txid)
// -------------------------------------------
export const PixCreateAutomaticChargeBodySchema = PixCreateAutomaticChargeTxidBodySchema;
export const PixCreateAutomaticChargeResponseSchema = PixCreateAutomaticChargeTxidResponseSchema;
// -------------------------------------------
// Consultar lista de cobranças de Pix Automático
// -------------------------------------------
// -------------------------------------------
// Requisitar envio de Pix
// -------------------------------------------
export const PixSendParamsSchema = z
.object({
idEnvio: z.string(),
})
.strict();
export const PixSendBodySchema = z.object({
valor: z.string(),
pagador: z.object({
chave: z.string(),
infoPagador: z.string().optional(),
}).strict(),
favorecido: z.union([
z.object({
chave: z.string(),
cpf: z.string().optional(),
}).strict(),
z.object({
chave: z.string(),
cnpj: z.string().optional(),
}).strict(),
z.object({
contaBanco: z.object({
nome: z.string(),
cpf: z.string(),
codigoBanco: z.string(),
agencia: z.string(),
conta: z.string(),
tipoConta: z.enum(['cacc', 'svgs'])
})
}).strict(),
z.object({
contaBanco: z.object({
nome: z.string(),
cnpj: z.string(),
codigoBanco: z.string(),
agencia: z.string(),
conta: z.string(),
tipoConta: z.enum(['cacc', 'svgs'])
})
}).strict(),
])
});
export const PixSendResponseSchema = z
.object({
endToEndId: z.string(),
idEnvio: z.string(),
valor: z.string(),
horario: z.object({
solicitacao: z.string()
}),
status: z.literal('EM_PROCESSAMENTO')
})
.loose();
// -------------------------------------------
// Requisitar envio de Pix para contas de mesma titularidade
// -------------------------------------------
export const PixSendSameOwnershipParamsSchema = PixSendParamsSchema;
export const PixSendSameOwnershipBodySchema = PixSendBodySchema;
export const PixSendSameOwnershipResponseSchema = PixSendResponseSchema;
// -------------------------------------------
// Consultar Pix enviado através do endToEndId
// -------------------------------------------
export const PixSendDetailParamsSchema = z
.object({
e2eId: z.string(),
})
.strict();
export const PixSendDetailResponseSchema = z.object({
endToEndId: z.string(),
idEnvio: z.string(),
valor: z.string(),
chave: z.string(),
status: StatusPixSendSchema,
infoPagador: z.string().optional(),
horario: z.object({
solicitacao: z.string(),
liquidacao: z.string().optional(),
}),
favorecido: z.union([
z.object({
chave: z.string(),
}).strict(),
z.object({
contaBanco: z.object({
nome: z.string(),
cpf: z.string(),
agencia: z.string(),
conta: z.string(),
tipoConta: z.enum(['cacc', 'svgs'])
})
}).strict(),
z.object({
contaBanco: z.object({
nome: z.string(),
cnpj: z.string(),
agencia: z.string(),
conta: z.string(),
tipoConta: z.enum(['cacc', 'svgs'])
})
}).strict(),
]),
devolucoes: z.array(z.object({
rtrId: z.string(),
valor: z.string(),
horario: z.string()
}).strict()).optional(),
}).loose();
// -------------------------------------------
// Consultar Pix enviado através do Identificador da transação
// -------------------------------------------
export const PixSendDetailIdParamsSchema = z
.object({
idEnvio: z.string(),
})
.strict();
export const PixSendDetailIdResponseSchema = PixSendDetailResponseSchema;
// -------------------------------------------
// Consultar lista de Pix enviados
// -------------------------------------------
export const PixSendListParamsSchema = z.object({
inicio: z.string(),
fim: z.string(),
status: StatusPixSendSchema.optional(),
exibirCodigoBanco: z.boolean().optional(),
cpf: z.string().optional(),
cnpj: z.string().optional(),
'paginacao.paginaAtual': z.number().optional(),
'paginacao.itensPorPagina': z.number().optional(),
}).strict();
export const PixSendListResponseSchema = 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(),
}),
status: StatusPixSendSchema.optional(),
exibirCodigoBanco: z.boolean().optional(),
cpf: z.string().optional(),
cnpj: z.string().optional(),
})
.strict(),
pix: z.array(PixSendDetailResponseSchema)
}).loose();
// -------------------------------------------
// Detalhar QR Code Pix
// -------------------------------------------
export const PixQrCodeDetailBodySchema = z
.object({
pixCopiaECola: z.string(),
})
.strict();
const PixQrCodeDetailCommonShape = {
txid: z.string(),
revisao: z.number(),
status: StatusPixReceivedSchema,
devedor: z.union([
z.object({ cpf: z.string(), nome: z.string() }).loose(),
z.object({ cnpj: z.string(), nome: z.string() }).loose(),
]).optional(),
recebedor: z.union([
z.object({ cpf: z.string(), nome: z.string() }).loose(),
z.object({ cnpj: z.string(), nome: z.string() }).loose(),
z
.object({
logradouro: z.string(),
cidade: z.string(),
uf: z.string(),
cep: z.string(),
nome: z.string(),
cnpj: z.string(),
})
.loose(),
z
.object({
logradouro: z.string(),
cidade: z.string(),
uf: z.string(),
cep: z.string(),
nome: z.string(),
cpf: z.string(),
})
.loose(),
]).optional(),
chave: z.string(),
solicitacaoPagador: z.string().optional(),
infoAdicionais: z.array(PixInfoAdicionalSchema).optional(),
};
export const PixQrCodeDetailResponseSchema = z.discriminatedUnion('tipoCob', [
z
.object({
...PixQrCodeDetailCommonShape,
tipoCob: z.literal('cob'),
calendario: z
.object({
criacao: z.string(),
apresentacao: z.string(),
expiracao: z.number(),
})
.loose(),
valor: PixCobValorSchema,
})
.loose(),
z
.object({
...PixQrCodeDetailCommonShape,
tipoCob: z.literal('cobv'),
calendario: z
.object({
criacao: z.string(),
apresentacao: z.string(),
dataDeVencimento: z.string(),
validadeAposVencimento: z.number(),
})
.loose(),
valor: PixCobVValorSchema,
})
.loose(),
]);
// -------------------------------------------
// Pagar QR Code Pix
// -------------------------------------------
export const PixQrCodePayParamsSchema = z
.object({
idEnvio: z.string(),
})
.strict();
export const PixQrCodeBodySchema = z.object({
pagador: z.object({
chave: z.string(),
infoPagador: z.string().optional(),
}).strict(),
pixCopiaECola: z.string(),
});
export const PixQrCodePayResponseSchema = PixSendResponseSchema;
// -------------------------------------------
// Consultar Pix
// -------------------------------------------
export const PixDetailReceivedParamsSchema = z
.object({
e2eId: z.string(),
exibirCodigoBanco: z.boolean().optional(),
})
.strict();
export const PixDetailReceivedResponseSchema = z.object({
endToEndId: z.string(),
txid: z.string().optional(),
valor: z.string(),
chave: z.string(),
horario: z.string(),
pagador: z.object({
contaBanco: z.object({
codigoBanco: z.string(),
})
}).strict().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(),
infoPagador: z.string().optional(),
}).loose();
// -------------------------------------------
// Consultar Pix recebidos
// -------------------------------------------
export const PixListReceivedParamsSchema = z.object({
inicio: z.string(),
fim: z.string(),
txid: z.string().optional(),
txIdPresente: z.boolean().optional(),
devolucaoPresente: z.boolean().optional(),
cpf: z.string().optional(),
cnpj: z.string().optional(),
'paginacao.paginaAtual': z.number().optional(),
'paginacao.itensPorPagina': z.number().optional(),
exibirCodigoBanco: z.boolean().optional(),
}).strict();
export const PixListReceivedResponseSchema = 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(),
txid: z.string().optional(),
txIdPresente: z.boolean().optional(),
devolucaoPresente: z.boolean().optional(),
cpf: z.string().optional(),
cnpj: z.string().optional(),
exibirCodigoBanco: z.boolean().optional(),
})
.strict(),
pix: z.array(PixDetailReceivedResponseSchema),
})
.loose();
// -------------------------------------------
// Solicitar devolução
// -------------------------------------------
export const PixDevolutionParamsSchema = z
.object({
e2eId: z.string(),
id: z.string(),
})
.strict();
export const PixDevolutionBodySchema = z
.object({
valor: z.string(),
})
.strict();
export const PixDevolutionResponseSchema = z
.object({
id: z.string(),
rtrId: z.string(),
valor: z.string(),
horario: z.object({
solicitacao: z.string(),
}),
status: z.literal('EM_PROCESSAMENTO'),
})
.loose();
// -------------------------------------------
// Consultar devolução
// -------------------------------------------
export const PixDetailDevolutionParamsSchema = z
.object({
e2eId: z.string(),
id: z.string(),
})
.strict();
export const PixDetailDevolutionResponseSchema = z
.object({
id: z.string(),
rtrId: z.string(),
valor: z.string(),
horario: z.object({
solicitacao: z.string(),
liquidacao: z.string().optional(),
}),
status: StatusPixDevolutionSchema,
motivo: z.string().optional(),
})
.loose();
// -------------------------------------------
// Criar location do payload
// -------------------------------------------
export const PixCreateLocationBodySchema = z.object({
tipoCob: z.enum(['cob', 'cobv']),
}).strict();
export const PixCreateLocationResponseSchema = z.object({
id: z.number(),
location: z.string(),
tipoCob: z.enum(['cob', 'cobv']),
criacao: z.string(),
}).loose();
// -------------------------------------------
// Consultar locations cadastradas
// -------------------------------------------
export const PixLocationListParamsSchema = z.object({
inicio: z.string(),
fim: z.string(),
txIdPresente: z.boolean().optional(),
tipoCob: z.enum(['cob', 'cobv']).optional(),
'paginacao.paginaAtual': z.number().optional(),
'paginacao.itensPorPagina': z.number().optional(),
}).strict();
export const PixLocationListResponseSchema = 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(),
txIdPresente: z.boolean().optional(),
tipoCob: z.enum(['cob', 'cobv']).optional(),
}).strict(),
locs: z.array(PixCreateLocationResponseSchema.extend({
txid: z.string().optional(),
})),
}).loose();
// -------------------------------------------
// Recuperar location do payload
// -------------------------------------------
export const PixDetailLocationParamsSchema = z.object({
id: z.number(),
}).strict();
export const PixDetailLocationResponseSchema = PixCreateLocationResponseSchema.extend({
txid: z.string().optional(),
}).loose();
// -------------------------------------------
// Desvincular location de txid
// -------------------------------------------
export const PixUnlinkTxidLocationParamsSchema = z.object({
id: z.number(),
}).strict();
export const PixUnlinkTxidLocationResponseSchema = PixCreateLocationResponseSchema;
// -------------------------------------------
// Criar location do payload de recorrência de Pix Automático
// -------------------------------------------
export const PixCreateLocationRecurrenceAutomaticResponseSchema = z.object({
id: z.number(),
location: z.string(),
criacao: z.string(),
}).loose();
// -------------------------------------------
// Consultar locations de recorrência de Pix Automático cadastradas
// -------------------------------------------
export const PixListLocationRecurrenceAutomaticParamsSchema = z.object({
inicio: z.string(),
fim: z.string(),
idRecPresente: z.boolean().optional(),
convenio: z.string().optional(),
'paginacao.paginaAtual': z.number().optional(),
'paginacao.itensPorPagina': z.number().optional(),
}).strict();
export const PixListLocationRecurrenceAutomaticResponseSchema = 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(),
idRecPresente: z.boolean().optional(),
convenio: z.string().optional(),
}).strict(),
loc: z.array(PixCreateLocationRecurrenceAutomaticResponseSchema)
}).loose();
// -------------------------------------------
// Recuperar location do payload de recorrência de Pix Automático
// -------------------------------------------
export const PixDetailLocationRecurrenceAutomaticParamsSchema = z.object({
id: z.number(),
}).strict();
export const PixDetailLocationRecurrenceAutomaticResponseSchema = PixCreateLocationRecurrenceAutomaticResponseSchema.extend({
idRec: z.string().optional(),
}).loose();
// -------------------------------------------
// Desvincular uma recorrência de Pix Automático de um location
// -------------------------------------------
export const PixUnlinkLocationRecurrenceAutomaticParamsSchema = z.object({
id: z.number(),
}).strict();
export const PixUnlinkLocationRecurrenceAutomaticResponseSchema = PixCreateLocationRecurrenceAutomaticResponseSchema;
// -------------------------------------------
// Gerar QR Code de um location
// -------------------------------------------
export const PixGenerateQRCodeParamsSchema = z.object({
id: z.number(),
}).strict();
export const PixGenerateQRCodeResponseSchema = z.object({
qrcode: z.string(),
imagemQrcode: z.string(),
linkVisualizacao: z.string()
}).loose();
// -------------------------------------------
// Configuração de um Split de pagamento (sem passar id)
// -------------------------------------------
export const PixSplitConfigBodySchema = z.object({
descricao: z.string(),
txid: z.string().optional(),
lancamento: z.object({
imediato: z.boolean()
}).strict(),
split: z.object({
divisaoTarifa: z.enum(['assumir_total', 'proporcional']),
minhaParte: z.object({
tipo: z.enum(['porcentagem', 'fixo']),
valor: z.string().describe('60 = 60.00')
}).strict(),
repasses: z.array(z.object({
tipo: z.enum(['porcentagem', 'fixo']),
valor: z.string(),
favorecido: z.union([z.object({
cpf: z.string(),
conta: z.string()
}).strict(),
z.object({
cnpj: z.string(),
conta: z.string()
}).strict()])
}).strict())
}).strict()
}).strict();
export const PixSplitConfigResponseSchema = z.object({
id: z.string(),
status: z.string(),
txid: z.string().optional(),
descricao: z.string(),
lancamento: z.object({
imediato: z.boolean()
}),
split: z.object({
divisaoTarifa: z.enum(['assumir_total', 'proporcional']),
minhaParte: z.object({
tipo: z.enum(['porcentagem', 'fixo']),
valor: z.string().describe('60 = 60.00')
}).strict(),
repasses: z.array(z.object({
tipo: z.enum(['porcentagem', 'fixo']),
valor: z.string(),
favorecido: z.union([z.object({
cpf: z.string(),
conta: z.string()
}).strict(),
z.object({
cnpj: z.string(),
conta: z.string()
}).strict()])
}).strict())
}).strict()
}).loose();
// -------------------------------------------
// Configuração de um Split de pagamento (com id)
// -------------------------------------------
export const PixSplitConfigIdParamsSchema = z.object({
id: z.string(),
}).strict();
export const PixSplitConfigIdBodySchema = PixSplitConfigBodySchema;
export const PixSplitConfigIdResponseSchema = PixSplitConfigResponseSchema;
// -------------------------------------------
// Consultar configuração do Split por id
// -------------------------------------------
export const PixSplitDetailConfigParamsSchema = z.object({
id: z.string(),
revisao: z.number().optional()
}).strict();
export const PixSplitDetailConfigResponseSchema = PixSplitConfigResponseSchema.extend({
revisao: z.number()
}).loose();
// -------------------------------------------
// Vincular uma cobrança a um Split de pagamento
// -------------------------------------------
export const PixSplitLinkChargeParamsSchema = z.object({
txid: z.string(),
splitConfigId: z.string()
}).strict();
// -------------------------------------------
// Consultar cobrança com Split de pagamento por txid - Desativado
// -------------------------------------------
export const PixSplitDetailChargeParamsSchema = z.object({
txid: z.string()
}).strict();
export const PixSplitDetailChargeResponseSchema = PixDetailChargeResponseSchema.extend({
config: z.object({
id: z.string(),
status: z.string(),
descricao: z.string()
}).loose()
}).loose();
// -------------------------------------------
// Deletar o vínculo entre um Split de pagamento e uma cobrança
// -------------------------------------------
export const PixSplitUnlinkChargeParamsSchema = z.object({
txid: z.string(),
}).strict();
// -------------------------------------------
// Vincular uma cobrança com vencimento a um Split de pagamento por txid
// -------------------------------------------
export const PixSplitLinkDueChargeParamsSchema = PixSplitLinkChargeParamsSchema;
// ---------------------