1use serde::{Deserialize, Serialize};
2use serde_repr::{Deserialize_repr, Serialize_repr};
3use serde_with::skip_serializing_none;
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
8#[serde(rename_all = "camelCase")]
9pub struct SplitRepasse {
10 pub tipo: String,
11 pub valor: String,
12 pub favorecido: SplitFavorecido,
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize)]
16#[serde(rename_all = "camelCase")]
17pub struct SplitFavorecido {
18 pub cpf: String,
19 pub conta: String,
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize)]
23#[serde(rename_all = "camelCase")]
24pub struct SplitParte {
25 pub tipo: String,
26 pub valor: String,
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize)]
30#[serde(rename_all = "camelCase")]
31pub struct SplitPayload {
32 pub descricao: String,
33 pub lancamento: SplitLancamento,
34 pub split: SplitConfig,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize)]
38#[serde(rename_all = "camelCase")]
39pub struct SplitLancamento {
40 pub imediato: bool,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize)]
44#[serde(rename_all = "camelCase")]
45pub struct SplitConfig {
46 pub divisao_tarifa: String,
47 pub minha_parte: SplitParte,
48 pub repasses: Vec<SplitRepasse>,
49}
50
51#[skip_serializing_none]
52#[derive(Debug, Clone, Serialize, Deserialize)]
53#[serde(rename_all = "camelCase")]
54pub struct SplitConfigResponse {
55 pub id: String,
56 pub descricao: Option<String>,
57 pub lancamento: Option<SplitLancamento>,
58 pub split: Option<SplitConfig>,
59}
60
61#[skip_serializing_none]
62#[derive(Debug, Clone, Serialize, Deserialize)]
63#[serde(rename_all = "camelCase")]
64pub struct SplitLinkResponse {
65 pub status: String,
66 pub message: Option<String>,
67}
68
69#[skip_serializing_none]
72#[derive(Debug, Clone, Serialize, Deserialize)]
73#[serde(rename_all = "camelCase")]
74pub struct CobPayload {
75 pub calendario: CobCalendario,
76 pub devedor: Option<CobPessoa>,
77 pub valor: CobValor,
78 pub chave: String,
79 pub solicitacao_pagador: Option<String>,
80 pub info_adicionais: Option<Vec<CobInfoAdicional>>,
81}
82
83#[skip_serializing_none]
84#[derive(Debug, Clone, Serialize, Deserialize)]
85#[serde(rename_all = "camelCase")]
86pub struct CobCalendario {
87 pub data_de_vencimento: Option<String>,
88 pub validade_apos_vencimento: Option<i32>,
89}
90
91#[skip_serializing_none]
92#[derive(Debug, Clone, Serialize, Deserialize)]
93#[serde(rename_all = "camelCase")]
94pub struct CobPessoa {
95 pub cpf: Option<String>,
96 pub cnpj: Option<String>,
97 pub nome: Option<String>,
98}
99
100#[skip_serializing_none]
101#[derive(Debug, Clone, Serialize, Deserialize)]
102#[serde(rename_all = "camelCase")]
103pub struct CobValor {
104 pub original: String,
105 pub multa: Option<String>,
106 pub juros: Option<String>,
107 pub desconto: Option<String>,
108 pub abatimento: Option<String>,
109}
110
111#[derive(Debug, Clone, Serialize, Deserialize)]
112#[serde(rename_all = "camelCase")]
113pub struct CobInfoAdicional {
114 pub nome: String,
115 pub valor: String,
116}
117
118#[skip_serializing_none]
119#[derive(Debug, Clone, Serialize, Deserialize)]
120#[serde(rename_all = "camelCase")]
121pub struct CobResponse {
122 pub txid: String,
123 pub calendario: Option<CobCalendarioResponse>,
124 pub devedor: Option<CobPessoa>,
125 pub valor: Option<CobValor>,
126 pub chave: Option<String>,
127 pub solicitacao_pagador: Option<String>,
128 pub info_adicionais: Option<Vec<CobInfoAdicional>>,
129 pub br: Option<String>,
130 pub status: Option<String>,
131 pub criacao_date_time: Option<String>,
132}
133
134#[skip_serializing_none]
135#[derive(Debug, Clone, Serialize, Deserialize)]
136#[serde(rename_all = "camelCase")]
137pub struct CobCalendarioResponse {
138 pub criacao_date_time: Option<String>,
139 pub data_de_vencimento: Option<String>,
140 pub validade_apos_vencimento: Option<i32>,
141}
142
143#[skip_serializing_none]
146#[derive(Debug, Clone, Serialize, Deserialize)]
147#[serde(rename_all = "camelCase")]
148pub struct CobvPayload {
149 pub calendario: CobvCalendario,
150 pub devedor: Option<CobPessoa>,
151 pub valor: CobValor,
152 pub chave: String,
153 pub solicitacao_pagador: Option<String>,
154 pub info_adicionais: Option<Vec<CobInfoAdicional>>,
155}
156
157#[derive(Debug, Clone, Serialize, Deserialize)]
158#[serde(rename_all = "camelCase")]
159pub struct CobvCalendario {
160 pub data_de_vencimento: String,
161 pub validade_apos_vencimento: i32,
162}
163
164#[skip_serializing_none]
165#[derive(Debug, Clone, Serialize, Deserialize)]
166#[serde(rename_all = "camelCase")]
167pub struct CobvResponse {
168 pub txid: String,
169 pub calendario: Option<CobvCalendarioResponse>,
170 pub devedor: Option<CobPessoa>,
171 pub valor: Option<CobValor>,
172 pub chave: Option<String>,
173 pub solicitacao_pagador: Option<String>,
174 pub info_adicionais: Option<Vec<CobInfoAdicional>>,
175 pub br: Option<String>,
176 pub status: Option<String>,
177 pub criacao_date_time: Option<String>,
178}
179
180#[skip_serializing_none]
181#[derive(Debug, Clone, Serialize, Deserialize)]
182#[serde(rename_all = "camelCase")]
183pub struct CobvCalendarioResponse {
184 pub criacao_date_time: Option<String>,
185 pub data_de_vencimento: Option<String>,
186 pub validade_apos_vencimento: Option<i32>,
187}
188
189#[derive(Debug, Clone, Serialize, Deserialize)]
192pub struct WebhookPayload {
193 pub url: String,
194 pub chave: String,
195}
196
197#[skip_serializing_none]
198#[derive(Debug, Clone, Serialize, Deserialize)]
199#[serde(rename_all = "camelCase")]
200pub struct WebhookResponse {
201 pub id: String,
202 pub url: String,
203 pub chave: Option<String>,
204 pub criacao_date_time: Option<String>,
205}
206
207#[derive(Debug, Clone, Serialize, Deserialize)]
208pub struct WebhooksListResponse {
209 pub webhooks: Vec<WebhookResponse>,
210}
211
212#[skip_serializing_none]
215#[derive(Debug, Clone, Serialize, Deserialize)]
216#[serde(rename_all = "camelCase")]
217pub struct PixTransactionPayload {
218 pub valor: String,
219 pub chave_destino: String,
220 pub descricao: Option<String>,
221 pub idempotency_key: Option<String>,
222}
223
224#[skip_serializing_none]
225#[derive(Debug, Clone, Serialize, Deserialize)]
226#[serde(rename_all = "camelCase")]
227pub struct PixTransactionResponse {
228 pub id: String,
229 pub end_to_end_id: String,
230 pub valor: String,
231 pub status: String,
232 pub chave_destino: Option<String>,
233 pub data_hora: Option<String>,
234}
235
236#[skip_serializing_none]
237#[derive(Debug, Clone, Serialize, Deserialize)]
238#[serde(rename_all = "camelCase")]
239pub struct PixTransactionDetailResponse {
240 pub id: String,
241 pub end_to_end_id: String,
242 pub valor: String,
243 pub status: String,
244 pub chave_destino: Option<String>,
245 pub chave_origem: Option<String>,
246 pub data_hora: Option<String>,
247 pub motivo_cancelamento: Option<String>,
248}
249
250#[skip_serializing_none]
253#[derive(Debug, Clone, Serialize, Deserialize)]
254pub struct BillingRepasse {
255 pub payee_code: String,
256 pub percentage: Option<i32>,
258 pub fixed: Option<i32>,
259}
260
261#[derive(Debug, Clone, Serialize_repr, Deserialize_repr)]
262#[repr(u8)]
263pub enum BillingRepasseType {
264 IssuerOnly = 1,
266 Proportional = 2,
268}
269
270#[derive(Debug, Clone, Serialize, Deserialize)]
271pub struct BillingMarketplace {
272 pub repasses: Vec<BillingRepasse>,
273 pub mode: BillingRepasseType,
274}
275
276#[derive(Debug, Clone, Serialize, Deserialize)]
277pub struct BillingMarketplaceResponse {
278 pub repasses: Vec<BillingRepasse>,
279}
280
281#[skip_serializing_none]
282#[derive(Debug, Clone, Serialize, Deserialize)]
283pub struct BillingItem {
284 pub name: String,
285 pub value: i64,
286 pub amount: i32,
287 pub marketplace: Option<BillingMarketplace>,
288}
289
290#[skip_serializing_none]
291#[derive(Debug, Clone, Serialize, Deserialize)]
292pub struct BillingItemResponse {
293 pub name: String,
294 pub value: i64,
295 pub amount: i32,
296 pub marketplace: Option<BillingMarketplaceResponse>,
297}
298
299#[derive(Debug, Clone, Serialize, Deserialize)]
300pub struct BillingShipping {
301 pub name: String,
302 pub value: i64,
303}
304
305#[skip_serializing_none]
306#[derive(Debug, Clone, Serialize, Deserialize)]
307pub struct BillingAddress {
308 pub street: Option<String>,
309 pub number: Option<String>,
310 pub neighborhood: Option<String>,
311 pub zipcode: Option<String>,
312 pub city: Option<String>,
313 pub complement: Option<String>,
314 pub state: Option<String>,
315}
316
317#[derive(Debug, Clone, Serialize, Deserialize)]
318pub struct BillingJuridicalPerson {
319 pub corporate_name: String,
320 pub cnpj: String,
321}
322
323#[skip_serializing_none]
324#[derive(Debug, Clone, Serialize, Deserialize)]
325pub struct BillingCustomer {
326 pub name: Option<String>,
327 pub cpf: Option<String>,
328 pub email: Option<String>,
329 pub birth: Option<String>,
330 pub phone_number: Option<String>,
331 pub address: Option<BillingAddress>,
332 pub juridical_person: Option<BillingJuridicalPerson>,
333}
334
335#[skip_serializing_none]
336#[derive(Debug, Clone, Serialize, Deserialize)]
337pub struct BillingBilletConfigurations {
338 pub fine: Option<i64>,
339 pub interest: Option<i64>,
340}
341
342#[skip_serializing_none]
343#[derive(Debug, Clone, Serialize, Deserialize)]
344pub struct BillingBankingBillet {
345 pub expire_at: Option<String>,
346 pub customer: BillingCustomer,
347 pub configurations: Option<BillingBilletConfigurations>,
348 pub message: Option<String>,
349}
350
351#[skip_serializing_none]
352#[derive(Debug, Clone, Serialize, Deserialize)]
353pub struct BillingPayment {
354 pub banking_billet: Option<BillingBankingBillet>,
355 pub credit_card: Option<BillingCreditCard>,
356}
357
358#[skip_serializing_none]
359#[derive(Debug, Clone, Serialize, Deserialize)]
360pub struct BillingCreditCard {
361 pub customer: BillingCustomer,
362 pub installments: i32,
363 pub payment_token: String,
364 pub billing_address: Option<BillingAddress>,
365}
366
367#[skip_serializing_none]
368#[derive(Debug, Clone, Serialize, Deserialize)]
369pub struct BillingChargeMetadata {
370 pub notification_url: Option<String>,
373 pub custom_id: Option<String>,
377}
378
379#[skip_serializing_none]
380#[derive(Debug, Clone, Serialize, Deserialize)]
381pub struct BillingChargeCreateRequest {
382 pub items: Vec<BillingItem>,
383 pub metadata: Option<BillingChargeMetadata>,
384}
385
386#[skip_serializing_none]
387#[derive(Debug, Clone, Serialize, Deserialize)]
388pub struct BillingChargeOneStepRequest {
389 pub items: Vec<BillingItem>,
390 pub shippings: Option<Vec<BillingShipping>>,
391 pub payment: BillingPayment,
392 pub metadata: Option<BillingChargeMetadata>,
393}
394
395#[derive(Debug, Clone, Serialize, Deserialize)]
396pub struct BillingChargePayRequest {
397 pub payment: BillingPayment,
398}
399
400#[derive(Debug, Clone, Serialize, Deserialize)]
401pub struct BillingChargeResponse {
402 pub code: i32,
403 pub data: BillingChargeData,
404}
405
406#[derive(Debug, Clone, Serialize, Deserialize)]
407pub struct BillingChargeDetailResponse {
408 pub code: i32,
409 pub data: BillingChargeDetailData,
410}
411
412#[skip_serializing_none]
413#[derive(Debug, Clone, Serialize, Deserialize)]
414pub struct BillingChargeDetailData {
415 pub charge_id: i64,
416 pub total: i64,
417 pub status: String,
418 pub custom_id: Option<String>,
419 pub created_at: String,
420 pub notification_url: Option<String>,
421 pub items: Vec<BillingItemResponse>,
422 pub history: Vec<BillingChargeHistoryEntry>,
423 pub shippings: Option<Vec<BillingChargeShipping>>,
424 pub customer: Option<BillingCustomer>,
425 pub payment: BillingChargeDetailPayment,
426}
427
428#[skip_serializing_none]
429#[derive(Debug, Clone, Serialize, Deserialize)]
430pub struct BillingChargeHistoryEntry {
431 pub message: String,
432 pub created_at: String,
433}
434
435#[skip_serializing_none]
436#[derive(Debug, Clone, Serialize, Deserialize)]
437pub struct BillingChargeShipping {
438 pub name: String,
439 pub value: i64,
440 pub payee_code: Option<String>,
441}
442
443#[skip_serializing_none]
444#[derive(Debug, Clone, Serialize, Deserialize)]
445pub struct BillingChargeDetailPayment {
446 pub method: String,
447 pub created_at: String,
448 pub message: Option<String>,
449 pub banking_billet: BillingChargeDetailBankingBillet,
450 pub credit_card: Option<serde_json::Value>,
451}
452
453#[skip_serializing_none]
454#[derive(Debug, Clone, Serialize, Deserialize)]
455pub struct BillingChargeDetailBankingBillet {
456 pub barcode: String,
457 pub pix: BillingPix,
458 pub link: String,
459 pub billet_link: String,
460 pub pdf: BillingPdf,
461 pub expire_at: String,
462}
463
464#[skip_serializing_none]
465#[derive(Debug, Clone, Serialize, Deserialize)]
466pub struct BillingChargeData {
467 pub barcode: String,
468 #[serde(rename = "pix")]
469 pub pix: Option<BillingPix>,
470 pub link: String,
471 pub billet_link: String,
472 pub pdf: BillingPdf,
473 pub expire_at: String,
474 pub charge_id: i64,
475 pub status: String,
476 pub total: i64,
477 pub payment: String,
478}
479
480#[skip_serializing_none]
481#[derive(Debug, Clone, Serialize, Deserialize)]
482pub struct BillingPix {
483 pub qrcode: String,
484 pub qrcode_image: String,
485}
486
487#[derive(Debug, Clone, Serialize, Deserialize)]
488pub struct BillingPdf {
489 pub charge: String,
490}
491
492#[skip_serializing_none]
495#[derive(Debug, Clone, Serialize, Deserialize)]
496pub struct CarnetCustomer {
497 pub name: Option<String>,
498 pub cpf: Option<String>,
499 pub cnpj: Option<String>,
500 pub email: Option<String>,
501 pub phone_number: Option<String>,
502 pub birth: Option<String>,
503 pub juridical_person: Option<BillingJuridicalPerson>,
504}
505
506#[skip_serializing_none]
507#[derive(Debug, Clone, Serialize, Deserialize)]
508pub struct CarnetCreateRequest {
509 pub items: Vec<BillingItem>,
510 pub customer: CarnetCustomer,
511 pub expire_at: String,
512 pub message: Option<String>,
513 pub repeats: i32,
514 pub split_items: Option<bool>,
515 pub metadata: Option<CarnetMetadataRequest>,
516 pub configurations: Option<BillingBilletConfigurations>,
517}
518
519#[skip_serializing_none]
520#[derive(Debug, Clone, Serialize, Deserialize)]
521pub struct CarnetMetadataRequest {
522 pub notification_url: Option<String>,
523 pub custom_id: Option<String>,
524}
525
526#[derive(Debug, Clone, Serialize, Deserialize)]
527pub struct CarnetParcelRequest {
528 pub expire_at: String,
529}
530
531#[derive(Debug, Clone, Serialize, Deserialize)]
532pub struct CarnetParcelsRequest {
533 pub parcels: Vec<CarnetParcel>,
534}
535
536#[derive(Debug, Clone, Serialize, Deserialize)]
537pub struct CarnetParcel {
538 pub parcel: i32,
539 pub expire_at: String,
540}
541
542#[derive(Debug, Clone, Serialize, Deserialize)]
543pub struct CarnetHistoryRequest {
544 pub description: String,
545}
546
547#[skip_serializing_none]
548#[derive(Debug, Clone, Serialize, Deserialize)]
549pub struct CarnetData {
550 pub carnet_id: i64,
551 pub status: String,
552 pub cover: String,
553 pub link: String,
554 pub carnet_link: String,
555 pub pdf: CarnetPdf,
556 pub charges: Vec<CarnetCharge>,
557}
558
559#[skip_serializing_none]
560#[derive(Debug, Clone, Serialize, Deserialize)]
561pub struct CarnetPdf {
562 pub carnet: String,
563 pub cover: String,
564}
565
566#[skip_serializing_none]
567#[derive(Debug, Clone, Serialize, Deserialize)]
568pub struct CarnetCharge {
569 pub charge_id: i64,
570 pub parcel: String,
571 pub status: String,
572 pub value: i64,
573 pub expire_at: String,
574 pub url: String,
575 pub parcel_link: String,
576 pub pdf: CarnetChargePdf,
577 pub barcode: String,
578 pub pix: BillingPix,
579}
580
581#[skip_serializing_none]
582#[derive(Debug, Clone, Serialize, Deserialize)]
583pub struct CarnetChargePdf {
584 pub charge: String,
585}
586
587#[skip_serializing_none]
588#[derive(Debug, Clone, Serialize, Deserialize)]
589pub struct CarnetResponse {
590 pub code: i32,
591 pub data: CarnetData,
592}
593
594#[derive(Debug, Clone, Serialize, Deserialize)]
595pub struct BillingNotificationResponse {
596 pub code: i32,
597 pub data: Vec<BillingNotificationData>,
598}
599
600#[skip_serializing_none]
601#[derive(Debug, Clone, Serialize, Deserialize)]
602pub struct BillingNotificationData {
603 pub created_at: String,
604 pub custom_id: Option<String>,
605 pub id: i64,
606 pub identifiers: BillingNotificationIdentifiers,
607 pub status: BillingNotificationStatus,
608 #[serde(rename = "type")]
609 pub r#type: String,
610 pub received_by_bank_at: Option<String>,
611 pub value: Option<i64>,
612}
613
614#[derive(Debug, Clone, Serialize, Deserialize)]
615pub struct BillingNotificationIdentifiers {
616 pub charge_id: i64,
617}
618
619#[derive(Debug, Clone, Serialize, Deserialize)]
620pub struct BillingNotificationStatus {
621 pub current: String,
622 pub previous: Option<String>,
623}