UNPKG

sdk-node-apis-efi

Version:

Module for integration with Efi Bank API

1,537 lines 66 kB
/// <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; // ---------------------