fiscalapi 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.
Files changed (116) hide show
  1. package/LICENSE.txt +373 -0
  2. package/README.md +388 -0
  3. package/dist/cjs/abstractions/api-key-service.interface.js +3 -0
  4. package/dist/cjs/abstractions/catalog-service.interface.js +3 -0
  5. package/dist/cjs/abstractions/fiscalapi-client.interface.js +3 -0
  6. package/dist/cjs/abstractions/fiscalapi-service.interface.js +3 -0
  7. package/dist/cjs/abstractions/invoice-service.interface.js +3 -0
  8. package/dist/cjs/abstractions/person-service.interface.js +3 -0
  9. package/dist/cjs/abstractions/product-service.interface.js +3 -0
  10. package/dist/cjs/abstractions/tax-file-service.interface.js +3 -0
  11. package/dist/cjs/common/api-response.js +3 -0
  12. package/dist/cjs/common/auditable-dto.js +11 -0
  13. package/dist/cjs/common/base-dto.js +11 -0
  14. package/dist/cjs/common/catalog-dto.js +8 -0
  15. package/dist/cjs/common/file-response.js +3 -0
  16. package/dist/cjs/common/fiscalapi-settings.js +3 -0
  17. package/dist/cjs/common/paged-list.js +18 -0
  18. package/dist/cjs/common/serializable-dto.js +37 -0
  19. package/dist/cjs/http/fiscalapi-http-client-factory.js +66 -0
  20. package/dist/cjs/http/fiscalapi-http-client.interface.js +3 -0
  21. package/dist/cjs/http/fiscalapi-http-client.js +306 -0
  22. package/dist/cjs/index.js +31 -0
  23. package/dist/cjs/models/api-key.js +3 -0
  24. package/dist/cjs/models/invoice.js +3 -0
  25. package/dist/cjs/models/person.js +3 -0
  26. package/dist/cjs/models/product.js +3 -0
  27. package/dist/cjs/models/tax-file.js +3 -0
  28. package/dist/cjs/sdk-constants.js +25 -0
  29. package/dist/cjs/services/api-key-service.js +19 -0
  30. package/dist/cjs/services/base-fiscalapi-service.js +170 -0
  31. package/dist/cjs/services/catalog-service.js +51 -0
  32. package/dist/cjs/services/fiscalapi-client.js +67 -0
  33. package/dist/cjs/services/invoice-service.js +116 -0
  34. package/dist/cjs/services/person-service.js +19 -0
  35. package/dist/cjs/services/product-service.js +19 -0
  36. package/dist/cjs/services/tax-file-service.js +43 -0
  37. package/dist/cjs/utils/date-utils.js +36 -0
  38. package/dist/cjs/utils/encoding-utils.js +21 -0
  39. package/dist/cjs/utils/validation-utils.js +40 -0
  40. package/dist/esm/abstractions/api-key-service.interface.js +2 -0
  41. package/dist/esm/abstractions/catalog-service.interface.js +2 -0
  42. package/dist/esm/abstractions/fiscalapi-client.interface.js +2 -0
  43. package/dist/esm/abstractions/fiscalapi-service.interface.js +2 -0
  44. package/dist/esm/abstractions/invoice-service.interface.js +2 -0
  45. package/dist/esm/abstractions/person-service.interface.js +2 -0
  46. package/dist/esm/abstractions/product-service.interface.js +2 -0
  47. package/dist/esm/abstractions/tax-file-service.interface.js +2 -0
  48. package/dist/esm/common/api-response.js +2 -0
  49. package/dist/esm/common/auditable-dto.js +7 -0
  50. package/dist/esm/common/base-dto.js +7 -0
  51. package/dist/esm/common/catalog-dto.js +4 -0
  52. package/dist/esm/common/file-response.js +2 -0
  53. package/dist/esm/common/fiscalapi-settings.js +2 -0
  54. package/dist/esm/common/paged-list.js +14 -0
  55. package/dist/esm/common/serializable-dto.js +33 -0
  56. package/dist/esm/http/fiscalapi-http-client-factory.js +59 -0
  57. package/dist/esm/http/fiscalapi-http-client.interface.js +2 -0
  58. package/dist/esm/http/fiscalapi-http-client.js +302 -0
  59. package/dist/esm/index.js +13 -0
  60. package/dist/esm/models/api-key.js +2 -0
  61. package/dist/esm/models/invoice.js +2 -0
  62. package/dist/esm/models/person.js +2 -0
  63. package/dist/esm/models/product.js +2 -0
  64. package/dist/esm/models/tax-file.js +2 -0
  65. package/dist/esm/sdk-constants.js +22 -0
  66. package/dist/esm/services/api-key-service.js +15 -0
  67. package/dist/esm/services/base-fiscalapi-service.js +166 -0
  68. package/dist/esm/services/catalog-service.js +47 -0
  69. package/dist/esm/services/fiscalapi-client.js +63 -0
  70. package/dist/esm/services/invoice-service.js +112 -0
  71. package/dist/esm/services/person-service.js +15 -0
  72. package/dist/esm/services/product-service.js +15 -0
  73. package/dist/esm/services/tax-file-service.js +39 -0
  74. package/dist/esm/utils/date-utils.js +31 -0
  75. package/dist/esm/utils/encoding-utils.js +17 -0
  76. package/dist/esm/utils/validation-utils.js +34 -0
  77. package/dist/types/abstractions/api-key-service.interface.d.ts +7 -0
  78. package/dist/types/abstractions/catalog-service.interface.d.ts +27 -0
  79. package/dist/types/abstractions/fiscalapi-client.interface.d.ts +35 -0
  80. package/dist/types/abstractions/fiscalapi-service.interface.d.ts +94 -0
  81. package/dist/types/abstractions/invoice-service.interface.d.ts +39 -0
  82. package/dist/types/abstractions/person-service.interface.d.ts +7 -0
  83. package/dist/types/abstractions/product-service.interface.d.ts +7 -0
  84. package/dist/types/abstractions/tax-file-service.interface.d.ts +22 -0
  85. package/dist/types/common/api-response.d.ts +56 -0
  86. package/dist/types/common/auditable-dto.d.ts +9 -0
  87. package/dist/types/common/base-dto.d.ts +7 -0
  88. package/dist/types/common/catalog-dto.d.ts +8 -0
  89. package/dist/types/common/file-response.d.ts +18 -0
  90. package/dist/types/common/fiscalapi-settings.d.ts +30 -0
  91. package/dist/types/common/paged-list.d.ts +39 -0
  92. package/dist/types/common/serializable-dto.d.ts +10 -0
  93. package/dist/types/http/fiscalapi-http-client-factory.d.ts +22 -0
  94. package/dist/types/http/fiscalapi-http-client.d.ts +113 -0
  95. package/dist/types/http/fiscalapi-http-client.interface.d.ts +80 -0
  96. package/dist/types/index.d.ts +25 -0
  97. package/dist/types/models/api-key.d.ts +21 -0
  98. package/dist/types/models/invoice.d.ts +337 -0
  99. package/dist/types/models/person.d.ts +42 -0
  100. package/dist/types/models/product.d.ts +49 -0
  101. package/dist/types/models/tax-file.d.ts +23 -0
  102. package/dist/types/sdk-constants.d.ts +21 -0
  103. package/dist/types/services/api-key-service.d.ts +15 -0
  104. package/dist/types/services/base-fiscalapi-service.d.ts +72 -0
  105. package/dist/types/services/catalog-service.d.ts +34 -0
  106. package/dist/types/services/fiscalapi-client.d.ts +49 -0
  107. package/dist/types/services/invoice-service.d.ts +54 -0
  108. package/dist/types/services/person-service.d.ts +15 -0
  109. package/dist/types/services/product-service.d.ts +15 -0
  110. package/dist/types/services/tax-file-service.d.ts +30 -0
  111. package/dist/types/utils/date-utils.d.ts +17 -0
  112. package/dist/types/utils/encoding-utils.d.ts +12 -0
  113. package/dist/types/utils/validation-utils.d.ts +25 -0
  114. package/fiscalapi.ico +0 -0
  115. package/fiscalapi.png +0 -0
  116. package/package.json +64 -0
@@ -0,0 +1,25 @@
1
+ export { FiscalapiClient } from './services/fiscalapi-client';
2
+ export { IFiscalapiClient } from './abstractions/fiscalapi-client.interface';
3
+ export { IFiscalapiService } from './abstractions/fiscalapi-service.interface';
4
+ export { IApiKeyService } from './abstractions/api-key-service.interface';
5
+ export { ICatalogService } from './abstractions/catalog-service.interface';
6
+ export { IInvoiceService } from './abstractions/invoice-service.interface';
7
+ export { IPersonService } from './abstractions/person-service.interface';
8
+ export { IProductService } from './abstractions/product-service.interface';
9
+ export { ITaxFileService } from './abstractions/tax-file-service.interface';
10
+ export { ApiKey } from './models/api-key';
11
+ export { Person } from './models/person';
12
+ export { Product, ProductTax } from './models/product';
13
+ export { TaxFile } from './models/tax-file';
14
+ export { Invoice, InvoiceIssuer, InvoiceRecipient, InvoiceItem, InvoiceResponse, TaxCredential, RelatedInvoice, GlobalInformation, ItemTax, InvoicePayment, PaidInvoice, PaidInvoiceTax, CancelInvoiceRequest, CancelInvoiceResponse, InvoiceStatusRequest, InvoiceStatusResponse, CreatePdfRequest, SendInvoiceRequest } from './models/invoice';
15
+ export { FiscalapiSettings } from './common/fiscalapi-settings';
16
+ export { ApiResponse, ValidationFailure } from './common/api-response';
17
+ export { PagedList } from './common/paged-list';
18
+ export { FileResponse } from './common/file-response';
19
+ export { BaseDto } from './common/base-dto';
20
+ export { AuditableDto } from './common/auditable-dto';
21
+ export { SerializableDto } from './common/serializable-dto';
22
+ export { CatalogDto } from './common/catalog-dto';
23
+ export { formatSatDate, parseSatDate, SAT_DATE_FORMAT } from './utils/date-utils';
24
+ export { encodeToBase64, decodeFromBase64 } from './utils/encoding-utils';
25
+ export { isNullOrUndefined, isNullOrEmpty, isArrayNullOrEmpty, isObjectEmpty } from './utils/validation-utils';
@@ -0,0 +1,21 @@
1
+ import { BaseDto } from '../common/base-dto';
2
+ /**
3
+ * Modelo API Key
4
+ * Representa una clave de autenticación en fiscalapi
5
+ */
6
+ export interface ApiKey extends BaseDto {
7
+ /** El identificador único de la API key */
8
+ id?: string;
9
+ /** El entorno al que pertenece la API key */
10
+ environment?: string;
11
+ /** El API key. Este valor es el que se utiliza para autenticar las solicitudes */
12
+ apiKeyValue?: string;
13
+ /** El identificador único de la persona a la que pertenece la API key */
14
+ personId?: string;
15
+ /** El identificador único del tenant al que pertenece la API key */
16
+ tenantId?: string;
17
+ /** El estado de la API key. Valores: "0 Disabled | 1 Enabled " */
18
+ apiKeyStatus?: number;
19
+ /** Nombre o descripción de la API key */
20
+ description?: string;
21
+ }
@@ -0,0 +1,337 @@
1
+ import { DateTime } from 'luxon';
2
+ /**
3
+ * Modelo factura
4
+ * Contiene toda la información de una factura, como datos del emisor, receptor,
5
+ * productos/servicios, importes, método de pago, el tipo de factura, entre otros.
6
+ */
7
+ export interface Invoice {
8
+ /** Código de la versión de la facura. Default: "4.0" */
9
+ versionCode?: string;
10
+ /** Es el número de serie que utiliza el contribuyente para control interno de su información */
11
+ series: string;
12
+ /** Es la fecha y hora de expedición del comprobante fiscal. Se expresa en la forma AAAA-MM-DDThh:mm:ss */
13
+ date: DateTime | string;
14
+ /** Consecutivo de facturas por cuenta. Se incrementa con cada factura generada en tu cuenta de Fiscalapi */
15
+ consecutive?: number;
16
+ /** Consecutivo de facturas por RFC emisor. Se incrementa por cada factura generada por el mismo RFC emisor */
17
+ number?: number;
18
+ /** Subtotal de la factura. Campo de solo lectura */
19
+ subtotal?: number;
20
+ /** Descuento aplicado a la factura. Campo de solo lectura */
21
+ discount?: number;
22
+ /** Total de la factura. Campo de solo lectura */
23
+ total?: number;
24
+ /** UUID de la factura, es el folio fiscal asignado por el SAT al momento del timbrado */
25
+ uuid?: string;
26
+ /** Código de la forma de pago para la factura. Catálogo del SAT c_FormaPago */
27
+ paymentFormCode?: string;
28
+ /** Código de la moneda utilizada para expresar los montos. Default: "MXN" */
29
+ currencyCode: string;
30
+ /** Código de tipo de factura. Catálogo del SAT c_TipoDeComprobante */
31
+ typeCode: string;
32
+ /** Código postal del emisor */
33
+ expeditionZipCode: string;
34
+ /** Código que se identifica si la factura ampara una operación de exportación. Default: "01" */
35
+ exportCode: string;
36
+ /** Código de método para la factura de pago del catálogo del SAT c_MetodoPago */
37
+ paymentMethodCode?: string;
38
+ /** Tipo de cambio FIX conforme a la moneda registrada en la factura. Default: 1 */
39
+ exchangeRate?: number;
40
+ /** El emisor de la factura */
41
+ issuer: InvoiceIssuer;
42
+ /** Receptor de la factura */
43
+ recipient: InvoiceRecipient;
44
+ /** Conceptos de la factura (productos o servicios) */
45
+ items?: InvoiceItem[];
46
+ /** Informacion global. Utilizado cuando se genera una factura global */
47
+ globalInformation?: GlobalInformation;
48
+ /** Facturas relacionadas */
49
+ relatedInvoices?: RelatedInvoice[];
50
+ /** Pago o pagos recibidos para liquidar parcial o totalmente una factura de ingreso emitida previamente */
51
+ payments?: InvoicePayment[];
52
+ /** Respuesta del SAT. Contiene la información del timbrado. (Sólo lectura) */
53
+ responses?: InvoiceResponse[];
54
+ }
55
+ /**
56
+ * Emisor de la factura
57
+ */
58
+ export interface InvoiceIssuer {
59
+ /** ID de la persona (emisora) en fiscalapi */
60
+ id?: string;
61
+ /** RFC del emisor (Tax Identification Number) */
62
+ tin?: string;
63
+ /** Razón social del emisor sin regimen de capital */
64
+ legalName?: string;
65
+ /** Código del régimen fiscal del emisor. Catálogo del SAT c_RegimenFiscal */
66
+ taxRegimeCode?: string;
67
+ /** Sellos del emisor (archivos .cer y .key) */
68
+ taxCredentials?: TaxCredential[];
69
+ }
70
+ /**
71
+ * Sellos del emisor
72
+ */
73
+ export interface TaxCredential {
74
+ /** Archivo en formato base64 */
75
+ base64File: string;
76
+ /** Tipo de archivo. 0: Cetifiacdo CSD (archivo .cer), 1: Llave privada (archivo .key) */
77
+ fileType: number;
78
+ /** Contraseña del archivo .key. Debe ser la misma en ambos objetos (.cer y .key) */
79
+ password: string;
80
+ }
81
+ /**
82
+ * Receptor de la factura
83
+ */
84
+ export interface InvoiceRecipient {
85
+ /** ID de la persona (receptora) en fiscalapi */
86
+ id?: string;
87
+ /** RFC del receptor (Tax Identification Number) */
88
+ tin?: string;
89
+ /** Razón social del receptor sin regimen de capital */
90
+ legalName?: string;
91
+ /** Código del régimen fiscal del receptor. Catálogo del SAT c_RegimenFiscal */
92
+ taxRegimeCode?: string;
93
+ /** Código del uso CFDI. Catálogo del SAT c_UsoCFDI */
94
+ cfdiUseCode?: string;
95
+ /** Código postal del receptor */
96
+ zipCode?: string;
97
+ /** Correo electrónico del receptor. Para enviar la factura desde el dasborard */
98
+ email?: string;
99
+ }
100
+ /**
101
+ * Conceptos de la factura (productos o servicios)
102
+ */
103
+ export interface InvoiceItem {
104
+ /** ID del producto en fiscalapi */
105
+ id?: string;
106
+ /** Código del producto o servicio del catálogo c_ClaveProdServ */
107
+ itemCode?: string;
108
+ /** Cantidad del producto o servicio */
109
+ quantity: number | string;
110
+ /** Cantidad monetaria del descuento aplicado al producto o servicio */
111
+ discount?: number | string;
112
+ /** Código de la unidad de medida del producto o servicio. Catálogo c_ClaveUnidad */
113
+ unitOfMeasurementCode?: string;
114
+ /** Descripción del producto o servicio */
115
+ description?: string;
116
+ /** Precio unitario del producto o servicio. (Sin impuestos) */
117
+ unitPrice?: number | string;
118
+ /** Código de obligaciones de impuesto aplicables al producto o servicio. Catálogo c_ObjetoImp */
119
+ taxObjectCode?: string;
120
+ /** SKU o clave del sistema externo que identifica al producto o servicio */
121
+ itemSku?: string;
122
+ /** Impuestos aplicables al producto o servicio */
123
+ itemTaxes?: ItemTax[];
124
+ }
125
+ /**
126
+ * Impuestos aplicables al producto o servicio
127
+ */
128
+ export interface ItemTax {
129
+ /** Código del impuesto. Catálogo del SAT c_Impuesto */
130
+ taxCode: string;
131
+ /** Tipo de factor. Catálogo del SAT c_TipoFactor */
132
+ taxTypeCode: string;
133
+ /** Tasa del impuesto. Catálogo del SAT c_TasaOCuota */
134
+ taxRate?: string | number;
135
+ /** Código que indica la naturaleza del impuesto. "T": Impuesto Traslado, "R": Impuesto Retenido */
136
+ taxFlagCode: string;
137
+ }
138
+ /**
139
+ * Informacion global para factura global
140
+ */
141
+ export interface GlobalInformation {
142
+ /** Código de la periodicidad de la factura global. Catálogo del SAT c_Periodicidad */
143
+ periodicityCode: string;
144
+ /** Código del mes de la factura global. Catálogo del SAT c_Meses */
145
+ monthCode: string;
146
+ /** Año de la factura global a 4 dígitos */
147
+ year: number;
148
+ }
149
+ /**
150
+ * Facturas relacionadas
151
+ */
152
+ export interface RelatedInvoice {
153
+ /** Código de la relación de la factura relacionada. Catálogo del SAT c_TipoRelacion */
154
+ relationshipTypeCode: string;
155
+ /** UUID de la factura relacionada */
156
+ uuid: string;
157
+ }
158
+ /**
159
+ * Pago o pagos recibidos
160
+ */
161
+ export interface InvoicePayment {
162
+ /** Fecha de pago. Se expresa en la forma AAAA-MM-DDThh:mm:ss */
163
+ paymentDate: string;
164
+ /** Código de la forma de pago del pago recibido. Catálogo del SAT c_FormaPago */
165
+ paymentFormCode: string;
166
+ /** Código de la moneda utilizada en el pago. Catálogo del SAT c_Moneda. Default: "MXN" */
167
+ currencyCode: string;
168
+ /** Tipo de cambio FIX conforme a la moneda registrada en la factura. Default: 1 */
169
+ exchangeRate?: number | string;
170
+ /** Monto del pago */
171
+ amount: number | string;
172
+ /** RFC del banco origen. (Rfc del banco emisor del pago) */
173
+ sourceBankTin: string;
174
+ /** Cuenta bancaria origen. (Cuenta bancaria del banco emisor del pago) */
175
+ sourceBankAccount: string;
176
+ /** RFC del banco destino. (Rfc del banco receptor del pago) */
177
+ targetBankTin: string;
178
+ /** Cuenta bancaria destino (Cuenta bancaria del banco receptor del pago) */
179
+ targetBankAccount: string;
180
+ /** Facturas pagadas con el pago recibido */
181
+ paidInvoices: PaidInvoice[];
182
+ }
183
+ /**
184
+ * Facturas pagadas con el pago recibido
185
+ */
186
+ export interface PaidInvoice {
187
+ /** UUID de la factura pagada */
188
+ uuid: string;
189
+ /** Serie de la factura pagada */
190
+ series: string;
191
+ /** Monto pagado pagado en la factura */
192
+ paymentAmount: number | string;
193
+ /** Folio de la factura pagada */
194
+ number: string;
195
+ /** Código de la moneda utilizada en la factura pagada. Default: "MXN" */
196
+ currencyCode: string;
197
+ /** Número de parcialidad */
198
+ partialityNumber: number;
199
+ /** Subtotal de la factura pagada */
200
+ subTotal: number | string;
201
+ /** Saldo anterior de la factura pagada */
202
+ previousBalance: number | string;
203
+ /** Saldo restante de la factura pagada */
204
+ remainingBalance: number | string;
205
+ /** Código de obligaciones de impuesto aplicables a la factura pagada */
206
+ taxObjectCode: string;
207
+ /** Equivalencia de la moneda. Default: 1 */
208
+ equivalence?: number | string;
209
+ /** Impuestos aplicables a la factura pagada */
210
+ paidInvoiceTaxes: PaidInvoiceTax[];
211
+ }
212
+ /**
213
+ * Impuestos aplicables a la factura pagada
214
+ */
215
+ export interface PaidInvoiceTax {
216
+ /** Código del impuesto. Catálogo del SAT c_Impuesto */
217
+ taxCode: string;
218
+ /** Tipo de factor. Catálogo del SAT c_TipoFactor */
219
+ taxTypeCode: string;
220
+ /** Tasa del impuesto. Catálogo del SAT c_TasaOCuota */
221
+ taxRate: number | string;
222
+ /** Código que indica la naturaleza del impuesto. "T": Impuesto Traslado, "R": Impuesto Retenido */
223
+ taxFlagCode: string;
224
+ }
225
+ /**
226
+ * Respuesta del SAT. Contiene la información del timbrado
227
+ */
228
+ export interface InvoiceResponse {
229
+ /** ID de la respuesta */
230
+ id?: string;
231
+ /** ID de la factura a la que pertenece la respuesta */
232
+ invoiceId?: string;
233
+ /** Folio Fiscal (UUID) proporcionado por el SAT tras el timbrado de la factura */
234
+ invoiceUuid?: string;
235
+ /** Número de certificado del emisor */
236
+ invoiceCertificateNumber?: string;
237
+ /** Sello digital del CFDI en formato Base64 */
238
+ invoiceBase64Sello?: string;
239
+ /** Fecha y hora de la firma electrónica del CFDI por parte del emisor */
240
+ invoiceSignatureDate?: Date;
241
+ /** Imagen del código QR en formato Base64 */
242
+ invoiceBase64QrCode?: string;
243
+ /** XML de la factura en formato Base64 */
244
+ invoiceBase64?: string;
245
+ /** Sello digital del SAT en formato Base64 */
246
+ satBase64Sello?: string;
247
+ /** Cadena original de la factura codificado en Base64 */
248
+ satBase64OriginalString?: string;
249
+ /** Número de certificado del SAT */
250
+ satCertificateNumber?: string;
251
+ }
252
+ /**
253
+ * Modelo de cancelación de facturas
254
+ */
255
+ export interface CancelInvoiceRequest {
256
+ /** ID de la factura a cancelar */
257
+ id?: string;
258
+ /** UUID de la factura a cancelar */
259
+ invoiceUuid?: string;
260
+ /** RFC del emisor de la factura (Tax Identification Number) */
261
+ tin?: string;
262
+ /** Código del motivo de cancelación de la factura */
263
+ cancellationReasonCode: string;
264
+ /** UUID de la factura que sustituye a la factura cancelada */
265
+ replacementUuid?: string;
266
+ /** Sellos del emisor (archivos .cer y .key) */
267
+ taxCredentials?: TaxCredential[];
268
+ }
269
+ /**
270
+ * Modelo de respuesta de cancelación de facturas
271
+ */
272
+ export interface CancelInvoiceResponse {
273
+ /** Acuse de cancelación en formato base64 */
274
+ base64CancellationAcknowledgement?: string;
275
+ /** Diccionario de UUIDs de facturas con su respectivo código de estatus de cancelación */
276
+ invoiceUuids?: Record<string, string>;
277
+ }
278
+ /**
279
+ * Modelo de generación de pdf
280
+ */
281
+ export interface CreatePdfRequest {
282
+ /** ID de la factura para la cual se generará el PDF */
283
+ invoiceId: string;
284
+ /** Color de la banda del PDF en formato hexadecimal */
285
+ bandColor?: string;
286
+ /** Color de la fuente del texto sobre la banda en formato hexadecimal */
287
+ fontColor?: string;
288
+ /** Logotipo en formato base64 que se mostrará en el PDF */
289
+ base64Logo?: string;
290
+ }
291
+ /**
292
+ * Modelo de envío facturas por correo
293
+ */
294
+ export interface SendInvoiceRequest {
295
+ /** ID de la factura para la cual se generará el PDF */
296
+ invoiceId: string;
297
+ /** Correo electrónico del destinatario */
298
+ toEmail: string;
299
+ /** Color de la banda del PDF en formato hexadecimal */
300
+ bandColor?: string;
301
+ /** Color de la fuente del texto sobre la banda en formato hexadecimal */
302
+ fontColor?: string;
303
+ /** Logotipo en formato base64 que se mostrará en el PDF */
304
+ base64Logo?: string;
305
+ }
306
+ /**
307
+ * Modelo para consultar estado de facturas
308
+ */
309
+ export interface InvoiceStatusRequest {
310
+ /** Id de la factura a consultar */
311
+ id?: string;
312
+ /** RFC Emisor la factura */
313
+ issuerTin?: string;
314
+ /** RFC Receptor de la factura */
315
+ recipientTin?: string;
316
+ /** Total de la factura */
317
+ invoiceTotal?: number;
318
+ /** Folio fiscal factura a consultar */
319
+ invoiceUuid?: string;
320
+ /** Últimos ocho caracteres del sello digital del emisor */
321
+ last8DigitsIssuerSignature?: string;
322
+ }
323
+ /**
324
+ * Modelo de respuesta de consulta de estado de facturas
325
+ */
326
+ export interface InvoiceStatusResponse {
327
+ /** Código de estatus retornado por el SAT */
328
+ statusCode: string;
329
+ /** Estado actual de la factura. Posibles valores: 'Vigente' | 'Cancelado' | 'No Encontrado' */
330
+ status: string;
331
+ /** Indica si la factura es cancelable. Posibles valores: 'Cancelable con aceptación' | 'No cancelable' | 'Cancelable sin aceptación' */
332
+ cancelableStatus: string;
333
+ /** Detalle del estatus de cancelación */
334
+ cancellationStatus: string;
335
+ /** Codigo que indica si el RFC Emisor se encuentra dentro de la lista negra de EFOS */
336
+ efosValidation: string;
337
+ }
@@ -0,0 +1,42 @@
1
+ import { BaseDto } from '../common/base-dto';
2
+ import { CatalogDto } from '../common/catalog-dto';
3
+ /**
4
+ * Modelo persona
5
+ * Contiene toda la información de una persona emisor o receptor
6
+ */
7
+ export interface Person extends BaseDto {
8
+ /** Razón social de la persona sin régimen de capital */
9
+ legalName?: string;
10
+ /** Correo electrónico de la persona */
11
+ email?: string;
12
+ /** Contraseña para acceder al dashboard */
13
+ password?: string;
14
+ /** Régimen de capital de la persona */
15
+ capitalRegime?: string;
16
+ /** Código del régimen fiscal del emisor. Catálogo del SAT c_régimenFiscal. Valores: "601", "603", "605" */
17
+ satTaxRegimeId?: string;
18
+ /** Código del régimen fiscal del emisor expandido */
19
+ satTaxRegime?: CatalogDto;
20
+ /** Código de uso del CFDI por defecto cuando este emisor actúe como receptor. Catálogo del SAT c_UsoCFDI. Valores: "G01", "G02", "G03" */
21
+ satCfdiUseId?: string;
22
+ /** Código de uso del CFDI por defecto expandido */
23
+ satCfdiUse?: CatalogDto;
24
+ /** Tipo de persona, solo tiene fines informativos. Valores: "T", "C", "U" */
25
+ userTypeId?: string;
26
+ /** Tipo de persona expandido */
27
+ userType?: CatalogDto;
28
+ /** RFC del emisor (Tax Identification Number) */
29
+ tin?: string;
30
+ /** Código postal del emisor. Catálogo del SAT c_CodigoPostal */
31
+ zipCode?: string;
32
+ /** Foto de perfil del emisor en formato base64 */
33
+ base64Photo?: string;
34
+ /** Contraseña de los certificados CSD cuando es un emisor */
35
+ taxPassword?: string;
36
+ /** Saldo disponible en la cuenta del emisor. Atributo de sólo lectura */
37
+ availableBalance?: number;
38
+ /** Saldo en tránsito. Atributo de sólo lectura */
39
+ committedBalance?: number;
40
+ /** ID del tenant al que pertenece el emisor. Atributo de sólo lectura */
41
+ tenantId?: string;
42
+ }
@@ -0,0 +1,49 @@
1
+ import { BaseDto } from '../common/base-dto';
2
+ import { CatalogDto } from '../common/catalog-dto';
3
+ /**
4
+ * Modelo producto
5
+ * Contiene toda la información sobre un producto o servicio
6
+ */
7
+ export interface Product extends BaseDto {
8
+ /** Identificador único del producto */
9
+ id?: string;
10
+ /** Descripción o nombre del producto */
11
+ description?: string;
12
+ /** Precio unitario del producto sin impuestos */
13
+ unitPrice?: number;
14
+ /** Código de la unidad de medida. Catálogo del SAT c_ClaveUnidad. Default: "H87" */
15
+ satUnitMeasurementId?: string;
16
+ /** Código de la unidad de medida. Catálogo del SAT c_ClaveUnidad expandido */
17
+ satUnitMeasurement?: CatalogDto;
18
+ /** Código que identifica las obligaciones fiscales del producto. Catálogo del SAT c_ObjetoImp. Default: "02" */
19
+ satTaxObjectId?: string;
20
+ /** Código que identifica las obligaciones fiscales del producto. Catálogo del SAT c_ObjetoImp expandido */
21
+ satTaxObject?: CatalogDto;
22
+ /** Código del producto o servicio. Catálogo del SAT c_ClaveProdServ. Default: "01010101" */
23
+ satProductCodeId?: string;
24
+ /** Código del producto o servicio. Catálogo del SAT c_ClaveProdServ expandido */
25
+ satProductCode?: CatalogDto;
26
+ /** Impuestos aplicables al producto. Default: [IVA 16%] */
27
+ productTaxes?: ProductTax[];
28
+ }
29
+ /**
30
+ * Impuesto de producto
31
+ */
32
+ export interface ProductTax {
33
+ /** Id del producto asociado a este impuesto */
34
+ productId?: string;
35
+ /** Tasa del impuesto. El valor debe estar entre 0.00000 y 1.000000 p. ej. `0.160000` para un 16% de impuesto */
36
+ rate: number;
37
+ /** Impuesto. Catálogo del SAT c_Impuesto. "001" ISR | "002" IVA | "003" IEPS */
38
+ taxId: string;
39
+ /** Impuesto. Catálogo del SAT c_Impuesto. "001" ISR | "002" IVA | "003" IEPS Expandido */
40
+ tax?: CatalogDto;
41
+ /** Naturaleza del impuesto. "T" Traslado o "R" Retención */
42
+ taxFlagId: string;
43
+ /** Naturaleza del impuesto. "T" Traslado o "R" Retención Expandido */
44
+ taxFlag?: CatalogDto;
45
+ /** Tipo de impuesto "Tasa" Tasa | "Cuota" Cuota | "Exento" Exento */
46
+ taxTypeId: string;
47
+ /** Tipo de impuesto "Tasa" Tasa | "Cuota" Cuota | "Exento" Exento Expandido */
48
+ taxType?: CatalogDto;
49
+ }
@@ -0,0 +1,23 @@
1
+ import { BaseDto } from '../common/base-dto';
2
+ /**
3
+ * Modelo TaxFile
4
+ * Representa un componente individual de un par CSD - ya sea el certificado (.cer) o la llave privada (.key)
5
+ */
6
+ export interface TaxFile extends BaseDto {
7
+ /** Id de la persona propietaria del certificado */
8
+ personId: string;
9
+ /** RFC del propietario del certificado. Debe coincidir con el RFC del certificado */
10
+ tin: string;
11
+ /** Archivo certificado o llave privada en formato base64. Para certificados debe ser el archivo .cer codificado en base64, para llaves privadas debe ser el archivo .key codificado en base64 */
12
+ base64File: string;
13
+ /** Tipo de archivo que se está enviando. Valores: "01" */
14
+ fileType: number;
15
+ /** Contraseña de la llave privada. Independientemente si se envía un certificado o una llave privada, siempre se debe enviar la contraseña de la llave privada */
16
+ password: string;
17
+ /** Fecha de inicio de vigencia del certificado o llave privada. Calculado automáticamente */
18
+ validFrom?: Date;
19
+ /** Fecha de fin de vigencia del certificado o llave privada. Calculado automáticamente */
20
+ validTo?: Date;
21
+ /** Numero de secuencia que identifica el par entre certificado y llave privada. Sólo con fines informativos */
22
+ sequence?: number;
23
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Constantes utilizadas en todo el SDK
3
+ */
4
+ export declare const SdkConstants: {
5
+ /**
6
+ * Formato de fecha SAT (para facturas mexicanas)
7
+ */
8
+ SAT_DATE_FORMAT: string;
9
+ /**
10
+ * Versión predeterminada de la API
11
+ */
12
+ DEFAULT_API_VERSION: string;
13
+ /**
14
+ * Zona horaria predeterminada
15
+ */
16
+ DEFAULT_TIME_ZONE: string;
17
+ /**
18
+ * Tiempo de espera HTTP predeterminado en milisegundos
19
+ */
20
+ DEFAULT_HTTP_TIMEOUT: number;
21
+ };
@@ -0,0 +1,15 @@
1
+ import { ApiKey } from '../models/api-key';
2
+ import { IFiscalapiHttpClient } from '../http/fiscalapi-http-client.interface';
3
+ import { BaseFiscalapiService } from './base-fiscalapi-service';
4
+ import { IApiKeyService } from '..';
5
+ /**
6
+ * Implementación del servicio de claves de API
7
+ */
8
+ export declare class ApiKeyService extends BaseFiscalapiService<ApiKey> implements IApiKeyService {
9
+ /**
10
+ * Crea una nueva instancia del servicio de claves de API
11
+ * @param {IFiscalapiHttpClient} httpClient - Cliente HTTP
12
+ * @param {string} apiVersion - Versión de la API
13
+ */
14
+ constructor(httpClient: IFiscalapiHttpClient, apiVersion: string);
15
+ }
@@ -0,0 +1,72 @@
1
+ import { AxiosRequestConfig } from 'axios';
2
+ import { BaseDto } from '../common/base-dto';
3
+ import { ApiResponse } from '../common/api-response';
4
+ import { PagedList } from '../common/paged-list';
5
+ import { IFiscalapiHttpClient } from '../http/fiscalapi-http-client.interface';
6
+ import { IFiscalapiService, RequestOptions } from '../abstractions/fiscalapi-service.interface';
7
+ /**
8
+ * Implementación base de un servicio de FiscalAPI
9
+ * @template T - Tipo de DTO que maneja el servicio
10
+ */
11
+ export declare abstract class BaseFiscalapiService<T extends BaseDto> implements IFiscalapiService<T> {
12
+ /** Cliente HTTP */
13
+ protected readonly httpClient: IFiscalapiHttpClient;
14
+ /** Ruta del recurso */
15
+ protected readonly resourcePath: string;
16
+ /** Versión de la API */
17
+ protected readonly apiVersion: string;
18
+ /**
19
+ * Crea una nueva instancia del servicio base
20
+ * @param {IFiscalapiHttpClient} httpClient - Cliente HTTP
21
+ * @param {string} resourcePath - Ruta del recurso en la API
22
+ * @param {string} apiVersion - Versión de la API
23
+ */
24
+ constructor(httpClient: IFiscalapiHttpClient, resourcePath: string, apiVersion: string);
25
+ /**
26
+ * Construye una URL de endpoint de API
27
+ * @param {string} [path=''] - Segmento de ruta opcional
28
+ * @param {Record<string, string>} [queryParams] - Parámetros de consulta opcionales
29
+ * @returns {string} URL del endpoint
30
+ * @protected
31
+ */
32
+ protected buildEndpoint(path?: string, queryParams?: Record<string, string>): string;
33
+ /**
34
+ * Convierte los parámetros de consulta a un objeto compatible con la configuración de Axios
35
+ * @param {Record<string, string>} queryParams - Parámetros de consulta
36
+ * @returns {AxiosRequestConfig} Configuración de Axios con los parámetros
37
+ * @protected
38
+ */
39
+ protected createConfigWithParams(queryParams?: Record<string, string>): AxiosRequestConfig;
40
+ /**
41
+ * Ejecuta una petición HTTP personalizada con máxima flexibilidad
42
+ * @param {RequestOptions<TData>} options - Opciones para la petición
43
+ * @returns {Promise<ApiResponse<TResult>>} Resultado de la petición
44
+ * @template TResult - Tipo de resultado esperado
45
+ * @template TData - Tipo de datos de entrada
46
+ */
47
+ executeRequest<TResult, TData = any>(options: RequestOptions<TData>): Promise<ApiResponse<TResult>>;
48
+ /**
49
+ * @inheritdoc
50
+ */
51
+ getList(pageNumber: number, pageSize: number): Promise<ApiResponse<PagedList<T>>>;
52
+ /**
53
+ * @inheritdoc
54
+ */
55
+ getById(id: string, details?: boolean): Promise<ApiResponse<T>>;
56
+ /**
57
+ * @inheritdoc
58
+ */
59
+ create(model: T): Promise<ApiResponse<T>>;
60
+ /**
61
+ * @inheritdoc
62
+ */
63
+ update(model: T): Promise<ApiResponse<T>>;
64
+ /**
65
+ * @inheritdoc
66
+ */
67
+ delete(id: string): Promise<ApiResponse<boolean>>;
68
+ /**
69
+ * @inheritdoc
70
+ */
71
+ search(searchParams: Record<string, string>): Promise<ApiResponse<PagedList<T>>>;
72
+ }
@@ -0,0 +1,34 @@
1
+ import { CatalogDto } from '../common/catalog-dto';
2
+ import { IFiscalapiHttpClient } from '../http/fiscalapi-http-client.interface';
3
+ import { ApiResponse } from '../common/api-response';
4
+ import { BaseFiscalapiService } from './base-fiscalapi-service';
5
+ import { ICatalogService, PagedList } from '..';
6
+ /**
7
+ * Implementación del servicio de catálogos
8
+ */
9
+ export declare class CatalogService extends BaseFiscalapiService<CatalogDto> implements ICatalogService {
10
+ /**
11
+ * Crea una nueva instancia del servicio de catálogos
12
+ * @param {IFiscalapiHttpClient} httpClient - Cliente HTTP
13
+ * @param {string} apiVersion - Versión de la API
14
+ */
15
+ constructor(httpClient: IFiscalapiHttpClient, apiVersion: string);
16
+ /**
17
+ * Recupera un registro de un catálogo por catalogName y id.
18
+ *
19
+ * @param catalogName - Nombre del catálogo
20
+ * @param id - Id del registro en el catalogName
21
+ * @returns Promise que resuelve en una respuesta API con CatalogDto
22
+ */
23
+ getRecordById(catalogName: string, id: string): Promise<ApiResponse<CatalogDto>>;
24
+ /**
25
+ * Busca en un catálogo.
26
+ *
27
+ * @param catalogName - Catalog name. Must be a catalog retrieved from getList()
28
+ * @param searchText - Criterio de búsqueda. Debe tener 4 caracteres de longitud como mínimo.
29
+ * @param pageNumber - Numero de pagina a recuperar (default: 1)
30
+ * @param pageSize - Tamaño de la página entre 1 y 100 registros por página (default: 50)
31
+ * @returns Promise que resuelve en una respuesta API con lista paginada de CatalogDto
32
+ */
33
+ searchCatalog(catalogName: string, searchText: string, pageNumber?: number, pageSize?: number): Promise<ApiResponse<PagedList<CatalogDto>>>;
34
+ }