intifact 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3070 @@
1
+ /**
2
+ * This file was auto-generated by openapi-typescript.
3
+ * Do not make direct changes to the file.
4
+ */
5
+ export interface paths {
6
+ "/health": {
7
+ parameters: {
8
+ query?: never;
9
+ header?: never;
10
+ path?: never;
11
+ cookie?: never;
12
+ };
13
+ /** Health check del servicio (DB + Redis + SUNAT env) */
14
+ get: {
15
+ parameters: {
16
+ query?: never;
17
+ header?: never;
18
+ path?: never;
19
+ cookie?: never;
20
+ };
21
+ requestBody?: never;
22
+ responses: {
23
+ /** @description Default Response */
24
+ 200: {
25
+ headers: {
26
+ [name: string]: unknown;
27
+ };
28
+ content?: never;
29
+ };
30
+ };
31
+ };
32
+ put?: never;
33
+ post?: never;
34
+ delete?: never;
35
+ options?: never;
36
+ head?: never;
37
+ patch?: never;
38
+ trace?: never;
39
+ };
40
+ "/api/v1/invoice/send": {
41
+ parameters: {
42
+ query?: never;
43
+ header?: never;
44
+ path?: never;
45
+ cookie?: never;
46
+ };
47
+ get?: never;
48
+ put?: never;
49
+ /**
50
+ * Enviar factura (01) o boleta (03) a SUNAT
51
+ * @description Genera el XML UBL 2.1, lo firma digitalmente y lo encola para envío asíncrono a SUNAT. Responde 202 inmediatamente. Para conocer el resultado final consultar GET /documents/{id}.
52
+ */
53
+ post: {
54
+ parameters: {
55
+ query?: never;
56
+ header?: never;
57
+ path?: never;
58
+ cookie?: never;
59
+ };
60
+ requestBody: {
61
+ content: {
62
+ "application/json": {
63
+ /** @default 0101 */
64
+ tipoOperacion?: string;
65
+ /** @enum {string} */
66
+ tipoDoc: "01" | "03";
67
+ serie: string;
68
+ correlativo: string;
69
+ /** @default PEN */
70
+ tipoMoneda?: string;
71
+ fechaEmision: string;
72
+ empresaRuc: string;
73
+ /** @default 0000 */
74
+ establecimientoCodigo?: string;
75
+ clienteTipoDoc: string;
76
+ clienteNumDoc: string;
77
+ clienteRazonSocial: string;
78
+ clienteDireccion?: string;
79
+ /** @default 0 */
80
+ montoOperGravadas?: number;
81
+ /** @default 0 */
82
+ montoOperExoneradas?: number;
83
+ /** @default 0 */
84
+ montoOperInafectas?: number;
85
+ /** @default 0 */
86
+ montoOperGratuitas?: number;
87
+ montoIgv: number;
88
+ totalImpuestos: number;
89
+ valorVenta: number;
90
+ subTotal: number;
91
+ montoImpVenta: number;
92
+ detalle: {
93
+ unidad: string;
94
+ cantidad: number;
95
+ codProducto: string;
96
+ descripcion: string;
97
+ montoValorUnitario: number;
98
+ montoBaseIgv: number;
99
+ /** @default 18 */
100
+ porcentajeIgv?: number;
101
+ igv: number;
102
+ /** @default 10 */
103
+ tipAfeIgv?: string;
104
+ totalImpuestos: number;
105
+ montoPrecioUnitario: number;
106
+ montoValorVenta: number;
107
+ /** @default 0 */
108
+ factorIcbper?: number;
109
+ codProdSunat?: string;
110
+ }[];
111
+ formaPago: {
112
+ /** @enum {string} */
113
+ tipo: "Contado" | "Credito";
114
+ monto: number;
115
+ /** @default 0 */
116
+ cuota?: number;
117
+ fechaPago: string;
118
+ }[];
119
+ leyendas: {
120
+ legendCode: string;
121
+ legendValue: string;
122
+ }[];
123
+ };
124
+ };
125
+ };
126
+ responses: {
127
+ /** @description Default Response */
128
+ 202: {
129
+ headers: {
130
+ [name: string]: unknown;
131
+ };
132
+ content: {
133
+ "application/json": {
134
+ success: boolean;
135
+ message: string;
136
+ data?: {
137
+ /** Format: uuid */
138
+ id: string;
139
+ estado: string;
140
+ hash: string | null;
141
+ signatureValue: string | null;
142
+ jobId?: string;
143
+ };
144
+ };
145
+ };
146
+ };
147
+ /** @description Default Response */
148
+ 400: {
149
+ headers: {
150
+ [name: string]: unknown;
151
+ };
152
+ content: {
153
+ "application/json": {
154
+ /** @enum {boolean} */
155
+ success: false;
156
+ message: string;
157
+ code?: string;
158
+ errors?: {
159
+ path: string;
160
+ message: string;
161
+ }[];
162
+ };
163
+ };
164
+ };
165
+ /** @description Default Response */
166
+ 409: {
167
+ headers: {
168
+ [name: string]: unknown;
169
+ };
170
+ content: {
171
+ "application/json": {
172
+ /** @enum {boolean} */
173
+ success: false;
174
+ message: string;
175
+ code?: string;
176
+ errors?: {
177
+ path: string;
178
+ message: string;
179
+ }[];
180
+ };
181
+ };
182
+ };
183
+ };
184
+ };
185
+ delete?: never;
186
+ options?: never;
187
+ head?: never;
188
+ patch?: never;
189
+ trace?: never;
190
+ };
191
+ "/api/v1/invoice/{id}/pdf": {
192
+ parameters: {
193
+ query?: never;
194
+ header?: never;
195
+ path?: never;
196
+ cookie?: never;
197
+ };
198
+ /** Obtener PDF (A4 oficina, ticket 80mm o ticket 58mm POS) */
199
+ get: {
200
+ parameters: {
201
+ query?: {
202
+ format?: "a4" | "ticket" | "ticket80" | "ticket58";
203
+ };
204
+ header?: never;
205
+ path: {
206
+ id: string;
207
+ };
208
+ cookie?: never;
209
+ };
210
+ requestBody?: never;
211
+ responses: {
212
+ /** @description Default Response */
213
+ 200: {
214
+ headers: {
215
+ [name: string]: unknown;
216
+ };
217
+ content?: never;
218
+ };
219
+ };
220
+ };
221
+ put?: never;
222
+ post?: never;
223
+ delete?: never;
224
+ options?: never;
225
+ head?: never;
226
+ patch?: never;
227
+ trace?: never;
228
+ };
229
+ "/api/v1/invoice/{id}/xml": {
230
+ parameters: {
231
+ query?: never;
232
+ header?: never;
233
+ path?: never;
234
+ cookie?: never;
235
+ };
236
+ /** Descargar XML firmado */
237
+ get: {
238
+ parameters: {
239
+ query?: never;
240
+ header?: never;
241
+ path: {
242
+ id: string;
243
+ };
244
+ cookie?: never;
245
+ };
246
+ requestBody?: never;
247
+ responses: {
248
+ /** @description Default Response */
249
+ 200: {
250
+ headers: {
251
+ [name: string]: unknown;
252
+ };
253
+ content?: never;
254
+ };
255
+ };
256
+ };
257
+ put?: never;
258
+ post?: never;
259
+ delete?: never;
260
+ options?: never;
261
+ head?: never;
262
+ patch?: never;
263
+ trace?: never;
264
+ };
265
+ "/api/v1/invoice/{id}/cdr": {
266
+ parameters: {
267
+ query?: never;
268
+ header?: never;
269
+ path?: never;
270
+ cookie?: never;
271
+ };
272
+ /** Descargar CDR (constancia de SUNAT) */
273
+ get: {
274
+ parameters: {
275
+ query?: never;
276
+ header?: never;
277
+ path: {
278
+ id: string;
279
+ };
280
+ cookie?: never;
281
+ };
282
+ requestBody?: never;
283
+ responses: {
284
+ /** @description Default Response */
285
+ 200: {
286
+ headers: {
287
+ [name: string]: unknown;
288
+ };
289
+ content?: never;
290
+ };
291
+ };
292
+ };
293
+ put?: never;
294
+ post?: never;
295
+ delete?: never;
296
+ options?: never;
297
+ head?: never;
298
+ patch?: never;
299
+ trace?: never;
300
+ };
301
+ "/api/v1/note/send": {
302
+ parameters: {
303
+ query?: never;
304
+ header?: never;
305
+ path?: never;
306
+ cookie?: never;
307
+ };
308
+ get?: never;
309
+ put?: never;
310
+ /**
311
+ * Enviar nota de crédito (07) o débito (08) a SUNAT
312
+ * @description Genera XML UBL 2.1, firma y encola. Responde 202. Consultar GET /documents/{id} para el resultado final.
313
+ */
314
+ post: {
315
+ parameters: {
316
+ query?: never;
317
+ header?: never;
318
+ path?: never;
319
+ cookie?: never;
320
+ };
321
+ requestBody: {
322
+ content: {
323
+ "application/json": {
324
+ /** @default 0101 */
325
+ tipoOperacion?: string;
326
+ /** @enum {string} */
327
+ tipoDoc: "07" | "08";
328
+ serie: string;
329
+ correlativo: string;
330
+ /** @default PEN */
331
+ tipoMoneda?: string;
332
+ fechaEmision: string;
333
+ empresaRuc: string;
334
+ /** @default 0000 */
335
+ establecimientoCodigo?: string;
336
+ clienteTipoDoc: string;
337
+ clienteNumDoc: string;
338
+ clienteRazonSocial: string;
339
+ clienteDireccion?: string;
340
+ /** @enum {string} */
341
+ afectadoTipoDoc: "01" | "03";
342
+ afectadoNumDoc: string;
343
+ motivoCod: string;
344
+ motivoDes: string;
345
+ /** @default 0 */
346
+ montoOperGravadas?: number;
347
+ /** @default 0 */
348
+ montoOperExoneradas?: number;
349
+ /** @default 0 */
350
+ montoOperInafectas?: number;
351
+ montoIgv: number;
352
+ totalImpuestos: number;
353
+ valorVenta: number;
354
+ subTotal: number;
355
+ montoImpVenta: number;
356
+ detalle: {
357
+ unidad: string;
358
+ cantidad: number;
359
+ codProducto: string;
360
+ descripcion: string;
361
+ montoValorUnitario: number;
362
+ montoBaseIgv: number;
363
+ /** @default 18 */
364
+ porcentajeIgv?: number;
365
+ igv: number;
366
+ /** @default 10 */
367
+ tipAfeIgv?: string;
368
+ totalImpuestos: number;
369
+ montoPrecioUnitario: number;
370
+ montoValorVenta: number;
371
+ /** @default 0 */
372
+ factorIcbper?: number;
373
+ codProdSunat?: string;
374
+ }[];
375
+ leyendas: {
376
+ legendCode: string;
377
+ legendValue: string;
378
+ }[];
379
+ observacion?: string;
380
+ };
381
+ };
382
+ };
383
+ responses: {
384
+ /** @description Default Response */
385
+ 202: {
386
+ headers: {
387
+ [name: string]: unknown;
388
+ };
389
+ content: {
390
+ "application/json": {
391
+ success: boolean;
392
+ message: string;
393
+ data?: {
394
+ /** Format: uuid */
395
+ id: string;
396
+ estado: string;
397
+ hash: string | null;
398
+ signatureValue: string | null;
399
+ jobId?: string;
400
+ };
401
+ };
402
+ };
403
+ };
404
+ /** @description Default Response */
405
+ 400: {
406
+ headers: {
407
+ [name: string]: unknown;
408
+ };
409
+ content: {
410
+ "application/json": {
411
+ /** @enum {boolean} */
412
+ success: false;
413
+ message: string;
414
+ code?: string;
415
+ errors?: {
416
+ path: string;
417
+ message: string;
418
+ }[];
419
+ };
420
+ };
421
+ };
422
+ /** @description Default Response */
423
+ 409: {
424
+ headers: {
425
+ [name: string]: unknown;
426
+ };
427
+ content: {
428
+ "application/json": {
429
+ /** @enum {boolean} */
430
+ success: false;
431
+ message: string;
432
+ code?: string;
433
+ errors?: {
434
+ path: string;
435
+ message: string;
436
+ }[];
437
+ };
438
+ };
439
+ };
440
+ };
441
+ };
442
+ delete?: never;
443
+ options?: never;
444
+ head?: never;
445
+ patch?: never;
446
+ trace?: never;
447
+ };
448
+ "/api/v1/note/{id}/pdf": {
449
+ parameters: {
450
+ query?: never;
451
+ header?: never;
452
+ path?: never;
453
+ cookie?: never;
454
+ };
455
+ /** Obtener PDF de la nota */
456
+ get: {
457
+ parameters: {
458
+ query?: never;
459
+ header?: never;
460
+ path: {
461
+ id: string;
462
+ };
463
+ cookie?: never;
464
+ };
465
+ requestBody?: never;
466
+ responses: {
467
+ /** @description Default Response */
468
+ 200: {
469
+ headers: {
470
+ [name: string]: unknown;
471
+ };
472
+ content?: never;
473
+ };
474
+ };
475
+ };
476
+ put?: never;
477
+ post?: never;
478
+ delete?: never;
479
+ options?: never;
480
+ head?: never;
481
+ patch?: never;
482
+ trace?: never;
483
+ };
484
+ "/api/v1/note/{id}/xml": {
485
+ parameters: {
486
+ query?: never;
487
+ header?: never;
488
+ path?: never;
489
+ cookie?: never;
490
+ };
491
+ /** Descargar XML firmado */
492
+ get: {
493
+ parameters: {
494
+ query?: never;
495
+ header?: never;
496
+ path: {
497
+ id: string;
498
+ };
499
+ cookie?: never;
500
+ };
501
+ requestBody?: never;
502
+ responses: {
503
+ /** @description Default Response */
504
+ 200: {
505
+ headers: {
506
+ [name: string]: unknown;
507
+ };
508
+ content?: never;
509
+ };
510
+ };
511
+ };
512
+ put?: never;
513
+ post?: never;
514
+ delete?: never;
515
+ options?: never;
516
+ head?: never;
517
+ patch?: never;
518
+ trace?: never;
519
+ };
520
+ "/api/v1/despatch/send": {
521
+ parameters: {
522
+ query?: never;
523
+ header?: never;
524
+ path?: never;
525
+ cookie?: never;
526
+ };
527
+ get?: never;
528
+ put?: never;
529
+ /**
530
+ * Enviar guía de remisión (09) via API GRE REST
531
+ * @description Genera XML UBL 2.1, firma y encola. El worker obtiene token OAuth2, envía a SUNAT GRE, guarda ticket y luego hace polling de getStatus.
532
+ */
533
+ post: {
534
+ parameters: {
535
+ query?: never;
536
+ header?: never;
537
+ path?: never;
538
+ cookie?: never;
539
+ };
540
+ requestBody: {
541
+ content: {
542
+ "application/json": {
543
+ /** @enum {string} */
544
+ tipoDoc: "09";
545
+ serie: string;
546
+ correlativo: string;
547
+ observacion?: string;
548
+ fechaEmision: string;
549
+ empresaRuc: string;
550
+ /** @default 0000 */
551
+ establecimientoCodigo?: string;
552
+ clienteTipoDoc: string;
553
+ clienteNumDoc: string;
554
+ clienteRazonSocial: string;
555
+ clienteDireccion?: string;
556
+ guiaCodTraslado: string;
557
+ /** @enum {string} */
558
+ guiaModTraslado: "01" | "02";
559
+ guiaPesoTotal: number;
560
+ /** @default KGM */
561
+ guiaUndPesoTotal?: string;
562
+ guiaFecTraslado: string;
563
+ guiaVehiculoPlaca?: string;
564
+ transportistaTipoDoc?: string;
565
+ transportistaNumDoc?: string;
566
+ transportistaRazonSocial?: string;
567
+ guiaPartidaUbigeo: string;
568
+ guiaPartidaDireccion: string;
569
+ guiaLlegadaUbigeo: string;
570
+ guiaLlegadaDireccion: string;
571
+ chofer?: {
572
+ /** @enum {string} */
573
+ tipo: "Principal" | "Secundario";
574
+ tipoDoc: string;
575
+ nroDoc: string;
576
+ licencia: string;
577
+ nombres: string;
578
+ apellidos: string;
579
+ }[];
580
+ detalle: {
581
+ unidad: string;
582
+ cantidad: number;
583
+ codProducto: string;
584
+ descripcion: string;
585
+ }[];
586
+ };
587
+ };
588
+ };
589
+ responses: {
590
+ /** @description Default Response */
591
+ 202: {
592
+ headers: {
593
+ [name: string]: unknown;
594
+ };
595
+ content: {
596
+ "application/json": {
597
+ success: boolean;
598
+ message: string;
599
+ data?: {
600
+ /** Format: uuid */
601
+ id: string;
602
+ estado: string;
603
+ hash: string | null;
604
+ signatureValue: string | null;
605
+ jobId?: string;
606
+ };
607
+ };
608
+ };
609
+ };
610
+ /** @description Default Response */
611
+ 400: {
612
+ headers: {
613
+ [name: string]: unknown;
614
+ };
615
+ content: {
616
+ "application/json": {
617
+ /** @enum {boolean} */
618
+ success: false;
619
+ message: string;
620
+ code?: string;
621
+ errors?: {
622
+ path: string;
623
+ message: string;
624
+ }[];
625
+ };
626
+ };
627
+ };
628
+ /** @description Default Response */
629
+ 409: {
630
+ headers: {
631
+ [name: string]: unknown;
632
+ };
633
+ content: {
634
+ "application/json": {
635
+ /** @enum {boolean} */
636
+ success: false;
637
+ message: string;
638
+ code?: string;
639
+ errors?: {
640
+ path: string;
641
+ message: string;
642
+ }[];
643
+ };
644
+ };
645
+ };
646
+ };
647
+ };
648
+ delete?: never;
649
+ options?: never;
650
+ head?: never;
651
+ patch?: never;
652
+ trace?: never;
653
+ };
654
+ "/api/v1/despatch/{id}/xml": {
655
+ parameters: {
656
+ query?: never;
657
+ header?: never;
658
+ path?: never;
659
+ cookie?: never;
660
+ };
661
+ /** Descargar XML firmado de la guía */
662
+ get: {
663
+ parameters: {
664
+ query?: never;
665
+ header?: never;
666
+ path: {
667
+ id: string;
668
+ };
669
+ cookie?: never;
670
+ };
671
+ requestBody?: never;
672
+ responses: {
673
+ /** @description Default Response */
674
+ 200: {
675
+ headers: {
676
+ [name: string]: unknown;
677
+ };
678
+ content?: never;
679
+ };
680
+ };
681
+ };
682
+ put?: never;
683
+ post?: never;
684
+ delete?: never;
685
+ options?: never;
686
+ head?: never;
687
+ patch?: never;
688
+ trace?: never;
689
+ };
690
+ "/api/v1/despatch/{id}/pdf": {
691
+ parameters: {
692
+ query?: never;
693
+ header?: never;
694
+ path?: never;
695
+ cookie?: never;
696
+ };
697
+ /** Obtener PDF de la guía de remisión */
698
+ get: {
699
+ parameters: {
700
+ query?: never;
701
+ header?: never;
702
+ path: {
703
+ id: string;
704
+ };
705
+ cookie?: never;
706
+ };
707
+ requestBody?: never;
708
+ responses: {
709
+ /** @description Default Response */
710
+ 200: {
711
+ headers: {
712
+ [name: string]: unknown;
713
+ };
714
+ content?: never;
715
+ };
716
+ };
717
+ };
718
+ put?: never;
719
+ post?: never;
720
+ delete?: never;
721
+ options?: never;
722
+ head?: never;
723
+ patch?: never;
724
+ trace?: never;
725
+ };
726
+ "/api/v1/summary/send": {
727
+ parameters: {
728
+ query?: never;
729
+ header?: never;
730
+ path?: never;
731
+ cookie?: never;
732
+ };
733
+ get?: never;
734
+ put?: never;
735
+ /** Enviar resumen diario de boletas (RC) */
736
+ post: {
737
+ parameters: {
738
+ query?: never;
739
+ header?: never;
740
+ path?: never;
741
+ cookie?: never;
742
+ };
743
+ requestBody: {
744
+ content: {
745
+ "application/json": {
746
+ empresaRuc: string;
747
+ correlativo: string;
748
+ fechaEmision: string;
749
+ fechaReferencia: string;
750
+ items: {
751
+ tipoDoc: string;
752
+ serie: string;
753
+ correlativo: string;
754
+ clienteTipoDoc: string;
755
+ clienteNumDoc: string;
756
+ /** @enum {string} */
757
+ estadoItem: "1" | "2" | "3";
758
+ /** @default PEN */
759
+ tipoMoneda?: string;
760
+ /** @default 0 */
761
+ montoOperGravadas?: number;
762
+ /** @default 0 */
763
+ montoOperExoneradas?: number;
764
+ /** @default 0 */
765
+ montoOperInafectas?: number;
766
+ /** @default 0 */
767
+ montoOperGratuitas?: number;
768
+ /** @default 0 */
769
+ montoIgv?: number;
770
+ /** @default 0 */
771
+ montoIsc?: number;
772
+ /** @default 0 */
773
+ montoOtrosCargos?: number;
774
+ montoTotal: number;
775
+ }[];
776
+ };
777
+ };
778
+ };
779
+ responses: {
780
+ /** @description Default Response */
781
+ 200: {
782
+ headers: {
783
+ [name: string]: unknown;
784
+ };
785
+ content: {
786
+ "application/json": {
787
+ success: boolean;
788
+ message: string;
789
+ data?: {
790
+ ticket?: string;
791
+ hash?: string | null;
792
+ };
793
+ };
794
+ };
795
+ };
796
+ /** @description Default Response */
797
+ 400: {
798
+ headers: {
799
+ [name: string]: unknown;
800
+ };
801
+ content: {
802
+ "application/json": {
803
+ /** @enum {boolean} */
804
+ success: false;
805
+ message: string;
806
+ code?: string;
807
+ errors?: {
808
+ path: string;
809
+ message: string;
810
+ }[];
811
+ };
812
+ };
813
+ };
814
+ };
815
+ };
816
+ delete?: never;
817
+ options?: never;
818
+ head?: never;
819
+ patch?: never;
820
+ trace?: never;
821
+ };
822
+ "/api/v1/voided/send": {
823
+ parameters: {
824
+ query?: never;
825
+ header?: never;
826
+ path?: never;
827
+ cookie?: never;
828
+ };
829
+ get?: never;
830
+ put?: never;
831
+ /** Enviar comunicación de baja (RA) */
832
+ post: {
833
+ parameters: {
834
+ query?: never;
835
+ header?: never;
836
+ path?: never;
837
+ cookie?: never;
838
+ };
839
+ requestBody: {
840
+ content: {
841
+ "application/json": {
842
+ empresaRuc: string;
843
+ correlativo: string;
844
+ fechaEmision: string;
845
+ fechaReferencia: string;
846
+ items: {
847
+ tipoDoc: string;
848
+ serie: string;
849
+ correlativo: string;
850
+ motivoBaja: string;
851
+ }[];
852
+ };
853
+ };
854
+ };
855
+ responses: {
856
+ /** @description Default Response */
857
+ 200: {
858
+ headers: {
859
+ [name: string]: unknown;
860
+ };
861
+ content: {
862
+ "application/json": {
863
+ success: boolean;
864
+ message: string;
865
+ data?: {
866
+ ticket?: string;
867
+ hash?: string | null;
868
+ };
869
+ };
870
+ };
871
+ };
872
+ /** @description Default Response */
873
+ 400: {
874
+ headers: {
875
+ [name: string]: unknown;
876
+ };
877
+ content: {
878
+ "application/json": {
879
+ /** @enum {boolean} */
880
+ success: false;
881
+ message: string;
882
+ code?: string;
883
+ errors?: {
884
+ path: string;
885
+ message: string;
886
+ }[];
887
+ };
888
+ };
889
+ };
890
+ };
891
+ };
892
+ delete?: never;
893
+ options?: never;
894
+ head?: never;
895
+ patch?: never;
896
+ trace?: never;
897
+ };
898
+ "/api/v1/ticket/{ticket}/status": {
899
+ parameters: {
900
+ query?: never;
901
+ header?: never;
902
+ path?: never;
903
+ cookie?: never;
904
+ };
905
+ /** Consultar estado de ticket asíncrono (SOAP o GRE) */
906
+ get: {
907
+ parameters: {
908
+ query: {
909
+ ruc: string;
910
+ };
911
+ header?: never;
912
+ path: {
913
+ ticket: string;
914
+ };
915
+ cookie?: never;
916
+ };
917
+ requestBody?: never;
918
+ responses: {
919
+ /** @description Default Response */
920
+ 200: {
921
+ headers: {
922
+ [name: string]: unknown;
923
+ };
924
+ content: {
925
+ "application/json": {
926
+ success: boolean;
927
+ message: string;
928
+ statusCode: string;
929
+ cdrResponse?: {
930
+ id: string;
931
+ code: string;
932
+ description: string;
933
+ notes: string[];
934
+ };
935
+ };
936
+ };
937
+ };
938
+ /** @description Default Response */
939
+ 202: {
940
+ headers: {
941
+ [name: string]: unknown;
942
+ };
943
+ content: {
944
+ "application/json": {
945
+ success: boolean;
946
+ message: string;
947
+ statusCode: string;
948
+ cdrResponse?: {
949
+ id: string;
950
+ code: string;
951
+ description: string;
952
+ notes: string[];
953
+ };
954
+ };
955
+ };
956
+ };
957
+ };
958
+ };
959
+ put?: never;
960
+ post?: never;
961
+ delete?: never;
962
+ options?: never;
963
+ head?: never;
964
+ patch?: never;
965
+ trace?: never;
966
+ };
967
+ "/api/v1/invoice/cancel": {
968
+ parameters: {
969
+ query?: never;
970
+ header?: never;
971
+ path?: never;
972
+ cookie?: never;
973
+ };
974
+ get?: never;
975
+ put?: never;
976
+ /** Anular factura via comunicación de baja */
977
+ post: {
978
+ parameters: {
979
+ query?: never;
980
+ header?: never;
981
+ path?: never;
982
+ cookie?: never;
983
+ };
984
+ requestBody: {
985
+ content: {
986
+ "application/json": {
987
+ empresaRuc: string;
988
+ /** @enum {string} */
989
+ tipoDoc: "01" | "07" | "08";
990
+ serie: string;
991
+ correlativo: string;
992
+ motivoBaja: string;
993
+ raCorrelativo?: string;
994
+ };
995
+ };
996
+ };
997
+ responses: {
998
+ /** @description Default Response */
999
+ 200: {
1000
+ headers: {
1001
+ [name: string]: unknown;
1002
+ };
1003
+ content: {
1004
+ "application/json": {
1005
+ success: boolean;
1006
+ message: string;
1007
+ data?: {
1008
+ ticket?: string;
1009
+ hash?: string | null;
1010
+ };
1011
+ };
1012
+ };
1013
+ };
1014
+ /** @description Default Response */
1015
+ 400: {
1016
+ headers: {
1017
+ [name: string]: unknown;
1018
+ };
1019
+ content: {
1020
+ "application/json": {
1021
+ /** @enum {boolean} */
1022
+ success: false;
1023
+ message: string;
1024
+ code?: string;
1025
+ errors?: {
1026
+ path: string;
1027
+ message: string;
1028
+ }[];
1029
+ };
1030
+ };
1031
+ };
1032
+ };
1033
+ };
1034
+ delete?: never;
1035
+ options?: never;
1036
+ head?: never;
1037
+ patch?: never;
1038
+ trace?: never;
1039
+ };
1040
+ "/api/v1/boleta/cancel": {
1041
+ parameters: {
1042
+ query?: never;
1043
+ header?: never;
1044
+ path?: never;
1045
+ cookie?: never;
1046
+ };
1047
+ get?: never;
1048
+ put?: never;
1049
+ /** Anular boleta via resumen diario (estado=3) */
1050
+ post: {
1051
+ parameters: {
1052
+ query?: never;
1053
+ header?: never;
1054
+ path?: never;
1055
+ cookie?: never;
1056
+ };
1057
+ requestBody: {
1058
+ content: {
1059
+ "application/json": {
1060
+ empresaRuc: string;
1061
+ serie: string;
1062
+ correlativo: string;
1063
+ motivoBaja: string;
1064
+ rcCorrelativo?: string;
1065
+ };
1066
+ };
1067
+ };
1068
+ responses: {
1069
+ /** @description Default Response */
1070
+ 200: {
1071
+ headers: {
1072
+ [name: string]: unknown;
1073
+ };
1074
+ content: {
1075
+ "application/json": {
1076
+ success: boolean;
1077
+ message: string;
1078
+ data?: {
1079
+ ticket?: string;
1080
+ hash?: string | null;
1081
+ };
1082
+ };
1083
+ };
1084
+ };
1085
+ /** @description Default Response */
1086
+ 400: {
1087
+ headers: {
1088
+ [name: string]: unknown;
1089
+ };
1090
+ content: {
1091
+ "application/json": {
1092
+ /** @enum {boolean} */
1093
+ success: false;
1094
+ message: string;
1095
+ code?: string;
1096
+ errors?: {
1097
+ path: string;
1098
+ message: string;
1099
+ }[];
1100
+ };
1101
+ };
1102
+ };
1103
+ };
1104
+ };
1105
+ delete?: never;
1106
+ options?: never;
1107
+ head?: never;
1108
+ patch?: never;
1109
+ trace?: never;
1110
+ };
1111
+ "/api/v1/documents": {
1112
+ parameters: {
1113
+ query?: never;
1114
+ header?: never;
1115
+ path?: never;
1116
+ cookie?: never;
1117
+ };
1118
+ /** Listar documentos con filtros y paginación */
1119
+ get: {
1120
+ parameters: {
1121
+ query?: {
1122
+ ruc?: string;
1123
+ tipoDoc?: string;
1124
+ serie?: string;
1125
+ estado?: string;
1126
+ env?: "live" | "test";
1127
+ fechaDesde?: string;
1128
+ fechaHasta?: string;
1129
+ clienteNumDoc?: string;
1130
+ page?: number;
1131
+ limit?: number;
1132
+ };
1133
+ header?: never;
1134
+ path?: never;
1135
+ cookie?: never;
1136
+ };
1137
+ requestBody?: never;
1138
+ responses: {
1139
+ /** @description Default Response */
1140
+ 200: {
1141
+ headers: {
1142
+ [name: string]: unknown;
1143
+ };
1144
+ content: {
1145
+ "application/json": {
1146
+ success: boolean;
1147
+ data: {
1148
+ id: string;
1149
+ /** @enum {string} */
1150
+ env: "live" | "test";
1151
+ tipoDoc: string;
1152
+ serie: string;
1153
+ correlativo: string;
1154
+ fechaEmision: string;
1155
+ tipoMoneda: string;
1156
+ clienteNumDoc: string;
1157
+ clienteRazonSocial: string;
1158
+ montoImpVenta: string;
1159
+ estadoSunat: string;
1160
+ codigoRespuesta: string | null;
1161
+ hashCdr: string | null;
1162
+ createdAt: string;
1163
+ company: {
1164
+ ruc: string;
1165
+ razonSocial: string;
1166
+ };
1167
+ }[];
1168
+ pagination: {
1169
+ page: number;
1170
+ limit: number;
1171
+ total: number;
1172
+ totalPages: number;
1173
+ };
1174
+ };
1175
+ };
1176
+ };
1177
+ };
1178
+ };
1179
+ put?: never;
1180
+ post?: never;
1181
+ delete?: never;
1182
+ options?: never;
1183
+ head?: never;
1184
+ patch?: never;
1185
+ trace?: never;
1186
+ };
1187
+ "/api/v1/documents/{id}": {
1188
+ parameters: {
1189
+ query?: never;
1190
+ header?: never;
1191
+ path?: never;
1192
+ cookie?: never;
1193
+ };
1194
+ /** Detalle completo de un documento */
1195
+ get: {
1196
+ parameters: {
1197
+ query?: never;
1198
+ header?: never;
1199
+ path: {
1200
+ id: string;
1201
+ };
1202
+ cookie?: never;
1203
+ };
1204
+ requestBody?: never;
1205
+ responses: {
1206
+ /** @description Default Response */
1207
+ 200: {
1208
+ headers: {
1209
+ [name: string]: unknown;
1210
+ };
1211
+ content?: never;
1212
+ };
1213
+ };
1214
+ };
1215
+ put?: never;
1216
+ post?: never;
1217
+ delete?: never;
1218
+ options?: never;
1219
+ head?: never;
1220
+ patch?: never;
1221
+ trace?: never;
1222
+ };
1223
+ "/api/v1/documents/{id}/retry": {
1224
+ parameters: {
1225
+ query?: never;
1226
+ header?: never;
1227
+ path?: never;
1228
+ cookie?: never;
1229
+ };
1230
+ get?: never;
1231
+ put?: never;
1232
+ /**
1233
+ * Re-encolar un documento fallido
1234
+ * @description Útil cuando un documento quedó en estado COLA_FALLIDA tras agotar los reintentos automáticos.
1235
+ */
1236
+ post: {
1237
+ parameters: {
1238
+ query?: never;
1239
+ header?: never;
1240
+ path: {
1241
+ id: string;
1242
+ };
1243
+ cookie?: never;
1244
+ };
1245
+ requestBody?: never;
1246
+ responses: {
1247
+ /** @description Default Response */
1248
+ 202: {
1249
+ headers: {
1250
+ [name: string]: unknown;
1251
+ };
1252
+ content: {
1253
+ "application/json": {
1254
+ success: boolean;
1255
+ message: string;
1256
+ jobId?: string;
1257
+ };
1258
+ };
1259
+ };
1260
+ /** @description Default Response */
1261
+ 400: {
1262
+ headers: {
1263
+ [name: string]: unknown;
1264
+ };
1265
+ content: {
1266
+ "application/json": {
1267
+ /** @enum {boolean} */
1268
+ success: false;
1269
+ message: string;
1270
+ code?: string;
1271
+ errors?: {
1272
+ path: string;
1273
+ message: string;
1274
+ }[];
1275
+ };
1276
+ };
1277
+ };
1278
+ };
1279
+ };
1280
+ delete?: never;
1281
+ options?: never;
1282
+ head?: never;
1283
+ patch?: never;
1284
+ trace?: never;
1285
+ };
1286
+ "/api/v1/queues/stats": {
1287
+ parameters: {
1288
+ query?: never;
1289
+ header?: never;
1290
+ path?: never;
1291
+ cookie?: never;
1292
+ };
1293
+ /** Estado de las colas BullMQ */
1294
+ get: {
1295
+ parameters: {
1296
+ query?: never;
1297
+ header?: never;
1298
+ path?: never;
1299
+ cookie?: never;
1300
+ };
1301
+ requestBody?: never;
1302
+ responses: {
1303
+ /** @description Default Response */
1304
+ 200: {
1305
+ headers: {
1306
+ [name: string]: unknown;
1307
+ };
1308
+ content: {
1309
+ "application/json": {
1310
+ success: boolean;
1311
+ data: {
1312
+ "sunat-send": {
1313
+ [key: string]: number;
1314
+ };
1315
+ "sunat-summary": {
1316
+ [key: string]: number;
1317
+ };
1318
+ "sunat-ticket-poll": {
1319
+ [key: string]: number;
1320
+ };
1321
+ "sunat-gre-send": {
1322
+ [key: string]: number;
1323
+ };
1324
+ "sunat-gre-ticket-poll": {
1325
+ [key: string]: number;
1326
+ };
1327
+ };
1328
+ };
1329
+ };
1330
+ };
1331
+ /** @description Default Response */
1332
+ 403: {
1333
+ headers: {
1334
+ [name: string]: unknown;
1335
+ };
1336
+ content: {
1337
+ "application/json": {
1338
+ /** @enum {boolean} */
1339
+ success: false;
1340
+ message: string;
1341
+ code?: string;
1342
+ errors?: {
1343
+ path: string;
1344
+ message: string;
1345
+ }[];
1346
+ };
1347
+ };
1348
+ };
1349
+ };
1350
+ };
1351
+ put?: never;
1352
+ post?: never;
1353
+ delete?: never;
1354
+ options?: never;
1355
+ head?: never;
1356
+ patch?: never;
1357
+ trace?: never;
1358
+ };
1359
+ "/api/v1/documents/next-correlativo": {
1360
+ parameters: {
1361
+ query?: never;
1362
+ header?: never;
1363
+ path?: never;
1364
+ cookie?: never;
1365
+ };
1366
+ /**
1367
+ * Obtener el siguiente correlativo disponible para una serie
1368
+ * @description Busca el correlativo más alto existente para la combinación empresa+tipoDoc+serie y retorna el siguiente. Útil para auto-numeración.
1369
+ */
1370
+ get: {
1371
+ parameters: {
1372
+ query: {
1373
+ companyRuc: string;
1374
+ tipoDoc: string;
1375
+ serie: string;
1376
+ };
1377
+ header?: never;
1378
+ path?: never;
1379
+ cookie?: never;
1380
+ };
1381
+ requestBody?: never;
1382
+ responses: {
1383
+ /** @description Default Response */
1384
+ 200: {
1385
+ headers: {
1386
+ [name: string]: unknown;
1387
+ };
1388
+ content: {
1389
+ "application/json": {
1390
+ /** @enum {boolean} */
1391
+ success: true;
1392
+ data: {
1393
+ next: string;
1394
+ };
1395
+ };
1396
+ };
1397
+ };
1398
+ /** @description Default Response */
1399
+ 404: {
1400
+ headers: {
1401
+ [name: string]: unknown;
1402
+ };
1403
+ content: {
1404
+ "application/json": {
1405
+ /** @enum {boolean} */
1406
+ success: false;
1407
+ message: string;
1408
+ code?: string;
1409
+ errors?: {
1410
+ path: string;
1411
+ message: string;
1412
+ }[];
1413
+ };
1414
+ };
1415
+ };
1416
+ };
1417
+ };
1418
+ put?: never;
1419
+ post?: never;
1420
+ delete?: never;
1421
+ options?: never;
1422
+ head?: never;
1423
+ patch?: never;
1424
+ trace?: never;
1425
+ };
1426
+ "/api/v1/companies": {
1427
+ parameters: {
1428
+ query?: never;
1429
+ header?: never;
1430
+ path?: never;
1431
+ cookie?: never;
1432
+ };
1433
+ /** Listar empresas emisoras */
1434
+ get: {
1435
+ parameters: {
1436
+ query?: never;
1437
+ header?: never;
1438
+ path?: never;
1439
+ cookie?: never;
1440
+ };
1441
+ requestBody?: never;
1442
+ responses: {
1443
+ /** @description Default Response */
1444
+ 200: {
1445
+ headers: {
1446
+ [name: string]: unknown;
1447
+ };
1448
+ content?: never;
1449
+ };
1450
+ };
1451
+ };
1452
+ put?: never;
1453
+ /** Crear empresa emisora */
1454
+ post: {
1455
+ parameters: {
1456
+ query?: never;
1457
+ header?: never;
1458
+ path?: never;
1459
+ cookie?: never;
1460
+ };
1461
+ requestBody: {
1462
+ content: {
1463
+ "application/json": {
1464
+ ruc: string;
1465
+ razonSocial: string;
1466
+ nombreComercial?: string;
1467
+ ubigeo?: string;
1468
+ direccion?: string;
1469
+ departamento?: string;
1470
+ provincia?: string;
1471
+ distrito?: string;
1472
+ urbanizacion?: string;
1473
+ solUser?: string;
1474
+ solPassword?: string;
1475
+ /** Format: uuid */
1476
+ tenantId?: string;
1477
+ greClientId?: string;
1478
+ greClientSecret?: string;
1479
+ };
1480
+ };
1481
+ };
1482
+ responses: {
1483
+ /** @description Default Response */
1484
+ 200: {
1485
+ headers: {
1486
+ [name: string]: unknown;
1487
+ };
1488
+ content?: never;
1489
+ };
1490
+ };
1491
+ };
1492
+ delete?: never;
1493
+ options?: never;
1494
+ head?: never;
1495
+ patch?: never;
1496
+ trace?: never;
1497
+ };
1498
+ "/api/v1/companies/{id}": {
1499
+ parameters: {
1500
+ query?: never;
1501
+ header?: never;
1502
+ path?: never;
1503
+ cookie?: never;
1504
+ };
1505
+ /** Detalle de empresa */
1506
+ get: {
1507
+ parameters: {
1508
+ query?: never;
1509
+ header?: never;
1510
+ path: {
1511
+ id: string;
1512
+ };
1513
+ cookie?: never;
1514
+ };
1515
+ requestBody?: never;
1516
+ responses: {
1517
+ /** @description Default Response */
1518
+ 200: {
1519
+ headers: {
1520
+ [name: string]: unknown;
1521
+ };
1522
+ content?: never;
1523
+ };
1524
+ };
1525
+ };
1526
+ /** Actualizar empresa */
1527
+ put: {
1528
+ parameters: {
1529
+ query?: never;
1530
+ header?: never;
1531
+ path: {
1532
+ id: string;
1533
+ };
1534
+ cookie?: never;
1535
+ };
1536
+ requestBody: {
1537
+ content: {
1538
+ "application/json": {
1539
+ ruc?: string;
1540
+ razonSocial?: string;
1541
+ nombreComercial?: string;
1542
+ ubigeo?: string;
1543
+ direccion?: string;
1544
+ departamento?: string;
1545
+ provincia?: string;
1546
+ distrito?: string;
1547
+ urbanizacion?: string;
1548
+ solUser?: string;
1549
+ solPassword?: string;
1550
+ /** Format: uuid */
1551
+ tenantId?: string;
1552
+ greClientId?: string;
1553
+ greClientSecret?: string;
1554
+ };
1555
+ };
1556
+ };
1557
+ responses: {
1558
+ /** @description Default Response */
1559
+ 200: {
1560
+ headers: {
1561
+ [name: string]: unknown;
1562
+ };
1563
+ content?: never;
1564
+ };
1565
+ };
1566
+ };
1567
+ post?: never;
1568
+ delete?: never;
1569
+ options?: never;
1570
+ head?: never;
1571
+ patch?: never;
1572
+ trace?: never;
1573
+ };
1574
+ "/api/v1/companies/{id}/certificate": {
1575
+ parameters: {
1576
+ query?: never;
1577
+ header?: never;
1578
+ path?: never;
1579
+ cookie?: never;
1580
+ };
1581
+ get?: never;
1582
+ put?: never;
1583
+ /** Subir certificado digital (.p12/.pfx en base64) */
1584
+ post: {
1585
+ parameters: {
1586
+ query?: never;
1587
+ header?: never;
1588
+ path: {
1589
+ id: string;
1590
+ };
1591
+ cookie?: never;
1592
+ };
1593
+ requestBody: {
1594
+ content: {
1595
+ "application/json": {
1596
+ name: string;
1597
+ password: string;
1598
+ /** @description Base64 del .p12/.pfx */
1599
+ content: string;
1600
+ };
1601
+ };
1602
+ };
1603
+ responses: {
1604
+ /** @description Default Response */
1605
+ 200: {
1606
+ headers: {
1607
+ [name: string]: unknown;
1608
+ };
1609
+ content?: never;
1610
+ };
1611
+ };
1612
+ };
1613
+ delete?: never;
1614
+ options?: never;
1615
+ head?: never;
1616
+ patch?: never;
1617
+ trace?: never;
1618
+ };
1619
+ "/api/v1/companies/{id}/logo": {
1620
+ parameters: {
1621
+ query?: never;
1622
+ header?: never;
1623
+ path?: never;
1624
+ cookie?: never;
1625
+ };
1626
+ /** Obtener logo de la empresa (PNG/JPG) */
1627
+ get: {
1628
+ parameters: {
1629
+ query?: never;
1630
+ header?: never;
1631
+ path: {
1632
+ id: string;
1633
+ };
1634
+ cookie?: never;
1635
+ };
1636
+ requestBody?: never;
1637
+ responses: {
1638
+ /** @description Default Response */
1639
+ 200: {
1640
+ headers: {
1641
+ [name: string]: unknown;
1642
+ };
1643
+ content?: never;
1644
+ };
1645
+ };
1646
+ };
1647
+ put?: never;
1648
+ /**
1649
+ * Subir logo de la empresa (PNG/JPG, max 200KB)
1650
+ * @description El logo aparecerá en los PDFs (A4 y ticket). Reemplaza el anterior.
1651
+ */
1652
+ post: {
1653
+ parameters: {
1654
+ query?: never;
1655
+ header?: never;
1656
+ path: {
1657
+ id: string;
1658
+ };
1659
+ cookie?: never;
1660
+ };
1661
+ requestBody?: never;
1662
+ responses: {
1663
+ /** @description Default Response */
1664
+ 200: {
1665
+ headers: {
1666
+ [name: string]: unknown;
1667
+ };
1668
+ content?: never;
1669
+ };
1670
+ };
1671
+ };
1672
+ /** Eliminar logo de la empresa */
1673
+ delete: {
1674
+ parameters: {
1675
+ query?: never;
1676
+ header?: never;
1677
+ path: {
1678
+ id: string;
1679
+ };
1680
+ cookie?: never;
1681
+ };
1682
+ requestBody?: never;
1683
+ responses: {
1684
+ /** @description Default Response */
1685
+ 200: {
1686
+ headers: {
1687
+ [name: string]: unknown;
1688
+ };
1689
+ content?: never;
1690
+ };
1691
+ };
1692
+ };
1693
+ options?: never;
1694
+ head?: never;
1695
+ patch?: never;
1696
+ trace?: never;
1697
+ };
1698
+ "/api/v1/webhooks": {
1699
+ parameters: {
1700
+ query?: never;
1701
+ header?: never;
1702
+ path?: never;
1703
+ cookie?: never;
1704
+ };
1705
+ /** Listar webhooks (filtra por RUC opcional) */
1706
+ get: {
1707
+ parameters: {
1708
+ query?: {
1709
+ ruc?: string;
1710
+ };
1711
+ header?: never;
1712
+ path?: never;
1713
+ cookie?: never;
1714
+ };
1715
+ requestBody?: never;
1716
+ responses: {
1717
+ /** @description Default Response */
1718
+ 200: {
1719
+ headers: {
1720
+ [name: string]: unknown;
1721
+ };
1722
+ content?: never;
1723
+ };
1724
+ };
1725
+ };
1726
+ put?: never;
1727
+ /**
1728
+ * Crear endpoint webhook
1729
+ * @description Registra una URL que recibirá POSTs cuando ocurran los eventos suscritos. La respuesta incluye el `secret` (mostrado UNA sola vez) — guárdalo para verificar las firmas HMAC-SHA256.
1730
+ */
1731
+ post: {
1732
+ parameters: {
1733
+ query?: never;
1734
+ header?: never;
1735
+ path?: never;
1736
+ cookie?: never;
1737
+ };
1738
+ requestBody: {
1739
+ content: {
1740
+ "application/json": {
1741
+ empresaRuc: string;
1742
+ /** Format: uri */
1743
+ url: string;
1744
+ events: ("document.accepted" | "document.rejected" | "document.queue_failed" | "document.retried" | "ticket.resolved")[];
1745
+ description?: string;
1746
+ };
1747
+ };
1748
+ };
1749
+ responses: {
1750
+ /** @description Default Response */
1751
+ 200: {
1752
+ headers: {
1753
+ [name: string]: unknown;
1754
+ };
1755
+ content?: never;
1756
+ };
1757
+ };
1758
+ };
1759
+ delete?: never;
1760
+ options?: never;
1761
+ head?: never;
1762
+ patch?: never;
1763
+ trace?: never;
1764
+ };
1765
+ "/api/v1/webhooks/{id}": {
1766
+ parameters: {
1767
+ query?: never;
1768
+ header?: never;
1769
+ path?: never;
1770
+ cookie?: never;
1771
+ };
1772
+ /** Detalle de webhook (sin secret) */
1773
+ get: {
1774
+ parameters: {
1775
+ query?: never;
1776
+ header?: never;
1777
+ path: {
1778
+ id: string;
1779
+ };
1780
+ cookie?: never;
1781
+ };
1782
+ requestBody?: never;
1783
+ responses: {
1784
+ /** @description Default Response */
1785
+ 200: {
1786
+ headers: {
1787
+ [name: string]: unknown;
1788
+ };
1789
+ content?: never;
1790
+ };
1791
+ };
1792
+ };
1793
+ /** Actualizar webhook (url, eventos, activación) */
1794
+ put: {
1795
+ parameters: {
1796
+ query?: never;
1797
+ header?: never;
1798
+ path: {
1799
+ id: string;
1800
+ };
1801
+ cookie?: never;
1802
+ };
1803
+ requestBody: {
1804
+ content: {
1805
+ "application/json": {
1806
+ /** Format: uri */
1807
+ url?: string;
1808
+ events?: ("document.accepted" | "document.rejected" | "document.queue_failed" | "document.retried" | "ticket.resolved")[];
1809
+ description?: string;
1810
+ isActive?: boolean;
1811
+ };
1812
+ };
1813
+ };
1814
+ responses: {
1815
+ /** @description Default Response */
1816
+ 200: {
1817
+ headers: {
1818
+ [name: string]: unknown;
1819
+ };
1820
+ content?: never;
1821
+ };
1822
+ };
1823
+ };
1824
+ post?: never;
1825
+ /** Eliminar webhook (también elimina su historial de deliveries) */
1826
+ delete: {
1827
+ parameters: {
1828
+ query?: never;
1829
+ header?: never;
1830
+ path: {
1831
+ id: string;
1832
+ };
1833
+ cookie?: never;
1834
+ };
1835
+ requestBody?: never;
1836
+ responses: {
1837
+ /** @description Default Response */
1838
+ 200: {
1839
+ headers: {
1840
+ [name: string]: unknown;
1841
+ };
1842
+ content?: never;
1843
+ };
1844
+ };
1845
+ };
1846
+ options?: never;
1847
+ head?: never;
1848
+ patch?: never;
1849
+ trace?: never;
1850
+ };
1851
+ "/api/v1/webhooks/{id}/deliveries": {
1852
+ parameters: {
1853
+ query?: never;
1854
+ header?: never;
1855
+ path?: never;
1856
+ cookie?: never;
1857
+ };
1858
+ /** Log de entregas del webhook */
1859
+ get: {
1860
+ parameters: {
1861
+ query?: {
1862
+ limit?: number;
1863
+ success?: "true" | "false";
1864
+ };
1865
+ header?: never;
1866
+ path: {
1867
+ id: string;
1868
+ };
1869
+ cookie?: never;
1870
+ };
1871
+ requestBody?: never;
1872
+ responses: {
1873
+ /** @description Default Response */
1874
+ 200: {
1875
+ headers: {
1876
+ [name: string]: unknown;
1877
+ };
1878
+ content?: never;
1879
+ };
1880
+ };
1881
+ };
1882
+ put?: never;
1883
+ post?: never;
1884
+ delete?: never;
1885
+ options?: never;
1886
+ head?: never;
1887
+ patch?: never;
1888
+ trace?: never;
1889
+ };
1890
+ "/api/v1/webhooks/{id}/deliveries/{deliveryId}/redeliver": {
1891
+ parameters: {
1892
+ query?: never;
1893
+ header?: never;
1894
+ path?: never;
1895
+ cookie?: never;
1896
+ };
1897
+ get?: never;
1898
+ put?: never;
1899
+ /** Reintentar manualmente una entrega */
1900
+ post: {
1901
+ parameters: {
1902
+ query?: never;
1903
+ header?: never;
1904
+ path: {
1905
+ id: string;
1906
+ deliveryId: string;
1907
+ };
1908
+ cookie?: never;
1909
+ };
1910
+ requestBody?: never;
1911
+ responses: {
1912
+ /** @description Default Response */
1913
+ 200: {
1914
+ headers: {
1915
+ [name: string]: unknown;
1916
+ };
1917
+ content?: never;
1918
+ };
1919
+ };
1920
+ };
1921
+ delete?: never;
1922
+ options?: never;
1923
+ head?: never;
1924
+ patch?: never;
1925
+ trace?: never;
1926
+ };
1927
+ "/api/v1/webhooks/{id}/test": {
1928
+ parameters: {
1929
+ query?: never;
1930
+ header?: never;
1931
+ path?: never;
1932
+ cookie?: never;
1933
+ };
1934
+ get?: never;
1935
+ put?: never;
1936
+ /** Enviar un evento de prueba (webhook.test) */
1937
+ post: {
1938
+ parameters: {
1939
+ query?: never;
1940
+ header?: never;
1941
+ path: {
1942
+ id: string;
1943
+ };
1944
+ cookie?: never;
1945
+ };
1946
+ requestBody?: never;
1947
+ responses: {
1948
+ /** @description Default Response */
1949
+ 200: {
1950
+ headers: {
1951
+ [name: string]: unknown;
1952
+ };
1953
+ content?: never;
1954
+ };
1955
+ };
1956
+ };
1957
+ delete?: never;
1958
+ options?: never;
1959
+ head?: never;
1960
+ patch?: never;
1961
+ trace?: never;
1962
+ };
1963
+ "/api/v1/webhooks/{id}/rotate-secret": {
1964
+ parameters: {
1965
+ query?: never;
1966
+ header?: never;
1967
+ path?: never;
1968
+ cookie?: never;
1969
+ };
1970
+ get?: never;
1971
+ put?: never;
1972
+ /**
1973
+ * Rotar el secret de firma (devuelto UNA sola vez)
1974
+ * @description Genera un nuevo secret HMAC y lo devuelve una única vez. Las firmas de entregas posteriores usarán el nuevo secret; actualiza tu receptor antes de rotar.
1975
+ */
1976
+ post: {
1977
+ parameters: {
1978
+ query?: never;
1979
+ header?: never;
1980
+ path: {
1981
+ id: string;
1982
+ };
1983
+ cookie?: never;
1984
+ };
1985
+ requestBody?: never;
1986
+ responses: {
1987
+ /** @description Default Response */
1988
+ 200: {
1989
+ headers: {
1990
+ [name: string]: unknown;
1991
+ };
1992
+ content?: never;
1993
+ };
1994
+ };
1995
+ };
1996
+ delete?: never;
1997
+ options?: never;
1998
+ head?: never;
1999
+ patch?: never;
2000
+ trace?: never;
2001
+ };
2002
+ "/api/v1/companies/{id}/branches": {
2003
+ parameters: {
2004
+ query?: never;
2005
+ header?: never;
2006
+ path?: never;
2007
+ cookie?: never;
2008
+ };
2009
+ /** Listar establecimientos (sucursales) de una empresa */
2010
+ get: {
2011
+ parameters: {
2012
+ query?: never;
2013
+ header?: never;
2014
+ path: {
2015
+ id: string;
2016
+ };
2017
+ cookie?: never;
2018
+ };
2019
+ requestBody?: never;
2020
+ responses: {
2021
+ /** @description Default Response */
2022
+ 200: {
2023
+ headers: {
2024
+ [name: string]: unknown;
2025
+ };
2026
+ content?: never;
2027
+ };
2028
+ };
2029
+ };
2030
+ put?: never;
2031
+ /**
2032
+ * Crear establecimiento (sucursal)
2033
+ * @description El código debe coincidir con el que SUNAT asignó a la sucursal al registrarla en el portal SOL (Mis Trámites > Establecimientos Anexos).
2034
+ */
2035
+ post: {
2036
+ parameters: {
2037
+ query?: never;
2038
+ header?: never;
2039
+ path: {
2040
+ id: string;
2041
+ };
2042
+ cookie?: never;
2043
+ };
2044
+ requestBody: {
2045
+ content: {
2046
+ "application/json": {
2047
+ codigo: string;
2048
+ nombre?: string;
2049
+ ubigeo?: string;
2050
+ direccion?: string;
2051
+ departamento?: string;
2052
+ provincia?: string;
2053
+ distrito?: string;
2054
+ urbanizacion?: string;
2055
+ /** @default true */
2056
+ isActive?: boolean;
2057
+ };
2058
+ };
2059
+ };
2060
+ responses: {
2061
+ /** @description Default Response */
2062
+ 200: {
2063
+ headers: {
2064
+ [name: string]: unknown;
2065
+ };
2066
+ content?: never;
2067
+ };
2068
+ };
2069
+ };
2070
+ delete?: never;
2071
+ options?: never;
2072
+ head?: never;
2073
+ patch?: never;
2074
+ trace?: never;
2075
+ };
2076
+ "/api/v1/companies/{id}/branches/{branchId}": {
2077
+ parameters: {
2078
+ query?: never;
2079
+ header?: never;
2080
+ path?: never;
2081
+ cookie?: never;
2082
+ };
2083
+ get?: never;
2084
+ /** Actualizar establecimiento */
2085
+ put: {
2086
+ parameters: {
2087
+ query?: never;
2088
+ header?: never;
2089
+ path: {
2090
+ id: string;
2091
+ branchId: string;
2092
+ };
2093
+ cookie?: never;
2094
+ };
2095
+ requestBody: {
2096
+ content: {
2097
+ "application/json": {
2098
+ nombre?: string;
2099
+ ubigeo?: string;
2100
+ direccion?: string;
2101
+ departamento?: string;
2102
+ provincia?: string;
2103
+ distrito?: string;
2104
+ urbanizacion?: string;
2105
+ /** @default true */
2106
+ isActive?: boolean;
2107
+ };
2108
+ };
2109
+ };
2110
+ responses: {
2111
+ /** @description Default Response */
2112
+ 200: {
2113
+ headers: {
2114
+ [name: string]: unknown;
2115
+ };
2116
+ content?: never;
2117
+ };
2118
+ };
2119
+ };
2120
+ post?: never;
2121
+ /**
2122
+ * Desactivar establecimiento (soft-delete)
2123
+ * @description No se elimina físicamente porque puede haber documentos emitidos desde ahí. Solo se desactiva (isActive=false).
2124
+ */
2125
+ delete: {
2126
+ parameters: {
2127
+ query?: never;
2128
+ header?: never;
2129
+ path: {
2130
+ id: string;
2131
+ branchId: string;
2132
+ };
2133
+ cookie?: never;
2134
+ };
2135
+ requestBody?: never;
2136
+ responses: {
2137
+ /** @description Default Response */
2138
+ 200: {
2139
+ headers: {
2140
+ [name: string]: unknown;
2141
+ };
2142
+ content?: never;
2143
+ };
2144
+ };
2145
+ };
2146
+ options?: never;
2147
+ head?: never;
2148
+ patch?: never;
2149
+ trace?: never;
2150
+ };
2151
+ "/api/v1/api-keys": {
2152
+ parameters: {
2153
+ query?: never;
2154
+ header?: never;
2155
+ path?: never;
2156
+ cookie?: never;
2157
+ };
2158
+ /** Listar API keys (solo master, sin mostrar el secret) */
2159
+ get: {
2160
+ parameters: {
2161
+ query?: never;
2162
+ header?: never;
2163
+ path?: never;
2164
+ cookie?: never;
2165
+ };
2166
+ requestBody?: never;
2167
+ responses: {
2168
+ /** @description Default Response */
2169
+ 200: {
2170
+ headers: {
2171
+ [name: string]: unknown;
2172
+ };
2173
+ content?: never;
2174
+ };
2175
+ };
2176
+ };
2177
+ put?: never;
2178
+ /**
2179
+ * Crear API key (solo master)
2180
+ * @description El campo `key` (fact_live_...) se muestra UNA sola vez. Guárdalo. No se puede recuperar.
2181
+ */
2182
+ post: {
2183
+ parameters: {
2184
+ query?: never;
2185
+ header?: never;
2186
+ path?: never;
2187
+ cookie?: never;
2188
+ };
2189
+ requestBody: {
2190
+ content: {
2191
+ "application/json": {
2192
+ name: string;
2193
+ empresaRuc?: string;
2194
+ /** Format: date-time */
2195
+ expiresAt?: string;
2196
+ /**
2197
+ * @default live
2198
+ * @enum {string}
2199
+ */
2200
+ env?: "live" | "test";
2201
+ };
2202
+ };
2203
+ };
2204
+ responses: {
2205
+ /** @description Default Response */
2206
+ 200: {
2207
+ headers: {
2208
+ [name: string]: unknown;
2209
+ };
2210
+ content?: never;
2211
+ };
2212
+ };
2213
+ };
2214
+ delete?: never;
2215
+ options?: never;
2216
+ head?: never;
2217
+ patch?: never;
2218
+ trace?: never;
2219
+ };
2220
+ "/api/v1/api-keys/{id}": {
2221
+ parameters: {
2222
+ query?: never;
2223
+ header?: never;
2224
+ path?: never;
2225
+ cookie?: never;
2226
+ };
2227
+ get?: never;
2228
+ put?: never;
2229
+ post?: never;
2230
+ /** Revocar API key (soft delete) */
2231
+ delete: {
2232
+ parameters: {
2233
+ query?: never;
2234
+ header?: never;
2235
+ path: {
2236
+ id: string;
2237
+ };
2238
+ cookie?: never;
2239
+ };
2240
+ requestBody?: never;
2241
+ responses: {
2242
+ /** @description Default Response */
2243
+ 200: {
2244
+ headers: {
2245
+ [name: string]: unknown;
2246
+ };
2247
+ content?: never;
2248
+ };
2249
+ };
2250
+ };
2251
+ options?: never;
2252
+ head?: never;
2253
+ patch?: never;
2254
+ trace?: never;
2255
+ };
2256
+ "/api/v1/audit-logs": {
2257
+ parameters: {
2258
+ query?: never;
2259
+ header?: never;
2260
+ path?: never;
2261
+ cookie?: never;
2262
+ };
2263
+ /**
2264
+ * Consultar audit log (solo master)
2265
+ * @description Lista de acciones mutantes (POST/PUT/PATCH/DELETE) ejecutadas en la API.
2266
+ */
2267
+ get: {
2268
+ parameters: {
2269
+ query?: {
2270
+ actor?: string;
2271
+ resourceId?: string;
2272
+ method?: "POST" | "PUT" | "PATCH" | "DELETE";
2273
+ fechaDesde?: string;
2274
+ fechaHasta?: string;
2275
+ limit?: number;
2276
+ };
2277
+ header?: never;
2278
+ path?: never;
2279
+ cookie?: never;
2280
+ };
2281
+ requestBody?: never;
2282
+ responses: {
2283
+ /** @description Default Response */
2284
+ 200: {
2285
+ headers: {
2286
+ [name: string]: unknown;
2287
+ };
2288
+ content?: never;
2289
+ };
2290
+ };
2291
+ };
2292
+ put?: never;
2293
+ post?: never;
2294
+ delete?: never;
2295
+ options?: never;
2296
+ head?: never;
2297
+ patch?: never;
2298
+ trace?: never;
2299
+ };
2300
+ "/api/v1/tenants": {
2301
+ parameters: {
2302
+ query?: never;
2303
+ header?: never;
2304
+ path?: never;
2305
+ cookie?: never;
2306
+ };
2307
+ /** Listar tenants (solo master) */
2308
+ get: {
2309
+ parameters: {
2310
+ query?: never;
2311
+ header?: never;
2312
+ path?: never;
2313
+ cookie?: never;
2314
+ };
2315
+ requestBody?: never;
2316
+ responses: {
2317
+ /** @description Default Response */
2318
+ 200: {
2319
+ headers: {
2320
+ [name: string]: unknown;
2321
+ };
2322
+ content?: never;
2323
+ };
2324
+ };
2325
+ };
2326
+ put?: never;
2327
+ /** Crear tenant (cuenta cliente) */
2328
+ post: {
2329
+ parameters: {
2330
+ query?: never;
2331
+ header?: never;
2332
+ path?: never;
2333
+ cookie?: never;
2334
+ };
2335
+ requestBody: {
2336
+ content: {
2337
+ "application/json": {
2338
+ name: string;
2339
+ /** Format: email */
2340
+ email?: string;
2341
+ /**
2342
+ * @default free
2343
+ * @enum {string}
2344
+ */
2345
+ plan?: "free" | "starter" | "pro" | "enterprise";
2346
+ };
2347
+ };
2348
+ };
2349
+ responses: {
2350
+ /** @description Default Response */
2351
+ 200: {
2352
+ headers: {
2353
+ [name: string]: unknown;
2354
+ };
2355
+ content?: never;
2356
+ };
2357
+ };
2358
+ };
2359
+ delete?: never;
2360
+ options?: never;
2361
+ head?: never;
2362
+ patch?: never;
2363
+ trace?: never;
2364
+ };
2365
+ "/api/v1/tenants/{id}": {
2366
+ parameters: {
2367
+ query?: never;
2368
+ header?: never;
2369
+ path?: never;
2370
+ cookie?: never;
2371
+ };
2372
+ /** Detalle de tenant */
2373
+ get: {
2374
+ parameters: {
2375
+ query?: never;
2376
+ header?: never;
2377
+ path: {
2378
+ id: string;
2379
+ };
2380
+ cookie?: never;
2381
+ };
2382
+ requestBody?: never;
2383
+ responses: {
2384
+ /** @description Default Response */
2385
+ 200: {
2386
+ headers: {
2387
+ [name: string]: unknown;
2388
+ };
2389
+ content?: never;
2390
+ };
2391
+ };
2392
+ };
2393
+ /** Actualizar tenant */
2394
+ put: {
2395
+ parameters: {
2396
+ query?: never;
2397
+ header?: never;
2398
+ path: {
2399
+ id: string;
2400
+ };
2401
+ cookie?: never;
2402
+ };
2403
+ requestBody: {
2404
+ content: {
2405
+ "application/json": {
2406
+ name?: string;
2407
+ /** Format: email */
2408
+ email?: string;
2409
+ /** @enum {string} */
2410
+ plan?: "free" | "starter" | "pro" | "enterprise";
2411
+ isActive?: boolean;
2412
+ };
2413
+ };
2414
+ };
2415
+ responses: {
2416
+ /** @description Default Response */
2417
+ 200: {
2418
+ headers: {
2419
+ [name: string]: unknown;
2420
+ };
2421
+ content?: never;
2422
+ };
2423
+ };
2424
+ };
2425
+ post?: never;
2426
+ delete?: never;
2427
+ options?: never;
2428
+ head?: never;
2429
+ patch?: never;
2430
+ trace?: never;
2431
+ };
2432
+ "/api/v1/plans": {
2433
+ parameters: {
2434
+ query?: never;
2435
+ header?: never;
2436
+ path?: never;
2437
+ cookie?: never;
2438
+ };
2439
+ /** Listar planes (solo master) */
2440
+ get: {
2441
+ parameters: {
2442
+ query?: never;
2443
+ header?: never;
2444
+ path?: never;
2445
+ cookie?: never;
2446
+ };
2447
+ requestBody?: never;
2448
+ responses: {
2449
+ /** @description Default Response */
2450
+ 200: {
2451
+ headers: {
2452
+ [name: string]: unknown;
2453
+ };
2454
+ content?: never;
2455
+ };
2456
+ };
2457
+ };
2458
+ put?: never;
2459
+ /** Crear plan */
2460
+ post: {
2461
+ parameters: {
2462
+ query?: never;
2463
+ header?: never;
2464
+ path?: never;
2465
+ cookie?: never;
2466
+ };
2467
+ requestBody: {
2468
+ content: {
2469
+ "application/json": {
2470
+ code: string;
2471
+ name: string;
2472
+ /** @default 0 */
2473
+ monthlyDocs?: number;
2474
+ /** @default 0 */
2475
+ price?: number;
2476
+ /** @default PEN */
2477
+ currency?: string;
2478
+ /** @default 0 */
2479
+ sortOrder?: number;
2480
+ /** @default true */
2481
+ isActive?: boolean;
2482
+ };
2483
+ };
2484
+ };
2485
+ responses: {
2486
+ /** @description Default Response */
2487
+ 200: {
2488
+ headers: {
2489
+ [name: string]: unknown;
2490
+ };
2491
+ content?: never;
2492
+ };
2493
+ };
2494
+ };
2495
+ delete?: never;
2496
+ options?: never;
2497
+ head?: never;
2498
+ patch?: never;
2499
+ trace?: never;
2500
+ };
2501
+ "/api/v1/plans/{id}": {
2502
+ parameters: {
2503
+ query?: never;
2504
+ header?: never;
2505
+ path?: never;
2506
+ cookie?: never;
2507
+ };
2508
+ get?: never;
2509
+ /** Actualizar plan (precio, docs, nombre, estado) */
2510
+ put: {
2511
+ parameters: {
2512
+ query?: never;
2513
+ header?: never;
2514
+ path: {
2515
+ id: string;
2516
+ };
2517
+ cookie?: never;
2518
+ };
2519
+ requestBody: {
2520
+ content: {
2521
+ "application/json": {
2522
+ name?: string;
2523
+ /** @default 0 */
2524
+ monthlyDocs?: number;
2525
+ /** @default 0 */
2526
+ price?: number;
2527
+ /** @default PEN */
2528
+ currency?: string;
2529
+ /** @default 0 */
2530
+ sortOrder?: number;
2531
+ /** @default true */
2532
+ isActive?: boolean;
2533
+ };
2534
+ };
2535
+ };
2536
+ responses: {
2537
+ /** @description Default Response */
2538
+ 200: {
2539
+ headers: {
2540
+ [name: string]: unknown;
2541
+ };
2542
+ content?: never;
2543
+ };
2544
+ };
2545
+ };
2546
+ post?: never;
2547
+ /** Desactivar plan (soft-delete) */
2548
+ delete: {
2549
+ parameters: {
2550
+ query?: never;
2551
+ header?: never;
2552
+ path: {
2553
+ id: string;
2554
+ };
2555
+ cookie?: never;
2556
+ };
2557
+ requestBody?: never;
2558
+ responses: {
2559
+ /** @description Default Response */
2560
+ 200: {
2561
+ headers: {
2562
+ [name: string]: unknown;
2563
+ };
2564
+ content?: never;
2565
+ };
2566
+ };
2567
+ };
2568
+ options?: never;
2569
+ head?: never;
2570
+ patch?: never;
2571
+ trace?: never;
2572
+ };
2573
+ "/api/v1/usage": {
2574
+ parameters: {
2575
+ query?: never;
2576
+ header?: never;
2577
+ path?: never;
2578
+ cookie?: never;
2579
+ };
2580
+ /** Consumo del tenant actual (docs emitidos / límite del plan) */
2581
+ get: {
2582
+ parameters: {
2583
+ query?: never;
2584
+ header?: never;
2585
+ path?: never;
2586
+ cookie?: never;
2587
+ };
2588
+ requestBody?: never;
2589
+ responses: {
2590
+ /** @description Default Response */
2591
+ 200: {
2592
+ headers: {
2593
+ [name: string]: unknown;
2594
+ };
2595
+ content?: never;
2596
+ };
2597
+ };
2598
+ };
2599
+ put?: never;
2600
+ post?: never;
2601
+ delete?: never;
2602
+ options?: never;
2603
+ head?: never;
2604
+ patch?: never;
2605
+ trace?: never;
2606
+ };
2607
+ "/api/v1/auth/signup": {
2608
+ parameters: {
2609
+ query?: never;
2610
+ header?: never;
2611
+ path?: never;
2612
+ cookie?: never;
2613
+ };
2614
+ get?: never;
2615
+ put?: never;
2616
+ /** Registro público: crea Tenant + User + sesión */
2617
+ post: {
2618
+ parameters: {
2619
+ query?: never;
2620
+ header?: never;
2621
+ path?: never;
2622
+ cookie?: never;
2623
+ };
2624
+ requestBody: {
2625
+ content: {
2626
+ "application/json": {
2627
+ /** Format: email */
2628
+ email: string;
2629
+ password: string;
2630
+ name?: string;
2631
+ tenantName: string;
2632
+ };
2633
+ };
2634
+ };
2635
+ responses: {
2636
+ /** @description Default Response */
2637
+ 200: {
2638
+ headers: {
2639
+ [name: string]: unknown;
2640
+ };
2641
+ content?: never;
2642
+ };
2643
+ };
2644
+ };
2645
+ delete?: never;
2646
+ options?: never;
2647
+ head?: never;
2648
+ patch?: never;
2649
+ trace?: never;
2650
+ };
2651
+ "/api/v1/auth/login": {
2652
+ parameters: {
2653
+ query?: never;
2654
+ header?: never;
2655
+ path?: never;
2656
+ cookie?: never;
2657
+ };
2658
+ get?: never;
2659
+ put?: never;
2660
+ /** Login email+password */
2661
+ post: {
2662
+ parameters: {
2663
+ query?: never;
2664
+ header?: never;
2665
+ path?: never;
2666
+ cookie?: never;
2667
+ };
2668
+ requestBody: {
2669
+ content: {
2670
+ "application/json": {
2671
+ /** Format: email */
2672
+ email: string;
2673
+ password: string;
2674
+ };
2675
+ };
2676
+ };
2677
+ responses: {
2678
+ /** @description Default Response */
2679
+ 200: {
2680
+ headers: {
2681
+ [name: string]: unknown;
2682
+ };
2683
+ content?: never;
2684
+ };
2685
+ };
2686
+ };
2687
+ delete?: never;
2688
+ options?: never;
2689
+ head?: never;
2690
+ patch?: never;
2691
+ trace?: never;
2692
+ };
2693
+ "/api/v1/auth/refresh": {
2694
+ parameters: {
2695
+ query?: never;
2696
+ header?: never;
2697
+ path?: never;
2698
+ cookie?: never;
2699
+ };
2700
+ get?: never;
2701
+ put?: never;
2702
+ /** Renovar access token con refresh cookie */
2703
+ post: {
2704
+ parameters: {
2705
+ query?: never;
2706
+ header?: never;
2707
+ path?: never;
2708
+ cookie?: never;
2709
+ };
2710
+ requestBody?: never;
2711
+ responses: {
2712
+ /** @description Default Response */
2713
+ 200: {
2714
+ headers: {
2715
+ [name: string]: unknown;
2716
+ };
2717
+ content?: never;
2718
+ };
2719
+ };
2720
+ };
2721
+ delete?: never;
2722
+ options?: never;
2723
+ head?: never;
2724
+ patch?: never;
2725
+ trace?: never;
2726
+ };
2727
+ "/api/v1/auth/logout": {
2728
+ parameters: {
2729
+ query?: never;
2730
+ header?: never;
2731
+ path?: never;
2732
+ cookie?: never;
2733
+ };
2734
+ get?: never;
2735
+ put?: never;
2736
+ /** Cerrar sesión actual (revoca refresh) */
2737
+ post: {
2738
+ parameters: {
2739
+ query?: never;
2740
+ header?: never;
2741
+ path?: never;
2742
+ cookie?: never;
2743
+ };
2744
+ requestBody?: never;
2745
+ responses: {
2746
+ /** @description Default Response */
2747
+ 200: {
2748
+ headers: {
2749
+ [name: string]: unknown;
2750
+ };
2751
+ content?: never;
2752
+ };
2753
+ };
2754
+ };
2755
+ delete?: never;
2756
+ options?: never;
2757
+ head?: never;
2758
+ patch?: never;
2759
+ trace?: never;
2760
+ };
2761
+ "/api/v1/auth/verify-email": {
2762
+ parameters: {
2763
+ query?: never;
2764
+ header?: never;
2765
+ path?: never;
2766
+ cookie?: never;
2767
+ };
2768
+ /** Confirmar email con token (one-time, 24h) */
2769
+ get: {
2770
+ parameters: {
2771
+ query: {
2772
+ token: string;
2773
+ };
2774
+ header?: never;
2775
+ path?: never;
2776
+ cookie?: never;
2777
+ };
2778
+ requestBody?: never;
2779
+ responses: {
2780
+ /** @description Default Response */
2781
+ 200: {
2782
+ headers: {
2783
+ [name: string]: unknown;
2784
+ };
2785
+ content?: never;
2786
+ };
2787
+ };
2788
+ };
2789
+ put?: never;
2790
+ post?: never;
2791
+ delete?: never;
2792
+ options?: never;
2793
+ head?: never;
2794
+ patch?: never;
2795
+ trace?: never;
2796
+ };
2797
+ "/api/v1/auth/verify-email/resend": {
2798
+ parameters: {
2799
+ query?: never;
2800
+ header?: never;
2801
+ path?: never;
2802
+ cookie?: never;
2803
+ };
2804
+ get?: never;
2805
+ put?: never;
2806
+ /** Re-enviar email de verificación al usuario logueado */
2807
+ post: {
2808
+ parameters: {
2809
+ query?: never;
2810
+ header?: never;
2811
+ path?: never;
2812
+ cookie?: never;
2813
+ };
2814
+ requestBody?: never;
2815
+ responses: {
2816
+ /** @description Default Response */
2817
+ 200: {
2818
+ headers: {
2819
+ [name: string]: unknown;
2820
+ };
2821
+ content?: never;
2822
+ };
2823
+ };
2824
+ };
2825
+ delete?: never;
2826
+ options?: never;
2827
+ head?: never;
2828
+ patch?: never;
2829
+ trace?: never;
2830
+ };
2831
+ "/api/v1/auth/me": {
2832
+ parameters: {
2833
+ query?: never;
2834
+ header?: never;
2835
+ path?: never;
2836
+ cookie?: never;
2837
+ };
2838
+ /** Datos del usuario actual */
2839
+ get: {
2840
+ parameters: {
2841
+ query?: never;
2842
+ header?: never;
2843
+ path?: never;
2844
+ cookie?: never;
2845
+ };
2846
+ requestBody?: never;
2847
+ responses: {
2848
+ /** @description Default Response */
2849
+ 200: {
2850
+ headers: {
2851
+ [name: string]: unknown;
2852
+ };
2853
+ content?: never;
2854
+ };
2855
+ };
2856
+ };
2857
+ put?: never;
2858
+ post?: never;
2859
+ delete?: never;
2860
+ options?: never;
2861
+ head?: never;
2862
+ patch?: never;
2863
+ trace?: never;
2864
+ };
2865
+ "/api/v1/auth/sessions": {
2866
+ parameters: {
2867
+ query?: never;
2868
+ header?: never;
2869
+ path?: never;
2870
+ cookie?: never;
2871
+ };
2872
+ /** Lista de sesiones activas del usuario */
2873
+ get: {
2874
+ parameters: {
2875
+ query?: never;
2876
+ header?: never;
2877
+ path?: never;
2878
+ cookie?: never;
2879
+ };
2880
+ requestBody?: never;
2881
+ responses: {
2882
+ /** @description Default Response */
2883
+ 200: {
2884
+ headers: {
2885
+ [name: string]: unknown;
2886
+ };
2887
+ content?: never;
2888
+ };
2889
+ };
2890
+ };
2891
+ put?: never;
2892
+ post?: never;
2893
+ delete?: never;
2894
+ options?: never;
2895
+ head?: never;
2896
+ patch?: never;
2897
+ trace?: never;
2898
+ };
2899
+ "/api/v1/auth/sessions/{id}": {
2900
+ parameters: {
2901
+ query?: never;
2902
+ header?: never;
2903
+ path?: never;
2904
+ cookie?: never;
2905
+ };
2906
+ get?: never;
2907
+ put?: never;
2908
+ post?: never;
2909
+ /** Revocar una sesión activa por ID */
2910
+ delete: {
2911
+ parameters: {
2912
+ query?: never;
2913
+ header?: never;
2914
+ path: {
2915
+ id: string;
2916
+ };
2917
+ cookie?: never;
2918
+ };
2919
+ requestBody?: never;
2920
+ responses: {
2921
+ /** @description Default Response */
2922
+ 200: {
2923
+ headers: {
2924
+ [name: string]: unknown;
2925
+ };
2926
+ content?: never;
2927
+ };
2928
+ };
2929
+ };
2930
+ options?: never;
2931
+ head?: never;
2932
+ patch?: never;
2933
+ trace?: never;
2934
+ };
2935
+ "/api/v1/public/consultar/{ruc}/{tipoDoc}/{serie}/{numero}": {
2936
+ parameters: {
2937
+ query?: never;
2938
+ header?: never;
2939
+ path?: never;
2940
+ cookie?: never;
2941
+ };
2942
+ /**
2943
+ * Consultar un comprobante (público, sin auth)
2944
+ * @description Verificación pública de un comprobante emitido. Retorna datos mínimos no sensibles. El parámetro `total` es opcional pero recomendado como anti-scraping (debe coincidir con el monto total).
2945
+ */
2946
+ get: {
2947
+ parameters: {
2948
+ query?: {
2949
+ total?: number;
2950
+ fecha?: string;
2951
+ receptor?: string;
2952
+ };
2953
+ header?: never;
2954
+ path: {
2955
+ ruc: string;
2956
+ tipoDoc: string;
2957
+ serie: string;
2958
+ numero: string;
2959
+ };
2960
+ cookie?: never;
2961
+ };
2962
+ requestBody?: never;
2963
+ responses: {
2964
+ /** @description Default Response */
2965
+ 200: {
2966
+ headers: {
2967
+ [name: string]: unknown;
2968
+ };
2969
+ content?: never;
2970
+ };
2971
+ };
2972
+ };
2973
+ put?: never;
2974
+ post?: never;
2975
+ delete?: never;
2976
+ options?: never;
2977
+ head?: never;
2978
+ patch?: never;
2979
+ trace?: never;
2980
+ };
2981
+ "/api/v1/public/consultar/{ruc}/{tipoDoc}/{serie}/{numero}/pdf": {
2982
+ parameters: {
2983
+ query?: never;
2984
+ header?: never;
2985
+ path?: never;
2986
+ cookie?: never;
2987
+ };
2988
+ /** Descargar PDF del comprobante (público) */
2989
+ get: {
2990
+ parameters: {
2991
+ query?: never;
2992
+ header?: never;
2993
+ path: {
2994
+ ruc: string;
2995
+ tipoDoc: string;
2996
+ serie: string;
2997
+ numero: string;
2998
+ };
2999
+ cookie?: never;
3000
+ };
3001
+ requestBody?: never;
3002
+ responses: {
3003
+ /** @description Default Response */
3004
+ 200: {
3005
+ headers: {
3006
+ [name: string]: unknown;
3007
+ };
3008
+ content?: never;
3009
+ };
3010
+ };
3011
+ };
3012
+ put?: never;
3013
+ post?: never;
3014
+ delete?: never;
3015
+ options?: never;
3016
+ head?: never;
3017
+ patch?: never;
3018
+ trace?: never;
3019
+ };
3020
+ "/api/v1/public/consultar/{ruc}/{tipoDoc}/{serie}/{numero}/xml": {
3021
+ parameters: {
3022
+ query?: never;
3023
+ header?: never;
3024
+ path?: never;
3025
+ cookie?: never;
3026
+ };
3027
+ /** Descargar XML firmado (público) */
3028
+ get: {
3029
+ parameters: {
3030
+ query?: never;
3031
+ header?: never;
3032
+ path: {
3033
+ ruc: string;
3034
+ tipoDoc: string;
3035
+ serie: string;
3036
+ numero: string;
3037
+ };
3038
+ cookie?: never;
3039
+ };
3040
+ requestBody?: never;
3041
+ responses: {
3042
+ /** @description Default Response */
3043
+ 200: {
3044
+ headers: {
3045
+ [name: string]: unknown;
3046
+ };
3047
+ content?: never;
3048
+ };
3049
+ };
3050
+ };
3051
+ put?: never;
3052
+ post?: never;
3053
+ delete?: never;
3054
+ options?: never;
3055
+ head?: never;
3056
+ patch?: never;
3057
+ trace?: never;
3058
+ };
3059
+ }
3060
+ export type webhooks = Record<string, never>;
3061
+ export interface components {
3062
+ schemas: never;
3063
+ responses: never;
3064
+ parameters: never;
3065
+ requestBodies: never;
3066
+ headers: never;
3067
+ pathItems: never;
3068
+ }
3069
+ export type $defs = Record<string, never>;
3070
+ export type operations = Record<string, never>;