@fiado/type-kit 3.15.0 → 3.17.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 (101) hide show
  1. package/bin/benefitCenter/dtos/BackofficeLeafDetailResponse.d.ts +5 -24
  2. package/bin/benefitCenter/dtos/BackofficeLeafDetailResponse.js +0 -11
  3. package/bin/benefitCenter/dtos/BackofficeLeafListItem.d.ts +8 -11
  4. package/bin/benefitCenter/dtos/BackofficeLeafListItem.js +0 -8
  5. package/bin/benefitCenter/dtos/BackofficeLeafUpdateRequest.d.ts +18 -0
  6. package/bin/benefitCenter/dtos/BackofficeLeafUpdateRequest.js +66 -0
  7. package/bin/benefitCenter/dtos/ConnectorCatalogItem.d.ts +0 -4
  8. package/bin/benefitCenter/dtos/ServiceLeaf.d.ts +0 -4
  9. package/bin/benefitCenter/index.d.ts +1 -4
  10. package/bin/benefitCenter/index.js +2 -5
  11. package/bin/cognitoConnector/dtos/SignUpBackofficeRequest.d.ts +13 -0
  12. package/bin/cognitoConnector/dtos/SignUpBackofficeRequest.js +71 -0
  13. package/bin/comission-business/dtos/GenerateReportRequest.d.ts +10 -0
  14. package/bin/comission-business/dtos/GenerateReportRequest.js +2 -0
  15. package/bin/comission-business/dtos/GenerateReportResponse.d.ts +6 -0
  16. package/bin/comission-business/dtos/GenerateReportResponse.js +2 -0
  17. package/bin/comission-business/enums/PaymentStatusEnum.d.ts +5 -0
  18. package/bin/comission-business/enums/PaymentStatusEnum.js +9 -0
  19. package/bin/credit/dtos/CreditBannerStateResponse.d.ts +10 -0
  20. package/bin/credit/dtos/CreditBannerStateResponse.js +6 -0
  21. package/bin/credit/dtos/CreditDetailResponse.d.ts +23 -0
  22. package/bin/credit/dtos/CreditDetailResponse.js +6 -0
  23. package/bin/credit/dtos/CreditEligibilityResponse.d.ts +9 -0
  24. package/bin/credit/dtos/CreditEligibilityResponse.js +6 -0
  25. package/bin/credit/dtos/CreditMovementResponse.d.ts +20 -0
  26. package/bin/credit/dtos/CreditMovementResponse.js +9 -0
  27. package/bin/credit/dtos/CreditRequestCreate.d.ts +4 -0
  28. package/bin/credit/dtos/CreditRequestCreate.js +26 -0
  29. package/bin/credit/dtos/CreditRequestResponse.d.ts +7 -0
  30. package/bin/credit/dtos/CreditRequestResponse.js +6 -0
  31. package/bin/credit/dtos/CreditScheduleResponse.d.ts +18 -0
  32. package/bin/credit/dtos/CreditScheduleResponse.js +9 -0
  33. package/bin/credit/dtos/CreditStatementResponse.d.ts +11 -0
  34. package/bin/credit/dtos/CreditStatementResponse.js +9 -0
  35. package/bin/credit/dtos/EarlyPaymentRequest.d.ts +7 -0
  36. package/bin/credit/dtos/EarlyPaymentRequest.js +37 -0
  37. package/bin/credit/dtos/EarlyPaymentResponse.d.ts +11 -0
  38. package/bin/credit/dtos/EarlyPaymentResponse.js +6 -0
  39. package/bin/credit/dtos/internal/CreditBalanceRequest.d.ts +3 -0
  40. package/bin/credit/dtos/internal/CreditBalanceRequest.js +21 -0
  41. package/bin/credit/dtos/internal/CreditCollectionRequest.d.ts +11 -0
  42. package/bin/credit/dtos/internal/CreditCollectionRequest.js +59 -0
  43. package/bin/credit/dtos/internal/CreditCollectionResponse.d.ts +12 -0
  44. package/bin/credit/dtos/internal/CreditCollectionResponse.js +6 -0
  45. package/bin/credit/dtos/internal/CreditDisbursementRequest.d.ts +7 -0
  46. package/bin/credit/dtos/internal/CreditDisbursementRequest.js +43 -0
  47. package/bin/credit/dtos/internal/CreditDisbursementResponse.d.ts +8 -0
  48. package/bin/credit/dtos/internal/CreditDisbursementResponse.js +6 -0
  49. package/bin/credit/dtos/internal/CreditProfileRequest.d.ts +3 -0
  50. package/bin/credit/dtos/internal/CreditProfileRequest.js +23 -0
  51. package/bin/credit/dtos/internal/CreditReversalRequest.d.ts +5 -0
  52. package/bin/credit/dtos/internal/CreditReversalRequest.js +31 -0
  53. package/bin/credit/dtos/internal/CreditReversalResponse.d.ts +7 -0
  54. package/bin/credit/dtos/internal/CreditReversalResponse.js +6 -0
  55. package/bin/credit/dtos/internal/CreditTransferLoancoRequest.d.ts +8 -0
  56. package/bin/credit/dtos/internal/CreditTransferLoancoRequest.js +46 -0
  57. package/bin/credit/dtos/internal/CreditTransferLoancoResponse.d.ts +8 -0
  58. package/bin/credit/dtos/internal/CreditTransferLoancoResponse.js +6 -0
  59. package/bin/credit/dtos/internal/DocumentSignRequest.d.ts +3 -0
  60. package/bin/credit/dtos/internal/DocumentSignRequest.js +21 -0
  61. package/bin/credit/dtos/internal/LienApplyRequest.d.ts +7 -0
  62. package/bin/credit/dtos/internal/LienApplyRequest.js +45 -0
  63. package/bin/credit/enums/CollectionFrequencyEnum.d.ts +5 -0
  64. package/bin/credit/enums/CollectionFrequencyEnum.js +9 -0
  65. package/bin/credit/enums/CreditOperationEnum.d.ts +11 -0
  66. package/bin/credit/enums/CreditOperationEnum.js +15 -0
  67. package/bin/credit/enums/CreditStatusEnum.d.ts +12 -0
  68. package/bin/credit/enums/CreditStatusEnum.js +16 -0
  69. package/bin/credit/enums/DelinquencyLevelEnum.d.ts +9 -0
  70. package/bin/credit/enums/DelinquencyLevelEnum.js +13 -0
  71. package/bin/credit/enums/DocumentTypeEnum.d.ts +8 -0
  72. package/bin/credit/enums/DocumentTypeEnum.js +12 -0
  73. package/bin/credit/enums/OfferStatusEnum.d.ts +8 -0
  74. package/bin/credit/enums/OfferStatusEnum.js +12 -0
  75. package/bin/credit/enums/PaymentTypeEnum.d.ts +9 -0
  76. package/bin/credit/enums/PaymentTypeEnum.js +13 -0
  77. package/bin/credit/enums/ReconciliationStatusEnum.d.ts +6 -0
  78. package/bin/credit/enums/ReconciliationStatusEnum.js +10 -0
  79. package/bin/credit/enums/TransferStatusEnum.d.ts +8 -0
  80. package/bin/credit/enums/TransferStatusEnum.js +12 -0
  81. package/bin/identity/dtos/ManualApproval.d.ts +15 -0
  82. package/bin/identity/dtos/ManualApproval.js +2 -0
  83. package/bin/identity/dtos/PeopleResponse.d.ts +2 -0
  84. package/bin/identity/dtos/PeopleUpdateRequest.d.ts +2 -0
  85. package/bin/identity/index.d.ts +1 -0
  86. package/bin/identity/index.js +2 -1
  87. package/package.json +1 -1
  88. package/src/benefitCenter/dtos/BackofficeLeafDetailResponse.ts +5 -28
  89. package/src/benefitCenter/dtos/BackofficeLeafListItem.ts +8 -18
  90. package/src/benefitCenter/dtos/BackofficeLeafUpdateRequest.ts +30 -0
  91. package/src/benefitCenter/dtos/ConnectorCatalogItem.ts +0 -6
  92. package/src/benefitCenter/dtos/ServiceLeaf.ts +0 -6
  93. package/src/benefitCenter/index.ts +2 -5
  94. package/src/identity/dtos/ManualApproval.ts +16 -0
  95. package/src/identity/dtos/PeopleResponse.ts +3 -1
  96. package/src/identity/dtos/PeopleUpdateRequest.ts +2 -0
  97. package/src/identity/index.ts +2 -1
  98. package/src/benefitCenter/dtos/BackofficeLeafOverrideUpsertRequest.ts +0 -77
  99. package/src/benefitCenter/dtos/FieldOverrideRequest.ts +0 -67
  100. package/src/benefitCenter/dtos/InputSchemaOverrideRequest.ts +0 -15
  101. package/src/benefitCenter/enums/LeafOverrideStatusEnum.ts +0 -10
@@ -0,0 +1,8 @@
1
+ export declare enum TransferStatusEnum {
2
+ PENDING = "PENDING",
3
+ APPROVED = "APPROVED",
4
+ IN_PROGRESS = "IN_PROGRESS",
5
+ COMPLETED = "COMPLETED",
6
+ FAILED = "FAILED",
7
+ REJECTED = "REJECTED"
8
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransferStatusEnum = void 0;
4
+ var TransferStatusEnum;
5
+ (function (TransferStatusEnum) {
6
+ TransferStatusEnum["PENDING"] = "PENDING";
7
+ TransferStatusEnum["APPROVED"] = "APPROVED";
8
+ TransferStatusEnum["IN_PROGRESS"] = "IN_PROGRESS";
9
+ TransferStatusEnum["COMPLETED"] = "COMPLETED";
10
+ TransferStatusEnum["FAILED"] = "FAILED";
11
+ TransferStatusEnum["REJECTED"] = "REJECTED";
12
+ })(TransferStatusEnum || (exports.TransferStatusEnum = TransferStatusEnum = {}));
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Estructura común para override manual de validaciones (CNBV, blacklist, etc.)
3
+ * por parte de un operador u oficial de cumplimiento.
4
+ *
5
+ * Sólo debe setearse desde un endpoint backoffice autenticado para que
6
+ * `by` venga del JWT del operador y quede traza auditable.
7
+ */
8
+ export interface ManualApproval {
9
+ /** email del operador que aprobó manualmente, tomado del JWT */
10
+ by: string;
11
+ /** ISO 8601 timestamp del momento de la aprobación */
12
+ at: string;
13
+ /** justificación obligatoria del override */
14
+ reason: string;
15
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -5,6 +5,7 @@ import { CPStatusEnum } from '../enums/CPStatusEnum';
5
5
  import { InfoSelfVerifiedStatus } from '../enums/InfoSelfVerifiedStatus';
6
6
  import { SexDocument } from '../enums/SexDocument';
7
7
  import { IdentificationDocument } from './IdentificationDocument';
8
+ import { ManualApproval } from './ManualApproval';
8
9
  export declare class PeopleResponse {
9
10
  id: string;
10
11
  createDate: string;
@@ -98,6 +99,7 @@ export declare class PeopleResponse {
98
99
  SSN_ITINRequired: boolean | null;
99
100
  hasSSN_ITIN: boolean | null;
100
101
  geoAppproved?: boolean | null;
102
+ cnbvManualApproval?: ManualApproval | null;
101
103
  };
102
104
  SIN: string | null;
103
105
  documentNumber: string;
@@ -4,6 +4,7 @@ import { CPStatusEnum } from "../enums/CPStatusEnum";
4
4
  import { InfoSelfVerifiedStatus } from "../enums/InfoSelfVerifiedStatus";
5
5
  import { SexDocument } from "../enums/SexDocument";
6
6
  import { IdentificationDocument } from "./IdentificationDocument";
7
+ import { ManualApproval } from "./ManualApproval";
7
8
  export declare class PeopleUpdateRequest {
8
9
  id?: string;
9
10
  creationMethod?: string;
@@ -48,6 +49,7 @@ export declare class PeopleUpdateRequest {
48
49
  fiadoListApproved?: boolean | null;
49
50
  ofacListApproved?: boolean | null;
50
51
  cnbvListApproved?: boolean | null;
52
+ cnbvManualApproval?: ManualApproval | null;
51
53
  blackListApproved?: boolean | null;
52
54
  whiteList?: boolean | null;
53
55
  hasOwner?: boolean;
@@ -1,4 +1,5 @@
1
1
  export * from './dtos/IdentificationDocument';
2
+ export * from './dtos/ManualApproval';
2
3
  export * from './dtos/PeopleCreateRequest';
3
4
  export * from './dtos/PeopleResponse';
4
5
  export * from './dtos/TypeOfDocument';
@@ -14,8 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- //dtos
17
+ //dtos
18
18
  __exportStar(require("./dtos/IdentificationDocument"), exports);
19
+ __exportStar(require("./dtos/ManualApproval"), exports);
19
20
  __exportStar(require("./dtos/PeopleCreateRequest"), exports);
20
21
  __exportStar(require("./dtos/PeopleResponse"), exports);
21
22
  __exportStar(require("./dtos/TypeOfDocument"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.15.0",
3
+ "version": "3.17.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -1,37 +1,14 @@
1
1
  import { ConnectorCatalogItem } from "./ConnectorCatalogItem";
2
- import { LeafOverrideStatusEnum } from "../enums/LeafOverrideStatusEnum";
3
2
 
4
3
  /**
5
- * Override que vive en BenefitLeafOverride_GT (forma plana del item de DynamoDB).
6
- * Los slots están definidos del lado lambda en BenefitLeafOverrideDocument;
7
- * acá lo tipamos como Record opaco para no duplicar la definición.
8
- *
9
- * Los consumers del type-kit no necesitan el detalle interno — usan `effective`
10
- * para ver el resultado final y `override` solo para saber qué campos están
11
- * seteados.
4
+ * Respuesta del detalle de un leaf en el backoffice (v2 in-place).
5
+ * Devuelve el item del catálogo del conector tal cual — sin paso de merge
6
+ * (la edición editorial vive in-place en la tabla del conector).
12
7
  */
13
- export type BenefitLeafOverridePayload = Record<string, unknown>;
14
-
15
- /**
16
- * Response del detalle del backoffice. Trae 3 visiones del leaf:
17
- * - base: lo que devuelve el conector (sin merge).
18
- * - override: lo que hay en BenefitLeafOverride_GT (null si nunca se editó).
19
- * - effective: el merge (lo que ve la app).
20
- * Si status === ORPHANED, base y effective son null.
21
- */
22
- export class BackofficeLeafDetailResponse {
8
+ export interface BackofficeLeafDetailResponse {
23
9
  leafId: string;
24
10
  benefitId: string;
25
11
  moduleName: string;
26
12
  serviceId: string;
27
-
28
- base: ConnectorCatalogItem | null;
29
- override: BenefitLeafOverridePayload | null;
30
- effective: ConnectorCatalogItem | null;
31
-
32
- status: LeafOverrideStatusEnum;
33
-
34
- updatedBy: string | null;
35
- createdAt: number | null;
36
- updatedAt: number | null;
13
+ item: ConnectorCatalogItem;
37
14
  }
@@ -1,28 +1,18 @@
1
- import { LeafOverrideStatusEnum } from "../enums/LeafOverrideStatusEnum";
2
-
3
1
  /**
4
- * Item del listado del backoffice de leaves. Combina el estado efectivo
5
- * (post-merge) que verá la app con metadata del override (si existe).
2
+ * Item del listado paginado de leaves en el backoffice (v2 in-place).
3
+ * Cada item representa un servicio del catálogo del conector, ya con
4
+ * los valores editoriales aplicados (no hay "base/override/effective" —
5
+ * la edición es in-place sobre la tabla del conector).
6
6
  */
7
- export class BackofficeLeafListItem {
7
+ export interface BackofficeLeafListItem {
8
8
  leafId: string;
9
9
  benefitId: string;
10
10
  moduleName: string;
11
11
  serviceId: string;
12
-
13
- // Effective (post-merge) — lo que vería el cliente
14
- serviceName: string;
15
12
  category: string;
16
13
  subcategory: string;
14
+ serviceName: string;
15
+ logo: string;
17
16
  enabled: boolean;
18
- logo?: string;
19
-
20
- // Metadata de override
21
- hasOverride: boolean;
22
- overriddenFields: string[];
23
- status: LeafOverrideStatusEnum;
24
-
25
- // Audit ligera
26
- updatedBy?: string;
27
- updatedAt?: number;
17
+ updatedAt: number; // ms epoch — del item del conector
28
18
  }
@@ -0,0 +1,30 @@
1
+ import { IsBoolean, IsNumber, IsOptional, IsString, Matches, MaxLength } from "class-validator";
2
+
3
+ /**
4
+ * Patch parcial para editar un leaf in-place (v2). Todos los campos son
5
+ * opcionales pero al menos uno debe venir; si el body está vacío el backend
6
+ * responde 400 INVALID_PATCH_PAYLOAD.
7
+ *
8
+ * Los campos eliminados respecto de v1 (`description`, `helpText`,
9
+ * `inputSchema`, `requiresReferenceVerification`) ya no son editables —
10
+ * vienen derivados del producto en el mapper del conector.
11
+ */
12
+ export class BackofficeLeafUpdateRequest {
13
+ @IsOptional() @IsString() @MaxLength(200) serviceName?: string;
14
+
15
+ @IsOptional() @IsString() @MaxLength(100)
16
+ @Matches(/^[A-Z][A-Z0-9_ ]*$/, { message: "category must match /^[A-Z][A-Z0-9_ ]*$/" })
17
+ category?: string;
18
+
19
+ @IsOptional() @IsString() @MaxLength(100)
20
+ @Matches(/^[A-Z][A-Z0-9_ ]*$/, { message: "subcategory must match /^[A-Z][A-Z0-9_ ]*$/" })
21
+ subcategory?: string;
22
+
23
+ @IsOptional() @IsBoolean() enabled?: boolean;
24
+
25
+ @IsOptional() @IsString() @MaxLength(500) logo?: string;
26
+
27
+ @IsOptional() @IsNumber() serviceOrder?: number;
28
+
29
+ @IsOptional() @IsNumber() subcategoryOrder?: number;
30
+ }
@@ -32,10 +32,4 @@ export class ConnectorCatalogItem {
32
32
  products: ProductItem[];
33
33
  inputSchema: InputSchema;
34
34
  updatedAt: number;
35
-
36
- /** Campo editorial solo-marketplace. Vive en BenefitLeafOverride_GT y el merger lo agrega al item devuelto. */
37
- description?: string;
38
-
39
- /** Campo editorial solo-marketplace. Texto corto inline en el form de pago. */
40
- helpText?: string;
41
35
  }
@@ -11,10 +11,4 @@ export class ServiceLeaf {
11
11
  products: ProductItem[];
12
12
  inputSchema: InputSchema;
13
13
  updatedAt: number;
14
-
15
- /** Campo editorial solo-marketplace. Vive en BenefitLeafOverride_GT y el merger lo agrega al item devuelto. */
16
- description?: string;
17
-
18
- /** Campo editorial solo-marketplace. Texto corto inline en el form de pago. */
19
- helpText?: string;
20
14
  }
@@ -11,7 +11,6 @@ export * from "./enums/BannerTemplateVariantEnum";
11
11
  export * from "./enums/FavoriteDisabledReasonEnum";
12
12
  export * from "./enums/BenefitPaymentStatusEnum";
13
13
  export * from "./enums/BenefitPaymentErrorCodeEnum";
14
- export * from "./enums/LeafOverrideStatusEnum";
15
14
  export * from "./enums/BannerAssetKindEnum";
16
15
 
17
16
  //DTOs
@@ -60,10 +59,8 @@ export * from "./dtos/BenefitPaymentRequest";
60
59
  export * from "./dtos/BenefitPaymentResponse";
61
60
  export * from "./dtos/AuthorizeBenefitsMarketplaceTransactionRequest";
62
61
  export * from "./dtos/FavoriteUpsertContext";
63
- //Leaf overrides (admin backoffice) (v3.14.0)
64
- export * from "./dtos/FieldOverrideRequest";
65
- export * from "./dtos/InputSchemaOverrideRequest";
66
- export * from "./dtos/BackofficeLeafOverrideUpsertRequest";
62
+ //Admin leaves in-place (v3.16.0)
63
+ export * from "./dtos/BackofficeLeafUpdateRequest";
67
64
  export * from "./dtos/BackofficeLeafListItem";
68
65
  export * from "./dtos/BackofficeLeafListResponse";
69
66
  export * from "./dtos/BackofficeLeafDetailResponse";
@@ -0,0 +1,16 @@
1
+
2
+ /**
3
+ * Estructura común para override manual de validaciones (CNBV, blacklist, etc.)
4
+ * por parte de un operador u oficial de cumplimiento.
5
+ *
6
+ * Sólo debe setearse desde un endpoint backoffice autenticado para que
7
+ * `by` venga del JWT del operador y quede traza auditable.
8
+ */
9
+ export interface ManualApproval {
10
+ /** email del operador que aprobó manualmente, tomado del JWT */
11
+ by: string;
12
+ /** ISO 8601 timestamp del momento de la aprobación */
13
+ at: string;
14
+ /** justificación obligatoria del override */
15
+ reason: string;
16
+ }
@@ -6,6 +6,7 @@ import { CPStatusEnum } from '../enums/CPStatusEnum';
6
6
  import { InfoSelfVerifiedStatus } from '../enums/InfoSelfVerifiedStatus';
7
7
  import { SexDocument } from '../enums/SexDocument';
8
8
  import { IdentificationDocument } from './IdentificationDocument';
9
+ import { ManualApproval } from './ManualApproval';
9
10
 
10
11
 
11
12
  export class PeopleResponse {
@@ -101,7 +102,8 @@ export class PeopleResponse {
101
102
  SSN_ITINRequired:boolean | null;
102
103
  hasSSN_ITIN:boolean | null;
103
104
  geoAppproved?:boolean | null;
104
-
105
+ cnbvManualApproval?: ManualApproval | null;
106
+
105
107
  }
106
108
  SIN: string | null;
107
109
  documentNumber: string;
@@ -4,6 +4,7 @@ import { CPStatusEnum } from "../enums/CPStatusEnum";
4
4
  import { InfoSelfVerifiedStatus } from "../enums/InfoSelfVerifiedStatus";
5
5
  import { SexDocument } from "../enums/SexDocument";
6
6
  import { IdentificationDocument } from "./IdentificationDocument";
7
+ import { ManualApproval } from "./ManualApproval";
7
8
 
8
9
 
9
10
  export class PeopleUpdateRequest {
@@ -51,6 +52,7 @@ export class PeopleUpdateRequest {
51
52
  fiadoListApproved?: boolean | null;
52
53
  ofacListApproved?: boolean | null;
53
54
  cnbvListApproved?: boolean | null;
55
+ cnbvManualApproval?: ManualApproval | null;
54
56
  blackListApproved?: boolean | null;
55
57
  whiteList?: boolean | null;
56
58
  hasOwner?: boolean;
@@ -1,6 +1,7 @@
1
1
 
2
- //dtos
2
+ //dtos
3
3
  export * from './dtos/IdentificationDocument'
4
+ export * from './dtos/ManualApproval';
4
5
  export * from './dtos/PeopleCreateRequest';
5
6
  export * from './dtos/PeopleResponse';
6
7
  export * from './dtos/TypeOfDocument';
@@ -1,77 +0,0 @@
1
- import {
2
- IsBoolean,
3
- IsInt,
4
- IsOptional,
5
- IsString,
6
- IsUrl,
7
- Matches,
8
- MaxLength,
9
- Min,
10
- ValidateNested,
11
- } from "class-validator";
12
- import { Type } from "class-transformer";
13
- import { InputSchemaOverrideRequest } from "./InputSchemaOverrideRequest";
14
-
15
- /**
16
- * Body de PUT /backoffice/leaves/{leafId}. Upsert parcial:
17
- * - undefined → no se toca
18
- * - string/number/boolean seteado → pisa el valor previo del override
19
- * - null NO se acepta (para borrar un campo, usar DELETE /fields/{fieldName})
20
- *
21
- * Si todos los campos llegan undefined → 400 INVALID_PATCH_PAYLOAD.
22
- */
23
- export class BackofficeLeafOverrideUpsertRequest {
24
- @IsOptional()
25
- @IsString()
26
- @MaxLength(120)
27
- serviceName?: string;
28
-
29
- @IsOptional()
30
- @IsUrl({ protocols: ["https"], require_protocol: true })
31
- @MaxLength(500)
32
- logo?: string;
33
-
34
- @IsOptional()
35
- @IsString()
36
- @MaxLength(2000)
37
- description?: string;
38
-
39
- @IsOptional()
40
- @IsString()
41
- @MaxLength(1000)
42
- helpText?: string;
43
-
44
- @IsOptional()
45
- @IsInt()
46
- @Min(0)
47
- serviceOrder?: number;
48
-
49
- @IsOptional()
50
- @IsInt()
51
- @Min(0)
52
- subcategoryOrder?: number;
53
-
54
- @IsOptional()
55
- @IsBoolean()
56
- enabled?: boolean;
57
-
58
- @IsOptional()
59
- @IsString()
60
- @MaxLength(60)
61
- @Matches(/^[A-Z][A-Z0-9_ ]*$/, { message: "category must be uppercase with underscores or spaces" })
62
- category?: string;
63
-
64
- @IsOptional()
65
- @IsString()
66
- @MaxLength(60)
67
- subcategory?: string;
68
-
69
- @IsOptional()
70
- @IsBoolean()
71
- requiresReferenceVerification?: boolean;
72
-
73
- @IsOptional()
74
- @ValidateNested()
75
- @Type(() => InputSchemaOverrideRequest)
76
- inputSchema?: InputSchemaOverrideRequest;
77
- }
@@ -1,67 +0,0 @@
1
- import {
2
- IsArray,
3
- IsBoolean,
4
- IsEnum,
5
- IsNotEmpty,
6
- IsOptional,
7
- IsString,
8
- IsUrl,
9
- MaxLength,
10
- ValidateNested,
11
- } from "class-validator";
12
- import { Type } from "class-transformer";
13
- import { InputFieldTypeEnum } from "../enums/InputFieldTypeEnum";
14
- import { InputValidation } from "./InputValidation";
15
- import { SelectOption } from "./SelectOption";
16
-
17
- /**
18
- * Override parcial de un field individual del `inputSchema` por `key`.
19
- * El admin no puede agregar ni quitar fields — solo editar los existentes.
20
- */
21
- export class FieldOverrideRequest {
22
- @IsString()
23
- @IsNotEmpty()
24
- key!: string;
25
-
26
- @IsOptional()
27
- @IsEnum(InputFieldTypeEnum)
28
- type?: InputFieldTypeEnum;
29
-
30
- @IsOptional()
31
- @IsString()
32
- @MaxLength(120)
33
- label?: string;
34
-
35
- @IsOptional()
36
- @IsString()
37
- @MaxLength(120)
38
- placeholder?: string;
39
-
40
- @IsOptional()
41
- @IsBoolean()
42
- required?: boolean;
43
-
44
- @IsOptional()
45
- @IsUrl({ protocols: ["https"], require_protocol: true })
46
- helpImage?: string;
47
-
48
- @IsOptional()
49
- @IsBoolean()
50
- showHelp?: boolean;
51
-
52
- @IsOptional()
53
- @IsArray()
54
- @ValidateNested({ each: true })
55
- @Type(() => SelectOption)
56
- options?: SelectOption[];
57
-
58
- @IsOptional()
59
- @IsString()
60
- @MaxLength(60)
61
- dependsOn?: string;
62
-
63
- @IsOptional()
64
- @ValidateNested()
65
- @Type(() => InputValidation)
66
- validation?: InputValidation;
67
- }
@@ -1,15 +0,0 @@
1
- import { IsArray, ValidateNested } from "class-validator";
2
- import { Type } from "class-transformer";
3
- import { FieldOverrideRequest } from "./FieldOverrideRequest";
4
-
5
- /**
6
- * Override del inputSchema completo. El array `fieldOverrides[]` lista overrides
7
- * parciales por `key`. La validación cruzada de que cada `key` exista en el
8
- * inputSchema del conector la hace el manager (no se puede expresar con class-validator).
9
- */
10
- export class InputSchemaOverrideRequest {
11
- @IsArray()
12
- @ValidateNested({ each: true })
13
- @Type(() => FieldOverrideRequest)
14
- fieldOverrides!: FieldOverrideRequest[];
15
- }
@@ -1,10 +0,0 @@
1
- /**
2
- * Estado de un leaf en el listado del backoffice de overrides.
3
- *
4
- * - ACTIVE: el override (si existe) tiene un base correspondiente en el catálogo del conector.
5
- * - ORPHANED: existe override pero el conector ya no devuelve este leafId — el provider lo retiró.
6
- */
7
- export enum LeafOverrideStatusEnum {
8
- ACTIVE = "ACTIVE",
9
- ORPHANED = "ORPHANED",
10
- }