@dueheads/citi-bank-boleto-sdk
Version:
SDK para registro de boletos na API do Citibank via mTLS.
191 lines (190 loc) • 4.72 kB
TypeScript
/**
* Representa os dados do beneficiário no formato da aplicação.
*/
export interface BeneficiarioData {
identificador: string;
inscricao: string;
tipo: 'F' | 'J';
convenio: string;
nome: string;
}
/**
* Representa um endereço.
*/
export interface Endereco {
cep: string | null;
logradouro: string | null;
numero: string | null;
complemento: string | null;
bairro: string | null;
cidade: string | null;
uf: string | null;
}
/**
* Representa os dados do pagador no formato da aplicação.
*/
export interface PagadorData {
tipo_inscricao: '1' | '2';
inscricao: string;
nome: string;
email: string | null;
endereco: Endereco;
}
/**
* Representa os dados do sacador no formato da aplicação.
*/
export interface SacadorData {
tipo_inscricao: '1' | '2' | null;
inscricao: string | null;
nome: string | null;
email: string | null;
endereco: Endereco;
}
/**
* Representa os dados do documento/título no formato da aplicação.
*/
export interface DocumentoData {
numero: string;
nosso_numero: string;
especie: string;
valor: string;
data_emissao: string;
data_vencimento: string;
data_processamento: string;
mensagem: string;
pagamento_parcial: {
permitido: boolean | null;
quantidade: number | null;
};
protesto: any | null;
multa: any | null;
juros: any | null;
desconto: any | null;
pix_cobranca: any | null;
}
/**
* Representa o payload completo para a criação de um boleto no formato da sua aplicação.
*/
export interface BoletoPayload {
dadosBeneficiario: BeneficiarioData;
dados: {
pagador: PagadorData;
sacador: SacadorData | null;
documento: DocumentoData;
};
}
/**
* Representa o estado parcial do boleto durante a construção com o Builder.
* Esta interface permite que as propriedades sejam adicionadas gradualmente.
*/
export interface BoletoBuilderPayload {
dadosBeneficiario?: BeneficiarioData;
dados?: {
pagador?: PagadorData;
sacador?: SacadorData | null;
documento?: DocumentoData;
};
}
/**
* Configuração inicial para o SDK do Citibank.
*/
export interface CitiBankSDKConfig {
certPath: string;
keyPath: string;
rejectUnauthorized?: boolean;
timeout?: number;
baseURL?: string;
debug?: boolean;
validateSchema?: boolean;
}
/**
* Representa a estrutura de dados completa para o registro de um boleto,
* seguindo o layout do arquivo "Layout Cobrança XML_v2.2 1.pdf".
*/
export interface BoletoData {
GrpBenf: {
CdtrNm: string;
CdtrTaxId: string;
CdtrTaxTp: 'F' | 'J';
CdtrId: string;
};
GrpClPgd: {
DbtrNm: string;
DbtrTaxId: string;
DbtrTaxTp: 'F' | 'J';
GrpClPgdAdr: {
DbtrAdrTp: string;
DbtrCtrySubDvsn: string;
DbtrPstCd: string;
DbtrTwnNm: string;
};
};
DbtrGrntNm?: string | null;
DbtrMsg?: string | null;
TitlAmt: number;
TitlBarCdInd: '0' | '1' | '4';
TitlCcyCd: '09';
TitlCiaCdId: string;
TitlDueDt: string;
TitlInstrNmDtExec?: string;
TitlInstrProtInd?: '1' | '';
TitlInstrWrtOffInd?: '1' | '2' | '';
TitlIOFAmt?: number;
TitlIssDt: string;
TitlOurNb: string;
TitlPortCd: '1';
TitlRbtAmt?: number;
TitlTpCd: '03' | any;
TitlYourNb: string;
GrpDscnt?: Array<{
TitlDscntAmtOrPrct: number;
TitlDscntEndDt?: string;
TitlDscntTp: '1' | '2';
}>;
GrpItrs?: {
TitlItrsAmtOrPrct: number;
TitlItrsStrDt?: string;
TitlItrsTp: '1' | '3';
};
GrpFn?: {
TitlFnAmtOrPrct: number;
TitlFnStrDt?: string;
TitlFnTp: '1' | '2';
};
}
/**
* Resposta em caso de sucesso no registro (actionCode = "0").
*/
export interface SuccessResponse {
success: Boolean;
message?: string;
barcode: string;
linhaDigitavel: string;
linhaDigitavelFormatada?: string;
}
/**
* Detalhe de um erro específico na resposta (actionCode = "99").
*/
export interface ErrorDetail {
errorCode: string;
fieldName: string;
description: string;
}
/**
* Resposta em caso de erro de negócio (actionCode = "99").
*/
export interface ErrorResponse {
success: Boolean;
errorCode: '99';
reason: string;
errors: ErrorDetail[];
}
/**
* Resposta para erros de infraestrutura (HTTP 500), no formato SOAP Fault.
*/
export interface SoapFaultResponse {
httpStatus: number;
faultCode: string;
faultString: string;
}
export type ApiResponse = SuccessResponse | ErrorResponse | SoapFaultResponse;