@factucat/public-api-contracts 0.2.1 → 0.4.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.
- package/dist/customers.d.ts +8 -2
- package/dist/customers.d.ts.map +1 -1
- package/dist/customers.js +24 -2
- package/dist/customers.js.map +1 -1
- package/dist/customers.test.d.ts +2 -0
- package/dist/customers.test.d.ts.map +1 -0
- package/dist/customers.test.js +113 -0
- package/dist/customers.test.js.map +1 -0
- package/dist/envelope.d.ts +27 -0
- package/dist/envelope.d.ts.map +1 -1
- package/dist/envelope.js +13 -0
- package/dist/envelope.js.map +1 -1
- package/dist/envelope.test.d.ts +2 -0
- package/dist/envelope.test.d.ts.map +1 -0
- package/dist/envelope.test.js +27 -0
- package/dist/envelope.test.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/invoices.d.ts +213 -14
- package/dist/invoices.d.ts.map +1 -1
- package/dist/invoices.js +120 -10
- package/dist/invoices.js.map +1 -1
- package/dist/invoices.test.d.ts +2 -0
- package/dist/invoices.test.d.ts.map +1 -0
- package/dist/invoices.test.js +17 -0
- package/dist/invoices.test.js.map +1 -0
- package/dist/openapi.d.ts +44 -0
- package/dist/openapi.d.ts.map +1 -0
- package/dist/openapi.js +291 -0
- package/dist/openapi.js.map +1 -0
- package/package.json +11 -2
package/dist/customers.d.ts
CHANGED
|
@@ -8,11 +8,15 @@ export declare const customerInvoiceLanguageSchema: z.ZodEnum<{
|
|
|
8
8
|
es: "es";
|
|
9
9
|
en: "en";
|
|
10
10
|
}>;
|
|
11
|
+
export declare const postalCodeInputSchema: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>, z.ZodTransform<string, string | number>>, z.ZodString>;
|
|
12
|
+
export declare const taxRegimeInputSchema: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>, z.ZodTransform<string, string | number>>, z.ZodString>;
|
|
13
|
+
export declare const paymentFormInputSchema: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>, z.ZodTransform<string, string | number>>, z.ZodString>;
|
|
11
14
|
export declare const customerCreateInputSchema: z.ZodObject<{
|
|
12
15
|
legalName: z.ZodString;
|
|
13
16
|
rfc: z.ZodString;
|
|
14
|
-
postalCode: z.ZodString
|
|
15
|
-
taxRegime: z.ZodString
|
|
17
|
+
postalCode: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>, z.ZodTransform<string, string | number>>, z.ZodString>;
|
|
18
|
+
taxRegime: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>, z.ZodTransform<string, string | number>>, z.ZodString>;
|
|
19
|
+
preferredCfdiUse: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
16
20
|
fiscalResidence: z.ZodOptional<z.ZodString>;
|
|
17
21
|
taxId: z.ZodOptional<z.ZodString>;
|
|
18
22
|
email: z.ZodOptional<z.ZodEmail>;
|
|
@@ -35,6 +39,7 @@ export declare const customerRecordSchema: z.ZodObject<{
|
|
|
35
39
|
rfc: z.ZodString;
|
|
36
40
|
postalCode: z.ZodString;
|
|
37
41
|
taxRegime: z.ZodString;
|
|
42
|
+
preferredCfdiUse: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
38
43
|
fiscalResidence: z.ZodOptional<z.ZodString>;
|
|
39
44
|
taxId: z.ZodOptional<z.ZodString>;
|
|
40
45
|
email: z.ZodOptional<z.ZodEmail>;
|
|
@@ -55,6 +60,7 @@ export declare const customerRecordSchema: z.ZodObject<{
|
|
|
55
60
|
export declare const customerListQuerySchema: z.ZodObject<{
|
|
56
61
|
query: z.ZodOptional<z.ZodString>;
|
|
57
62
|
limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
63
|
+
offset: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
58
64
|
}, z.core.$strip>;
|
|
59
65
|
export type CustomerCreateInput = z.infer<typeof customerCreateInputSchema>;
|
|
60
66
|
export type CustomerRecord = z.infer<typeof customerRecordSchema>;
|
package/dist/customers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customers.d.ts","sourceRoot":"","sources":["../src/customers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,sBAAsB;;;;EAAgC,CAAA;AACnE,eAAO,MAAM,6BAA6B;;;EAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"customers.d.ts","sourceRoot":"","sources":["../src/customers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,sBAAsB;;;;EAAgC,CAAA;AACnE,eAAO,MAAM,6BAA6B;;;EAAuB,CAAA;AAajE,eAAO,MAAM,qBAAqB,6HAKjC,CAAA;AAED,eAAO,MAAM,oBAAoB,6HAEhC,CAAA;AAED,eAAO,MAAM,sBAAsB,6HAKlC,CAAA;AAED,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;iBAapC,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;iBAiB/B,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;iBAIlC,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAC3E,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AACjE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
|
package/dist/customers.js
CHANGED
|
@@ -1,11 +1,31 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export const customerCurrencySchema = z.enum(['MXN', 'USD', 'EUR']);
|
|
3
3
|
export const customerInvoiceLanguageSchema = z.enum(['es', 'en']);
|
|
4
|
+
function codeLikeStringSchema(width) {
|
|
5
|
+
return z
|
|
6
|
+
.union([z.string(), z.number().int().nonnegative()])
|
|
7
|
+
.transform((value) => {
|
|
8
|
+
const normalized = String(value).trim();
|
|
9
|
+
return /^\d+$/.test(normalized)
|
|
10
|
+
? normalized.padStart(width, '0')
|
|
11
|
+
: normalized;
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
export const postalCodeInputSchema = codeLikeStringSchema(5).pipe(z
|
|
15
|
+
.string()
|
|
16
|
+
.trim()
|
|
17
|
+
.regex(/^\d{5}$/));
|
|
18
|
+
export const taxRegimeInputSchema = codeLikeStringSchema(3).pipe(z.string().trim().min(1).max(10));
|
|
19
|
+
export const paymentFormInputSchema = codeLikeStringSchema(2).pipe(z
|
|
20
|
+
.string()
|
|
21
|
+
.trim()
|
|
22
|
+
.regex(/^\d{2}$/));
|
|
4
23
|
export const customerCreateInputSchema = z.object({
|
|
5
24
|
legalName: z.string().trim().min(2).max(200),
|
|
6
25
|
rfc: z.string().trim().min(12).max(13),
|
|
7
|
-
postalCode:
|
|
8
|
-
taxRegime:
|
|
26
|
+
postalCode: postalCodeInputSchema,
|
|
27
|
+
taxRegime: taxRegimeInputSchema,
|
|
28
|
+
preferredCfdiUse: z.string().trim().min(3).max(4).nullish(),
|
|
9
29
|
fiscalResidence: z.string().trim().min(3).max(3).optional(),
|
|
10
30
|
taxId: z.string().trim().max(80).optional(),
|
|
11
31
|
email: z.email().optional(),
|
|
@@ -21,6 +41,7 @@ export const customerRecordSchema = z.object({
|
|
|
21
41
|
rfc: z.string(),
|
|
22
42
|
postalCode: z.string(),
|
|
23
43
|
taxRegime: z.string(),
|
|
44
|
+
preferredCfdiUse: z.string().nullish(),
|
|
24
45
|
fiscalResidence: z.string().optional(),
|
|
25
46
|
taxId: z.string().optional(),
|
|
26
47
|
email: z.email().optional(),
|
|
@@ -34,5 +55,6 @@ export const customerRecordSchema = z.object({
|
|
|
34
55
|
export const customerListQuerySchema = z.object({
|
|
35
56
|
query: z.string().trim().min(1).max(120).optional(),
|
|
36
57
|
limit: z.coerce.number().int().min(1).max(100).optional(),
|
|
58
|
+
offset: z.coerce.number().int().min(0).max(1000000).optional(),
|
|
37
59
|
});
|
|
38
60
|
//# sourceMappingURL=customers.js.map
|
package/dist/customers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customers.js","sourceRoot":"","sources":["../src/customers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;AACnE,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAEjE,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"customers.js","sourceRoot":"","sources":["../src/customers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customers.test.d.ts","sourceRoot":"","sources":["../src/customers.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { customerCreateInputSchema, paymentFormInputSchema, postalCodeInputSchema, taxRegimeInputSchema, } from './customers';
|
|
3
|
+
import { cfdiExportacionSchema, draftCreateInputSchema, draftSetMetaInputSchema, draftSetReceiverInputSchema, draftStampInputSchema, externalInvoiceCancelInputSchema, invoiceCancelInputSchema, } from './invoices';
|
|
4
|
+
describe('public API code-like inputs', () => {
|
|
5
|
+
it('accepts omitted, set and cleared customer UsoCFDI preferences', () => {
|
|
6
|
+
const customer = { legalName: 'CLIENTE DE PRUEBA', rfc: 'XIA190128J61', postalCode: '06000', taxRegime: '601' };
|
|
7
|
+
expect(customerCreateInputSchema.parse(customer).preferredCfdiUse).toBeUndefined();
|
|
8
|
+
expect(customerCreateInputSchema.parse({ ...customer, preferredCfdiUse: ' G03 ' }).preferredCfdiUse).toBe('G03');
|
|
9
|
+
expect(customerCreateInputSchema.parse({ ...customer, preferredCfdiUse: null }).preferredCfdiUse).toBeNull();
|
|
10
|
+
});
|
|
11
|
+
it('normalizes postal code and tax regime numbers into strings', () => {
|
|
12
|
+
const parsed = customerCreateInputSchema.parse({
|
|
13
|
+
legalName: 'Cesar Ivan Ochoa Elias',
|
|
14
|
+
rfc: 'OOEC691028179',
|
|
15
|
+
postalCode: 45645,
|
|
16
|
+
taxRegime: 605,
|
|
17
|
+
email: 'ochoa_cesar@hotmail.com',
|
|
18
|
+
});
|
|
19
|
+
expect(parsed.postalCode).toBe('45645');
|
|
20
|
+
expect(parsed.taxRegime).toBe('605');
|
|
21
|
+
});
|
|
22
|
+
it('restores leading zeros for fixed-width numeric codes', () => {
|
|
23
|
+
expect(postalCodeInputSchema.parse(6700)).toBe('06700');
|
|
24
|
+
expect(taxRegimeInputSchema.parse(5)).toBe('005');
|
|
25
|
+
expect(paymentFormInputSchema.parse(3)).toBe('03');
|
|
26
|
+
});
|
|
27
|
+
it('preserves explicit string values with leading zeros', () => {
|
|
28
|
+
expect(postalCodeInputSchema.parse('04567')).toBe('04567');
|
|
29
|
+
expect(taxRegimeInputSchema.parse('0605')).toBe('0605');
|
|
30
|
+
});
|
|
31
|
+
it('accepts normalized numeric codes in draft endpoints', () => {
|
|
32
|
+
const receiver = draftSetReceiverInputSchema.parse({
|
|
33
|
+
receiverPostalCode: 1234,
|
|
34
|
+
receiverTaxRegime: 605,
|
|
35
|
+
});
|
|
36
|
+
const meta = draftSetMetaInputSchema.parse({
|
|
37
|
+
paymentForm: 3,
|
|
38
|
+
});
|
|
39
|
+
expect(receiver.receiverPostalCode).toBe('01234');
|
|
40
|
+
expect(receiver.receiverTaxRegime).toBe('605');
|
|
41
|
+
expect(meta.paymentForm).toBe('03');
|
|
42
|
+
});
|
|
43
|
+
it('accepts only SAT c_Exportacion values', () => {
|
|
44
|
+
expect(cfdiExportacionSchema.safeParse('01').success).toBe(true);
|
|
45
|
+
expect(cfdiExportacionSchema.safeParse('02').success).toBe(true);
|
|
46
|
+
expect(cfdiExportacionSchema.safeParse('03').success).toBe(true);
|
|
47
|
+
expect(cfdiExportacionSchema.safeParse('04').success).toBe(true);
|
|
48
|
+
expect(cfdiExportacionSchema.safeParse('99').success).toBe(false);
|
|
49
|
+
const created = draftCreateInputSchema.parse({ exportacion: '02' });
|
|
50
|
+
const meta = draftSetMetaInputSchema.parse({ exportacion: '02' });
|
|
51
|
+
expect(created.exportacion).toBe('02');
|
|
52
|
+
expect(meta.exportacion).toBe('02');
|
|
53
|
+
});
|
|
54
|
+
it('accepts CFDI relacionados when stamping a draft through the public API', () => {
|
|
55
|
+
const parsed = draftStampInputSchema.parse({
|
|
56
|
+
cfdi_relacionados: {
|
|
57
|
+
tipo_relacion: '04',
|
|
58
|
+
cfdi_relacionado: ['E7B2B5CE-4A6C-4C48-9F0A-ED8F49C8D6A1'],
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
expect(parsed.cfdi_relacionados).toEqual({
|
|
62
|
+
tipo_relacion: '04',
|
|
63
|
+
cfdi_relacionado: ['E7B2B5CE-4A6C-4C48-9F0A-ED8F49C8D6A1'],
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
it('accepts substitution cancellation of an internal original when stamping a draft', () => {
|
|
67
|
+
const parsed = draftStampInputSchema.parse({
|
|
68
|
+
substitution: {
|
|
69
|
+
cancel_original: true,
|
|
70
|
+
original_invoice_id: '11111111-1111-4111-8111-111111111111',
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
expect(parsed.substitution).toEqual({
|
|
74
|
+
cancel_original: true,
|
|
75
|
+
original_invoice_id: '11111111-1111-4111-8111-111111111111',
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
it('requires exactly one original source for draft stamp substitution', () => {
|
|
79
|
+
expect(draftStampInputSchema.safeParse({
|
|
80
|
+
substitution: { cancel_original: true },
|
|
81
|
+
}).success).toBe(false);
|
|
82
|
+
expect(draftStampInputSchema.safeParse({
|
|
83
|
+
substitution: {
|
|
84
|
+
cancel_original: true,
|
|
85
|
+
original_invoice_id: '11111111-1111-4111-8111-111111111111',
|
|
86
|
+
external_original_sat_uuid: '22222222-2222-4222-8222-222222222222',
|
|
87
|
+
external_original_receiver_rfc: 'XAXX010101000',
|
|
88
|
+
external_original_total: '116.00',
|
|
89
|
+
},
|
|
90
|
+
}).success).toBe(false);
|
|
91
|
+
});
|
|
92
|
+
it('accepts internal and external invoice cancellation inputs', () => {
|
|
93
|
+
const replacementInvoiceId = '11111111-1111-4111-8111-111111111111';
|
|
94
|
+
expect(invoiceCancelInputSchema.parse({
|
|
95
|
+
reason: '01',
|
|
96
|
+
replacementInvoiceId,
|
|
97
|
+
})).toEqual({
|
|
98
|
+
reason: '01',
|
|
99
|
+
replacementInvoiceId,
|
|
100
|
+
});
|
|
101
|
+
const external = externalInvoiceCancelInputSchema.parse({
|
|
102
|
+
satUuid: '22222222-2222-4222-8222-222222222222',
|
|
103
|
+
reason: '01',
|
|
104
|
+
receiverRfc: 'XEXX010101000',
|
|
105
|
+
total: '4142.00',
|
|
106
|
+
replacementSatUuid: '33333333-3333-4333-8333-333333333333',
|
|
107
|
+
});
|
|
108
|
+
expect(external.receiverRfc).toBe('XEXX010101000');
|
|
109
|
+
expect(external.total).toBe('4142.00');
|
|
110
|
+
expect(external.replacementSatUuid).toBe('33333333-3333-4333-8333-333333333333');
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
//# sourceMappingURL=customers.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customers.test.js","sourceRoot":"","sources":["../src/customers.test.ts"],"names":[],"mappings":"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"}
|
package/dist/envelope.d.ts
CHANGED
|
@@ -2,6 +2,11 @@ import { z } from 'zod';
|
|
|
2
2
|
export declare const publicResponseMetaSchema: z.ZodObject<{
|
|
3
3
|
requestId: z.ZodString;
|
|
4
4
|
idempotencyKey: z.ZodOptional<z.ZodString>;
|
|
5
|
+
pagination: z.ZodOptional<z.ZodObject<{
|
|
6
|
+
limit: z.ZodNumber;
|
|
7
|
+
offset: z.ZodNumber;
|
|
8
|
+
hasMore: z.ZodBoolean;
|
|
9
|
+
}, z.core.$strip>>;
|
|
5
10
|
}, z.core.$strip>;
|
|
6
11
|
export declare const publicApiErrorCodeSchema: z.ZodEnum<{
|
|
7
12
|
bad_request: "bad_request";
|
|
@@ -14,7 +19,12 @@ export declare const publicApiErrorCodeSchema: z.ZodEnum<{
|
|
|
14
19
|
missing_idempotency_key: "missing_idempotency_key";
|
|
15
20
|
missing_scope: "missing_scope";
|
|
16
21
|
not_found: "not_found";
|
|
22
|
+
plan_required: "plan_required";
|
|
23
|
+
forbidden: "forbidden";
|
|
24
|
+
rate_limit_exceeded: "rate_limit_exceeded";
|
|
17
25
|
validation_error: "validation_error";
|
|
26
|
+
invalid_input: "invalid_input";
|
|
27
|
+
INVALID_ISSUE_DATE: "INVALID_ISSUE_DATE";
|
|
18
28
|
idempotency_conflict: "idempotency_conflict";
|
|
19
29
|
idempotency_in_progress: "idempotency_in_progress";
|
|
20
30
|
}>;
|
|
@@ -30,13 +40,19 @@ export declare const publicErrorSchema: z.ZodObject<{
|
|
|
30
40
|
missing_idempotency_key: "missing_idempotency_key";
|
|
31
41
|
missing_scope: "missing_scope";
|
|
32
42
|
not_found: "not_found";
|
|
43
|
+
plan_required: "plan_required";
|
|
44
|
+
forbidden: "forbidden";
|
|
45
|
+
rate_limit_exceeded: "rate_limit_exceeded";
|
|
33
46
|
validation_error: "validation_error";
|
|
47
|
+
invalid_input: "invalid_input";
|
|
48
|
+
INVALID_ISSUE_DATE: "INVALID_ISSUE_DATE";
|
|
34
49
|
idempotency_conflict: "idempotency_conflict";
|
|
35
50
|
idempotency_in_progress: "idempotency_in_progress";
|
|
36
51
|
}>;
|
|
37
52
|
message: z.ZodString;
|
|
38
53
|
requestId: z.ZodString;
|
|
39
54
|
retryable: z.ZodDefault<z.ZodBoolean>;
|
|
55
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
40
56
|
}, z.core.$strip>;
|
|
41
57
|
export declare const publicErrorEnvelopeSchema: z.ZodObject<{
|
|
42
58
|
error: z.ZodObject<{
|
|
@@ -51,13 +67,19 @@ export declare const publicErrorEnvelopeSchema: z.ZodObject<{
|
|
|
51
67
|
missing_idempotency_key: "missing_idempotency_key";
|
|
52
68
|
missing_scope: "missing_scope";
|
|
53
69
|
not_found: "not_found";
|
|
70
|
+
plan_required: "plan_required";
|
|
71
|
+
forbidden: "forbidden";
|
|
72
|
+
rate_limit_exceeded: "rate_limit_exceeded";
|
|
54
73
|
validation_error: "validation_error";
|
|
74
|
+
invalid_input: "invalid_input";
|
|
75
|
+
INVALID_ISSUE_DATE: "INVALID_ISSUE_DATE";
|
|
55
76
|
idempotency_conflict: "idempotency_conflict";
|
|
56
77
|
idempotency_in_progress: "idempotency_in_progress";
|
|
57
78
|
}>;
|
|
58
79
|
message: z.ZodString;
|
|
59
80
|
requestId: z.ZodString;
|
|
60
81
|
retryable: z.ZodDefault<z.ZodBoolean>;
|
|
82
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
61
83
|
}, z.core.$strip>;
|
|
62
84
|
}, z.core.$strip>;
|
|
63
85
|
export declare function createPublicSuccessEnvelopeSchema<TSchema extends z.ZodTypeAny>(dataSchema: TSchema): z.ZodObject<{
|
|
@@ -65,6 +87,11 @@ export declare function createPublicSuccessEnvelopeSchema<TSchema extends z.ZodT
|
|
|
65
87
|
meta: z.ZodObject<{
|
|
66
88
|
requestId: z.ZodString;
|
|
67
89
|
idempotencyKey: z.ZodOptional<z.ZodString>;
|
|
90
|
+
pagination: z.ZodOptional<z.ZodObject<{
|
|
91
|
+
limit: z.ZodNumber;
|
|
92
|
+
offset: z.ZodNumber;
|
|
93
|
+
hasMore: z.ZodBoolean;
|
|
94
|
+
}, z.core.$strip>>;
|
|
68
95
|
}, z.core.$strip>;
|
|
69
96
|
}, z.core.$strip>;
|
|
70
97
|
export type PublicResponseMeta = z.infer<typeof publicResponseMetaSchema>;
|
package/dist/envelope.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,wBAAwB
|
|
1
|
+
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,wBAAwB;;;;;;;;iBAUnC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;EAmBnC,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;iBAM5B,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAEpC,CAAA;AAEF,wBAAgB,iCAAiC,CAAC,OAAO,SAAS,CAAC,CAAC,UAAU,EAC5E,UAAU,EAAE,OAAO;;;;;;;;;;;kBAMpB;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AACzE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AACzE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA"}
|
package/dist/envelope.js
CHANGED
|
@@ -2,6 +2,13 @@ import { z } from 'zod';
|
|
|
2
2
|
export const publicResponseMetaSchema = z.object({
|
|
3
3
|
requestId: z.string().trim().min(1),
|
|
4
4
|
idempotencyKey: z.string().trim().min(1).optional(),
|
|
5
|
+
pagination: z
|
|
6
|
+
.object({
|
|
7
|
+
limit: z.number().int().positive(),
|
|
8
|
+
offset: z.number().int().nonnegative(),
|
|
9
|
+
hasMore: z.boolean(),
|
|
10
|
+
})
|
|
11
|
+
.optional(),
|
|
5
12
|
});
|
|
6
13
|
export const publicApiErrorCodeSchema = z.enum([
|
|
7
14
|
'bad_request',
|
|
@@ -14,7 +21,12 @@ export const publicApiErrorCodeSchema = z.enum([
|
|
|
14
21
|
'missing_idempotency_key',
|
|
15
22
|
'missing_scope',
|
|
16
23
|
'not_found',
|
|
24
|
+
'plan_required',
|
|
25
|
+
'forbidden',
|
|
26
|
+
'rate_limit_exceeded',
|
|
17
27
|
'validation_error',
|
|
28
|
+
'invalid_input',
|
|
29
|
+
'INVALID_ISSUE_DATE',
|
|
18
30
|
'idempotency_conflict',
|
|
19
31
|
'idempotency_in_progress',
|
|
20
32
|
]);
|
|
@@ -23,6 +35,7 @@ export const publicErrorSchema = z.object({
|
|
|
23
35
|
message: z.string().trim().min(1),
|
|
24
36
|
requestId: z.string().trim().min(1),
|
|
25
37
|
retryable: z.boolean().default(false),
|
|
38
|
+
reason: z.string().optional(),
|
|
26
39
|
});
|
|
27
40
|
export const publicErrorEnvelopeSchema = z.object({
|
|
28
41
|
error: publicErrorSchema,
|
package/dist/envelope.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnD,UAAU,EAAE,CAAC;SACV,MAAM,CAAC;QACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;QACtC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;KACrB,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC7C,aAAa;IACb,UAAU;IACV,gBAAgB;IAChB,iBAAiB;IACjB,cAAc;IACd,oBAAoB;IACpB,iBAAiB;IACjB,yBAAyB;IACzB,eAAe;IACf,WAAW;IACX,eAAe;IACf,WAAW;IACX,qBAAqB;IACrB,kBAAkB;IAClB,eAAe;IACf,oBAAoB;IACpB,sBAAsB;IACtB,yBAAyB;CAC1B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,wBAAwB;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACrC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,KAAK,EAAE,iBAAiB;CACzB,CAAC,CAAA;AAEF,MAAM,UAAU,iCAAiC,CAC/C,UAAmB;IAEnB,OAAO,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,wBAAwB;KAC/B,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envelope.test.d.ts","sourceRoot":"","sources":["../src/envelope.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { publicApiErrorCodeSchema, publicErrorEnvelopeSchema } from './envelope';
|
|
3
|
+
describe('publicApiErrorCodeSchema', () => {
|
|
4
|
+
it('includes plan and rate-limit codes for the public REST envelope', () => {
|
|
5
|
+
expect(publicApiErrorCodeSchema.parse('plan_required')).toBe('plan_required');
|
|
6
|
+
expect(publicApiErrorCodeSchema.parse('rate_limit_exceeded')).toBe('rate_limit_exceeded');
|
|
7
|
+
});
|
|
8
|
+
});
|
|
9
|
+
describe('public error reason', () => {
|
|
10
|
+
it.each(['free_card_required', 'free_extra_limit_reached'])('accepts the Free 403 reason %s', (reason) => {
|
|
11
|
+
const body = { error: { code: 'forbidden', message: 'Revisa tus timbres y tarjeta.', requestId: 'test-request', retryable: false, reason } };
|
|
12
|
+
expect(publicErrorEnvelopeSchema.parse(body)).toEqual(body);
|
|
13
|
+
});
|
|
14
|
+
it.each([undefined, 'duplicate_rfc'])('accepts an optional 409 reason: %s', (reason) => {
|
|
15
|
+
const body = {
|
|
16
|
+
error: {
|
|
17
|
+
code: 'conflict',
|
|
18
|
+
message: 'Ya existe un cliente con ese RFC',
|
|
19
|
+
requestId: 'test-request',
|
|
20
|
+
retryable: false,
|
|
21
|
+
...(reason === undefined ? {} : { reason }),
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
expect(publicErrorEnvelopeSchema.parse(body)).toEqual(body);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=envelope.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envelope.test.js","sourceRoot":"","sources":["../src/envelope.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAEhF,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAC1D,eAAe,CAChB,CAAA;QACD,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAChE,qBAAqB,CACtB,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,0BAA0B,CAAC,CAAC,CAAC,gCAAgC,EAAE,CAAC,MAAM,EAAE,EAAE;QACvG,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,+BAA+B,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAA;QAC5I,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CACnC,oCAAoC,EACpC,CAAC,MAAM,EAAE,EAAE;QACT,MAAM,IAAI,GAAG;YACX,KAAK,EAAE;gBACL,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,kCAAkC;gBAC3C,SAAS,EAAE,cAAc;gBACzB,SAAS,EAAE,KAAK;gBAChB,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;aAC5C;SACF,CAAA;QACD,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7D,CAAC,CACF,CAAA;AACH,CAAC,CAAC,CAAA"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA"}
|