opf-validator 0.0.1

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 (86) hide show
  1. package/README.md +143 -0
  2. package/dist/consent/index.d.ts +9 -0
  3. package/dist/consent/index.d.ts.map +1 -0
  4. package/dist/consent/index.js +12 -0
  5. package/dist/consent/index.js.map +1 -0
  6. package/dist/consent/successResponses/index.d.ts +89 -0
  7. package/dist/consent/successResponses/index.d.ts.map +1 -0
  8. package/dist/consent/successResponses/index.js +6 -0
  9. package/dist/consent/successResponses/index.js.map +1 -0
  10. package/dist/consent/validators/createConsent.d.ts +31 -0
  11. package/dist/consent/validators/createConsent.d.ts.map +1 -0
  12. package/dist/consent/validators/createConsent.js +205 -0
  13. package/dist/consent/validators/createConsent.js.map +1 -0
  14. package/dist/consent/validators/createConsentExtensions.d.ts +33 -0
  15. package/dist/consent/validators/createConsentExtensions.d.ts.map +1 -0
  16. package/dist/consent/validators/createConsentExtensions.js +193 -0
  17. package/dist/consent/validators/createConsentExtensions.js.map +1 -0
  18. package/dist/index.d.ts +7 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +60 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/payments/index.d.ts +11 -0
  23. package/dist/payments/index.d.ts.map +1 -0
  24. package/dist/payments/index.js +18 -0
  25. package/dist/payments/index.js.map +1 -0
  26. package/dist/payments/successResponses/index.d.ts +129 -0
  27. package/dist/payments/successResponses/index.d.ts.map +1 -0
  28. package/dist/payments/successResponses/index.js +6 -0
  29. package/dist/payments/successResponses/index.js.map +1 -0
  30. package/dist/payments/validators/createPaymentConsent.d.ts +66 -0
  31. package/dist/payments/validators/createPaymentConsent.d.ts.map +1 -0
  32. package/dist/payments/validators/createPaymentConsent.js +508 -0
  33. package/dist/payments/validators/createPaymentConsent.js.map +1 -0
  34. package/dist/payments/validators/createPixPayment.d.ts +35 -0
  35. package/dist/payments/validators/createPixPayment.d.ts.map +1 -0
  36. package/dist/payments/validators/createPixPayment.js +342 -0
  37. package/dist/payments/validators/createPixPayment.js.map +1 -0
  38. package/dist/payments/validators/patchPixPayment.d.ts +40 -0
  39. package/dist/payments/validators/patchPixPayment.d.ts.map +1 -0
  40. package/dist/payments/validators/patchPixPayment.js +191 -0
  41. package/dist/payments/validators/patchPixPayment.js.map +1 -0
  42. package/dist/recurring-payments/index.d.ts +13 -0
  43. package/dist/recurring-payments/index.d.ts.map +1 -0
  44. package/dist/recurring-payments/index.js +17 -0
  45. package/dist/recurring-payments/index.js.map +1 -0
  46. package/dist/recurring-payments/successResponses/index.d.ts +175 -0
  47. package/dist/recurring-payments/successResponses/index.d.ts.map +1 -0
  48. package/dist/recurring-payments/successResponses/index.js +6 -0
  49. package/dist/recurring-payments/successResponses/index.js.map +1 -0
  50. package/dist/recurring-payments/validators/createRecurringConsent.d.ts +96 -0
  51. package/dist/recurring-payments/validators/createRecurringConsent.d.ts.map +1 -0
  52. package/dist/recurring-payments/validators/createRecurringConsent.js +663 -0
  53. package/dist/recurring-payments/validators/createRecurringConsent.js.map +1 -0
  54. package/dist/recurring-payments/validators/createRecurringRetryPixPayment.d.ts +19 -0
  55. package/dist/recurring-payments/validators/createRecurringRetryPixPayment.d.ts.map +1 -0
  56. package/dist/recurring-payments/validators/createRecurringRetryPixPayment.js +41 -0
  57. package/dist/recurring-payments/validators/createRecurringRetryPixPayment.js.map +1 -0
  58. package/dist/recurring-payments/validators/patchPixPayment.d.ts +38 -0
  59. package/dist/recurring-payments/validators/patchPixPayment.d.ts.map +1 -0
  60. package/dist/recurring-payments/validators/patchPixPayment.js +123 -0
  61. package/dist/recurring-payments/validators/patchPixPayment.js.map +1 -0
  62. package/dist/recurring-payments/validators/patchRecurringConsent.d.ts +87 -0
  63. package/dist/recurring-payments/validators/patchRecurringConsent.d.ts.map +1 -0
  64. package/dist/recurring-payments/validators/patchRecurringConsent.js +555 -0
  65. package/dist/recurring-payments/validators/patchRecurringConsent.js.map +1 -0
  66. package/dist/utils/openFinanceErrors.d.ts +84 -0
  67. package/dist/utils/openFinanceErrors.d.ts.map +1 -0
  68. package/dist/utils/openFinanceErrors.js +85 -0
  69. package/dist/utils/openFinanceErrors.js.map +1 -0
  70. package/dist/utils/paymentErrors.d.ts +9 -0
  71. package/dist/utils/paymentErrors.d.ts.map +1 -0
  72. package/dist/utils/paymentErrors.js +13 -0
  73. package/dist/utils/paymentErrors.js.map +1 -0
  74. package/dist/utils/successResponses.d.ts +52 -0
  75. package/dist/utils/successResponses.d.ts.map +1 -0
  76. package/dist/utils/successResponses.js +6 -0
  77. package/dist/utils/successResponses.js.map +1 -0
  78. package/dist/utils/validateHeaderParameters.d.ts +51 -0
  79. package/dist/utils/validateHeaderParameters.d.ts.map +1 -0
  80. package/dist/utils/validateHeaderParameters.js +142 -0
  81. package/dist/utils/validateHeaderParameters.js.map +1 -0
  82. package/dist/utils/validationHelpers.d.ts +89 -0
  83. package/dist/utils/validationHelpers.d.ts.map +1 -0
  84. package/dist/utils/validationHelpers.js +376 -0
  85. package/dist/utils/validationHelpers.js.map +1 -0
  86. package/package.json +20 -0
package/README.md ADDED
@@ -0,0 +1,143 @@
1
+ # OPF Validator
2
+
3
+ Biblioteca TypeScript para validar requisições da Open Finance Brasil.
4
+
5
+ ## Características
6
+
7
+ - ✅ Validadores para consentimentos, pagamentos únicos e recorrentes
8
+ - ✅ Suporte completo a TypeScript
9
+ - ✅ Tratamento de erros conforme Open Finance Brasil
10
+ - ✅ Estrutura modular por domínio
11
+ - ✅ Sem dependências
12
+
13
+ ## Instalação
14
+
15
+ ```bash
16
+ npm install opf-validator
17
+ ```
18
+
19
+ ## Uso Rápido
20
+
21
+ ```typescript
22
+ import { validateCreatePixPayment } from "opf-validator/payments";
23
+
24
+ const resultado = validateCreatePixPayment({
25
+ data: {
26
+ endToEndId: "E12345678901234567890123456789",
27
+ date: "2025-01-15",
28
+ payment: { amount: "250.75", currency: "BRL" },
29
+ creditorAccount: { ispb: "00000000", number: "9876543210987", accountType: "CACC", issuer: "code" },
30
+ document: { identification: "12345678901", rel: "CPF" },
31
+ localInstrument: "DICT"
32
+ }
33
+ });
34
+
35
+ if (resultado.isValid) {
36
+ console.log("✓ Válido");
37
+ } else {
38
+ console.error("✗ Erros:", resultado.errors);
39
+ }
40
+ ```
41
+
42
+ ## Validadores Disponíveis
43
+
44
+ ### Headers de Requisição
45
+ - `validateHeaders` - Validar todos os headers
46
+ - `validateHeader` - Validar um header específico com obrigatoriedade customizável
47
+ - `validateHeaderRequired` - Validar header como obrigatório
48
+ - `validateHeaderOptional` - Validar header como opcional
49
+
50
+ ### Consentimentos
51
+ - `validateCreateConsent` - Criar consentimento
52
+ - `validateCreateConsentExtensions` - Estender consentimento
53
+
54
+ ### Pagamentos Únicos
55
+ - `validateCreatePaymentConsent` - Criar consentimento de pagamento
56
+ - `validateCreatePixPayment` - Criar pagamento Pix
57
+ - `validatePatchPixPayment` - Cancelar pagamento
58
+
59
+ ### Pagamentos Recorrentes
60
+ - `validateCreateRecurringConsent` - Criar consentimento recorrente
61
+ - `validatePatchRecurringConsent` - Autorizar consentimento recorrente
62
+ - `validateCreateRecurringPixPayment` - Criar pagamento recorrente
63
+ - `validatePatchRecurringPixPayment` - Cancelar pagamento recorrente
64
+ - `validateCreateRecurringRetryPixPayment` - Tentar novamente pagamento recorrente
65
+
66
+ ## Validação de Headers HTTP
67
+
68
+ Os headers são validados conforme especificações da Open Finance Brasil. Há três formas de validação:
69
+
70
+ ```typescript
71
+ import {
72
+ validateHeader,
73
+ validateHeaderRequired,
74
+ validateHeaderOptional,
75
+ validateHeaders
76
+ } from "opf-validator/utils/validateHeaderParameters";
77
+
78
+ // Forma 1: Com override de obrigatoriedade (customizável por endpoint)
79
+ const result = validateHeader('x-fapi-interaction-id', value, false); // Opcional
80
+ const result = validateHeader('Authorization', token, true); // Obrigatório
81
+
82
+ // Forma 2: Sempre obrigatório
83
+ const result = validateHeaderRequired('x-fapi-interaction-id', uuid);
84
+
85
+ // Forma 3: Sempre opcional
86
+ const result = validateHeaderOptional('X-Idempotency-Key', key);
87
+
88
+ // Validar todos os headers de uma requisição
89
+ const result = validateHeaders(request.headers);
90
+ ```
91
+
92
+ **Exemplo com Express:**
93
+
94
+ ```typescript
95
+ import express from 'express';
96
+ import { validateHeaders } from 'opf-validator/utils/validateHeaderParameters';
97
+
98
+ app.post('/api/payments', (req, res) => {
99
+ const validation = validateHeaders(req.headers);
100
+ if (!validation.isValid) {
101
+ return res.status(400).json(validation.errors);
102
+ }
103
+ // Prosseguir com a lógica...
104
+ });
105
+ ```
106
+
107
+ Para exemplos detalhados, consulte [VALIDATORS_GUIDE.md](./VALIDATORS_GUIDE.md).
108
+
109
+ ## Módulos
110
+
111
+ ```typescript
112
+ // Consentimentos
113
+ import { validateCreateConsent, validateCreateConsentExtensions } from "opf-validator/consent";
114
+
115
+ // Pagamentos únicos
116
+ import { validateCreatePaymentConsent, validateCreatePixPayment, validatePatchPixPayment } from "opf-validator/payments";
117
+
118
+ // Pagamentos recorrentes
119
+ import { validateCreateRecurringConsent, validatePatchRecurringConsent, validateCreateRecurringPixPayment, validatePatchRecurringPixPayment, validateCreateRecurringRetryPixPayment } from "opf-validator/recurring-payments";
120
+
121
+ // Utilitários
122
+ import { validateCPF, validateAmount } from "opf-validator";
123
+ ```
124
+
125
+ ## Documentação
126
+
127
+ Veja [QUICK_START.md](./QUICK_START.md) para exemplos completos.
128
+
129
+ ## Estrutura
130
+
131
+ ```
132
+ opf-validator/
133
+ ├── consent/ # Validadores de consentimentos
134
+ ├── payments/ # Validadores de pagamentos únicos
135
+ ├── recurring-payments/ # Validadores de pagamentos recorrentes
136
+ ├── utils/ # Utilitários e tipos
137
+ ├── index.ts # Exports principais
138
+ └── QUICK_START.md # Guia de início rápido
139
+ ```
140
+
141
+ ## Referências
142
+
143
+ - [Open Finance Brasil](https://www.gov.br/cidadania/pt-br/acesso-a-informacao/perguntas-frequentes/open-finance)
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Consent Module - Exports all validators and success responses
3
+ */
4
+ export { validateCreateConsent } from "./validators/createConsent";
5
+ export type { CreateConsentPayload, CreateConsentData } from "./validators/createConsent";
6
+ export { validateCreateConsentExtensions } from "./validators/createConsentExtensions";
7
+ export type { CreateConsentExtensionsPayload, CreateConsentExtensionsData, LoggedUserExtensions, BusinessEntityExtensions, } from "./validators/createConsentExtensions";
8
+ export type { CreateConsentSuccessResponse, GetConsentSuccessResponse, CreateConsentExtensionsSuccessResponse, } from "./successResponses";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/consent/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE1F,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,YAAY,EACV,8BAA8B,EAC9B,2BAA2B,EAC3B,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,sCAAsC,CAAC;AAG9C,YAAY,EACV,4BAA4B,EAC5B,yBAAyB,EACzB,sCAAsC,GACvC,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ /**
3
+ * Consent Module - Exports all validators and success responses
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.validateCreateConsentExtensions = exports.validateCreateConsent = void 0;
7
+ // Validators
8
+ var createConsent_1 = require("./validators/createConsent");
9
+ Object.defineProperty(exports, "validateCreateConsent", { enumerable: true, get: function () { return createConsent_1.validateCreateConsent; } });
10
+ var createConsentExtensions_1 = require("./validators/createConsentExtensions");
11
+ Object.defineProperty(exports, "validateCreateConsentExtensions", { enumerable: true, get: function () { return createConsentExtensions_1.validateCreateConsentExtensions; } });
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/consent/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,aAAa;AACb,4DAAmE;AAA1D,sHAAA,qBAAqB,OAAA;AAG9B,gFAAuF;AAA9E,0IAAA,+BAA+B,OAAA"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Interfaces de Sucesso para Respostas de Consent
3
+ */
4
+ /**
5
+ * Resposta de sucesso para POST /consents (CreateConsent)
6
+ */
7
+ export interface CreateConsentSuccessResponse {
8
+ data: {
9
+ consentId: string;
10
+ status: string;
11
+ statusUpdateDateTime: string;
12
+ permissions: string[];
13
+ expirationDateTime: string;
14
+ loggedUser?: {
15
+ document: {
16
+ identification: string;
17
+ rel: string;
18
+ };
19
+ };
20
+ };
21
+ links?: {
22
+ self: string;
23
+ first?: string;
24
+ prev?: string;
25
+ next?: string;
26
+ last?: string;
27
+ };
28
+ meta?: {
29
+ totalRecords?: number;
30
+ totalPages?: number;
31
+ requestDateTime: string;
32
+ };
33
+ }
34
+ /**
35
+ * Resposta de sucesso para GET /consents/:consentId (GetConsent)
36
+ */
37
+ export interface GetConsentSuccessResponse {
38
+ data: {
39
+ consentId: string;
40
+ status: string;
41
+ statusUpdateDateTime: string;
42
+ permissions: string[];
43
+ expirationDateTime: string;
44
+ creationDateTime: string;
45
+ loggedUser?: {
46
+ document: {
47
+ identification: string;
48
+ rel: string;
49
+ };
50
+ };
51
+ };
52
+ links?: {
53
+ self: string;
54
+ };
55
+ meta?: {
56
+ requestDateTime: string;
57
+ };
58
+ }
59
+ /**
60
+ * Resposta de sucesso para POST /consents/:consentId/extensions (CreateConsentExtensions)
61
+ */
62
+ export interface CreateConsentExtensionsSuccessResponse {
63
+ data: {
64
+ consentId: string;
65
+ status: string;
66
+ statusUpdateDateTime: string;
67
+ permissions: string[];
68
+ expirationDateTime: string;
69
+ loggedUser?: {
70
+ document: {
71
+ identification: string;
72
+ rel: string;
73
+ };
74
+ };
75
+ businessEntity?: {
76
+ document: {
77
+ identification: string;
78
+ rel: string;
79
+ };
80
+ };
81
+ };
82
+ links?: {
83
+ self: string;
84
+ };
85
+ meta?: {
86
+ requestDateTime: string;
87
+ };
88
+ }
89
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/consent/successResponses/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,oBAAoB,EAAE,MAAM,CAAC;QAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,UAAU,CAAC,EAAE;YACX,QAAQ,EAAE;gBACR,cAAc,EAAE,MAAM,CAAC;gBACvB,GAAG,EAAE,MAAM,CAAC;aACb,CAAC;SACH,CAAC;KACH,CAAC;IACF,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,IAAI,CAAC,EAAE;QACL,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,oBAAoB,EAAE,MAAM,CAAC;QAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,gBAAgB,EAAE,MAAM,CAAC;QACzB,UAAU,CAAC,EAAE;YACX,QAAQ,EAAE;gBACR,cAAc,EAAE,MAAM,CAAC;gBACvB,GAAG,EAAE,MAAM,CAAC;aACb,CAAC;SACH,CAAC;KACH,CAAC;IACF,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,IAAI,CAAC,EAAE;QACL,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,sCAAsC;IACrD,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,oBAAoB,EAAE,MAAM,CAAC;QAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,UAAU,CAAC,EAAE;YACX,QAAQ,EAAE;gBACR,cAAc,EAAE,MAAM,CAAC;gBACvB,GAAG,EAAE,MAAM,CAAC;aACb,CAAC;SACH,CAAC;QACF,cAAc,CAAC,EAAE;YACf,QAAQ,EAAE;gBACR,cAAc,EAAE,MAAM,CAAC;gBACvB,GAAG,EAAE,MAAM,CAAC;aACb,CAAC;SACH,CAAC;KACH,CAAC;IACF,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,IAAI,CAAC,EAAE;QACL,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Interfaces de Sucesso para Respostas de Consent
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/consent/successResponses/index.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Validações para CreateConsent
3
+ * Segue as regras especificadas no Open Finance Brasil
4
+ */
5
+ import { ValidationResult } from "../../utils/openFinanceErrors";
6
+ interface LoggedUser {
7
+ documentType: string;
8
+ documentNumber: string;
9
+ }
10
+ interface BusinessEntity {
11
+ document: {
12
+ identification: string;
13
+ rel: string;
14
+ };
15
+ }
16
+ interface CreateConsentData {
17
+ permissions: string[];
18
+ loggedUser: LoggedUser;
19
+ businessEntity?: BusinessEntity;
20
+ expirationDateTime?: string;
21
+ isLinked?: boolean;
22
+ }
23
+ interface CreateConsentPayload {
24
+ data: CreateConsentData;
25
+ }
26
+ /**
27
+ * Valida o payload de criação de consentimento
28
+ */
29
+ export declare function validateCreateConsent(payload: any): ValidationResult;
30
+ export { CreateConsentPayload, CreateConsentData };
31
+ //# sourceMappingURL=createConsent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createConsent.d.ts","sourceRoot":"","sources":["../../../src/consent/validators/createConsent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,gBAAgB,EAGjB,MAAM,+BAA+B,CAAC;AAEvC,UAAU,UAAU;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,cAAc;IACtB,QAAQ,EAAE;QACR,cAAc,EAAE,MAAM,CAAC;QACvB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,UAAU,iBAAiB;IACzB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,oBAAoB;IAC5B,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAyCD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,GAAG,GAAG,gBAAgB,CAuDpE;AA8MD,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ /**
3
+ * Validações para CreateConsent
4
+ * Segue as regras especificadas no Open Finance Brasil
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.validateCreateConsent = validateCreateConsent;
8
+ const openFinanceErrors_1 = require("../../utils/openFinanceErrors");
9
+ const VALID_PERMISSIONS = [
10
+ "ACCOUNTS_READ",
11
+ "ACCOUNTS_BALANCES_READ",
12
+ "ACCOUNTS_TRANSACTIONS_READ",
13
+ "ACCOUNTS_OVERDRAFT_LIMITS_READ",
14
+ "CREDIT_CARDS_ACCOUNTS_READ",
15
+ "CREDIT_CARDS_ACCOUNTS_BILLS_READ",
16
+ "CREDIT_CARDS_ACCOUNTS_BILLS_TRANSACTIONS_READ",
17
+ "CREDIT_CARDS_ACCOUNTS_LIMITS_READ",
18
+ "CREDIT_CARDS_ACCOUNTS_TRANSACTIONS_READ",
19
+ "CUSTOMERS_PERSONAL_IDENTIFICATIONS_READ",
20
+ "CUSTOMERS_PERSONAL_ADITTIONALINFO_READ",
21
+ "CUSTOMERS_BUSINESS_IDENTIFICATIONS_READ",
22
+ "CUSTOMERS_BUSINESS_ADITTIONALINFO_READ",
23
+ "FINANCINGS_READ",
24
+ "FINANCINGS_SCHEDULED_INSTALMENTS_READ",
25
+ "FINANCINGS_PAYMENTS_READ",
26
+ "FINANCINGS_WARRANTIES_READ",
27
+ "INVOICE_FINANCINGS_READ",
28
+ "INVOICE_FINANCINGS_SCHEDULED_INSTALMENTS_READ",
29
+ "INVOICE_FINANCINGS_PAYMENTS_READ",
30
+ "INVOICE_FINANCINGS_WARRANTIES_READ",
31
+ "LOANS_READ",
32
+ "LOANS_SCHEDULED_INSTALMENTS_READ",
33
+ "LOANS_PAYMENTS_READ",
34
+ "LOANS_WARRANTIES_READ",
35
+ "UNARRANGED_ACCOUNTS_OVERDRAFT_READ",
36
+ "UNARRANGED_ACCOUNTS_OVERDRAFT_SCHEDULED_INSTALMENTS_READ",
37
+ "UNARRANGED_ACCOUNTS_OVERDRAFT_PAYMENTS_READ",
38
+ "UNARRANGED_ACCOUNTS_OVERDRAFT_WARRANTIES_READ",
39
+ "RESOURCES_READ",
40
+ "BANK_FIXED_INCOMES_READ",
41
+ "CREDIT_FIXED_INCOMES_READ",
42
+ "FUNDS_READ",
43
+ "VARIABLE_INCOMES_READ",
44
+ "TREASURE_TITLES_READ",
45
+ "EXCHANGES_READ",
46
+ ];
47
+ /**
48
+ * Valida o payload de criação de consentimento
49
+ */
50
+ function validateCreateConsent(payload) {
51
+ const errors = [];
52
+ // Validação: data deve existir
53
+ if (!payload.data) {
54
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("data"));
55
+ return { isValid: false, errors };
56
+ }
57
+ const data = payload.data;
58
+ // Validação: permissions é obrigatório
59
+ if (!data.permissions) {
60
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("permissions"));
61
+ }
62
+ else {
63
+ const permissionErrors = validatePermissions(data.permissions);
64
+ errors.push(...permissionErrors);
65
+ }
66
+ // Validação: loggedUser é obrigatório
67
+ if (!data.loggedUser) {
68
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("loggedUser"));
69
+ }
70
+ else {
71
+ const loggedUserErrors = validateLoggedUser(data.loggedUser);
72
+ errors.push(...loggedUserErrors);
73
+ }
74
+ // Validação: expirationDateTime (regulatory-required)
75
+ if (data.expirationDateTime) {
76
+ const expirationErrors = validateExpirationDateTime(data.expirationDateTime);
77
+ errors.push(...expirationErrors);
78
+ }
79
+ // Validação: isLinked
80
+ if (data.isLinked !== undefined && typeof data.isLinked !== "boolean") {
81
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("isLinked", "Deve ser um valor booleano"));
82
+ }
83
+ // Validação: businessEntity (opcional)
84
+ if (data.businessEntity) {
85
+ const businessEntityErrors = validateBusinessEntity(data.businessEntity);
86
+ errors.push(...businessEntityErrors);
87
+ }
88
+ return {
89
+ isValid: errors.length === 0,
90
+ errors,
91
+ };
92
+ }
93
+ /**
94
+ * Valida permissions array
95
+ */
96
+ function validatePermissions(permissions) {
97
+ const errors = [];
98
+ if (!Array.isArray(permissions)) {
99
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("permissions", "Deve ser um array de strings"));
100
+ return errors;
101
+ }
102
+ if (permissions.length === 0) {
103
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("permissions", "Array não pode estar vazio (minItems: 1)"));
104
+ return errors;
105
+ }
106
+ // Validar duplicidade
107
+ const uniquePermissions = new Set(permissions);
108
+ if (uniquePermissions.size !== permissions.length) {
109
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("permissions", "Array não deve ter duplicidade de itens"));
110
+ }
111
+ // Validar permissões conhecidas
112
+ const invalidPermissions = permissions.filter((permission) => !VALID_PERMISSIONS.includes(permission));
113
+ if (invalidPermissions.length > 0) {
114
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("permissions", `Permissões inválidas encontradas: ${invalidPermissions.join(", ")}`));
115
+ }
116
+ return errors;
117
+ }
118
+ /**
119
+ * Valida LoggedUser
120
+ */
121
+ function validateLoggedUser(loggedUser) {
122
+ const errors = [];
123
+ if (typeof loggedUser !== "object" || loggedUser === null) {
124
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("loggedUser", "Deve ser um objeto"));
125
+ return errors;
126
+ }
127
+ // documentType é obrigatório
128
+ if (!loggedUser.documentType) {
129
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("loggedUser.documentType"));
130
+ }
131
+ else if (typeof loggedUser.documentType !== "string") {
132
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("loggedUser.documentType", "Deve ser uma string"));
133
+ }
134
+ // documentNumber é obrigatório
135
+ if (!loggedUser.documentNumber) {
136
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("loggedUser.documentNumber"));
137
+ }
138
+ else if (typeof loggedUser.documentNumber !== "string") {
139
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("loggedUser.documentNumber", "Deve ser uma string"));
140
+ }
141
+ return errors;
142
+ }
143
+ /**
144
+ * Valida expirationDateTime
145
+ * RFC-3339 format: YYYY-MM-DDTHH:mm:ssZ
146
+ * maxLength: 20
147
+ */
148
+ function validateExpirationDateTime(expirationDateTime) {
149
+ const errors = [];
150
+ if (typeof expirationDateTime !== "string") {
151
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("expirationDateTime", "Deve ser uma string em formato RFC-3339"));
152
+ return errors;
153
+ }
154
+ if (expirationDateTime.length > 20) {
155
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("expirationDateTime", "Deve ter no máximo 20 caracteres"));
156
+ }
157
+ // Validar formato RFC-3339 (UTC)
158
+ const rfc3339Pattern = /^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$/;
159
+ if (!rfc3339Pattern.test(expirationDateTime)) {
160
+ errors.push((0, openFinanceErrors_1.createError)("DATA_EXPIRACAO_INVALIDA", "Nova data para expiração do consentimento é inválida.", "A data de expiração deve estar no formato RFC-3339 com timezone UTC (YYYY-MM-DDTHH:mm:ssZ)"));
161
+ }
162
+ return errors;
163
+ }
164
+ /**
165
+ * Valida BusinessEntity
166
+ */
167
+ function validateBusinessEntity(businessEntity) {
168
+ const errors = [];
169
+ if (typeof businessEntity !== "object" || businessEntity === null) {
170
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("businessEntity", "Deve ser um objeto"));
171
+ return errors;
172
+ }
173
+ if (!businessEntity.document) {
174
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("businessEntity.document"));
175
+ }
176
+ else {
177
+ const documentErrors = validateDocument(businessEntity.document);
178
+ errors.push(...documentErrors);
179
+ }
180
+ return errors;
181
+ }
182
+ /**
183
+ * Valida Document
184
+ */
185
+ function validateDocument(document) {
186
+ const errors = [];
187
+ if (typeof document !== "object" || document === null) {
188
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("document", "Deve ser um objeto"));
189
+ return errors;
190
+ }
191
+ if (!document.identification) {
192
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("document.identification"));
193
+ }
194
+ else if (typeof document.identification !== "string") {
195
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("document.identification", "Deve ser uma string"));
196
+ }
197
+ if (!document.rel) {
198
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("document.rel"));
199
+ }
200
+ else if (typeof document.rel !== "string") {
201
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("document.rel", "Deve ser uma string"));
202
+ }
203
+ return errors;
204
+ }
205
+ //# sourceMappingURL=createConsent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createConsent.js","sourceRoot":"","sources":["../../../src/consent/validators/createConsent.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AA2EH,sDAuDC;AAhID,qEAKuC;AA0BvC,MAAM,iBAAiB,GAAG;IACxB,eAAe;IACf,wBAAwB;IACxB,4BAA4B;IAC5B,gCAAgC;IAChC,4BAA4B;IAC5B,kCAAkC;IAClC,+CAA+C;IAC/C,mCAAmC;IACnC,yCAAyC;IACzC,yCAAyC;IACzC,wCAAwC;IACxC,yCAAyC;IACzC,wCAAwC;IACxC,iBAAiB;IACjB,uCAAuC;IACvC,0BAA0B;IAC1B,4BAA4B;IAC5B,yBAAyB;IACzB,+CAA+C;IAC/C,kCAAkC;IAClC,oCAAoC;IACpC,YAAY;IACZ,kCAAkC;IAClC,qBAAqB;IACrB,uBAAuB;IACvB,oCAAoC;IACpC,0DAA0D;IAC1D,6CAA6C;IAC7C,+CAA+C;IAC/C,gBAAgB;IAChB,yBAAyB;IACzB,2BAA2B;IAC3B,YAAY;IACZ,uBAAuB;IACvB,sBAAsB;IACtB,gBAAgB;CACjB,CAAC;AAEF;;GAEG;AACH,SAAgB,qBAAqB,CAAC,OAAY;IAChD,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,+BAA+B;IAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,uCAAuC;IACvC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAC;IACnE,CAAC;SAAM,CAAC;QACN,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/D,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;IACnC,CAAC;IAED,sCAAsC;IACtC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;IACnC,CAAC;IAED,sDAAsD;IACtD,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,MAAM,gBAAgB,GAAG,0BAA0B,CACjD,IAAI,CAAC,kBAAkB,CACxB,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;IACnC,CAAC;IAED,sBAAsB;IACtB,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACtE,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,UAAU,EACV,4BAA4B,CAC7B,CACF,CAAC;IACJ,CAAC;IAED,uCAAuC;IACvC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,oBAAoB,GAAG,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzE,MAAM,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,CAAC;IACvC,CAAC;IAED,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC5B,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,WAAgB;IAC3C,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,aAAa,EACb,8BAA8B,CAC/B,CACF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,aAAa,EACb,0CAA0C,CAC3C,CACF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,sBAAsB;IACtB,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,iBAAiB,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,aAAa,EACb,yCAAyC,CAC1C,CACF,CAAC;IACJ,CAAC;IAED,gCAAgC;IAChC,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAC3C,CAAC,UAAkB,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAChE,CAAC;IACF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,aAAa,EACb,qCAAqC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrE,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,UAAe;IACzC,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QAC1D,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,YAAY,EAAE,oBAAoB,CAAC,CACpE,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAC/E,CAAC;SAAM,IAAI,OAAO,UAAU,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QACvD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,yBAAyB,EACzB,qBAAqB,CACtB,CACF,CAAC;IACJ,CAAC;IAED,+BAA+B;IAC/B,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,uBAAuB,CAAC,2BAA2B,CAAC,CAClE,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,UAAU,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;QACzD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,2BAA2B,EAC3B,qBAAqB,CACtB,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,0BAA0B,CACjC,kBAAuB;IAEvB,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,OAAO,kBAAkB,KAAK,QAAQ,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,oBAAoB,EACpB,yCAAyC,CAC1C,CACF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,kBAAkB,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,oBAAoB,EACpB,kCAAkC,CACnC,CACF,CAAC;IACJ,CAAC;IAED,iCAAiC;IACjC,MAAM,cAAc,GAClB,wGAAwG,CAAC;IAE3G,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CACT,IAAA,+BAAW,EACT,yBAAyB,EACzB,uDAAuD,EACvD,4FAA4F,CAC7F,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,cAAmB;IACjD,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAClE,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,gBAAgB,EAChB,oBAAoB,CACrB,CACF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,uBAAuB,CAAC,yBAAyB,CAAC,CAChE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,cAAc,GAAG,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,QAAa;IACrC,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAClE,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAC/E,CAAC;SAAM,IAAI,OAAO,QAAQ,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;QACvD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,yBAAyB,EACzB,qBAAqB,CACtB,CACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC,CAAC;IACpE,CAAC;SAAM,IAAI,OAAO,QAAQ,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,cAAc,EAAE,qBAAqB,CAAC,CACvE,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Validações para CreateConsentExtensions
3
+ * Segue as regras especificadas no Open Finance Brasil para renovação de consentimento
4
+ */
5
+ import { ValidationResult } from "../../utils/openFinanceErrors";
6
+ interface LoggedUserDocumentExtensions {
7
+ identification: string;
8
+ rel: string;
9
+ }
10
+ interface LoggedUserExtensions {
11
+ document: LoggedUserDocumentExtensions;
12
+ }
13
+ interface BusinessEntityDocumentExtensions {
14
+ identification: string;
15
+ rel: string;
16
+ }
17
+ interface BusinessEntityExtensions {
18
+ document: BusinessEntityDocumentExtensions;
19
+ }
20
+ interface CreateConsentExtensionsData {
21
+ expirationDateTime?: string;
22
+ loggedUser: LoggedUserExtensions;
23
+ businessEntity?: BusinessEntityExtensions;
24
+ }
25
+ interface CreateConsentExtensionsPayload {
26
+ data: CreateConsentExtensionsData;
27
+ }
28
+ /**
29
+ * Valida o payload de renovação de consentimento
30
+ */
31
+ export declare function validateCreateConsentExtensions(payload: any): ValidationResult;
32
+ export { CreateConsentExtensionsPayload, CreateConsentExtensionsData, LoggedUserExtensions, BusinessEntityExtensions, };
33
+ //# sourceMappingURL=createConsentExtensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createConsentExtensions.d.ts","sourceRoot":"","sources":["../../../src/consent/validators/createConsentExtensions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,gBAAgB,EAGjB,MAAM,+BAA+B,CAAC;AAEvC,UAAU,4BAA4B;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,4BAA4B,CAAC;CACxC;AAED,UAAU,gCAAgC;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,wBAAwB;IAChC,QAAQ,EAAE,gCAAgC,CAAC;CAC5C;AAED,UAAU,2BAA2B;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,oBAAoB,CAAC;IACjC,cAAc,CAAC,EAAE,wBAAwB,CAAC;CAC3C;AAED,UAAU,8BAA8B;IACtC,IAAI,EAAE,2BAA2B,CAAC;CACnC;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,GAAG,GAAG,gBAAgB,CAuC9E;AA0RD,OAAO,EACL,8BAA8B,EAC9B,2BAA2B,EAC3B,oBAAoB,EACpB,wBAAwB,GACzB,CAAC"}