@fiado/type-kit 3.13.9 → 3.14.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/bin/benefitCenter/dtos/BackofficeLeafDetailResponse.d.ts +32 -0
- package/bin/benefitCenter/dtos/BackofficeLeafDetailResponse.js +13 -0
- package/bin/benefitCenter/dtos/BackofficeLeafListItem.d.ts +21 -0
- package/bin/benefitCenter/dtos/BackofficeLeafListItem.js +10 -0
- package/bin/benefitCenter/dtos/BackofficeLeafListResponse.d.ts +6 -0
- package/bin/benefitCenter/dtos/BackofficeLeafListResponse.js +6 -0
- package/bin/benefitCenter/dtos/BackofficeLeafOverrideUpsertRequest.d.ts +22 -0
- package/bin/benefitCenter/dtos/BackofficeLeafOverrideUpsertRequest.js +91 -0
- package/bin/benefitCenter/dtos/ConnectorCatalogItem.d.ts +4 -0
- package/bin/benefitCenter/dtos/FieldOverrideRequest.d.ts +19 -0
- package/bin/benefitCenter/dtos/FieldOverrideRequest.js +80 -0
- package/bin/benefitCenter/dtos/InputSchemaOverrideRequest.d.ts +9 -0
- package/bin/benefitCenter/dtos/InputSchemaOverrideRequest.js +29 -0
- package/bin/benefitCenter/dtos/ServiceLeaf.d.ts +4 -0
- package/bin/benefitCenter/enums/LeafOverrideStatusEnum.d.ts +10 -0
- package/bin/benefitCenter/enums/LeafOverrideStatusEnum.js +14 -0
- package/bin/benefitCenter/index.d.ts +7 -0
- package/bin/benefitCenter/index.js +8 -0
- package/bin/card/validations/CardUpdateKeyConstraint.js +2 -2
- package/bin/card/validations/IsPhoneNumberConstraint.js +2 -2
- package/bin/index.js +17 -7
- package/package.json +1 -1
- package/src/benefitCenter/dtos/BackofficeLeafDetailResponse.ts +37 -0
- package/src/benefitCenter/dtos/BackofficeLeafListItem.ts +28 -0
- package/src/benefitCenter/dtos/BackofficeLeafListResponse.ts +8 -0
- package/src/benefitCenter/dtos/BackofficeLeafOverrideUpsertRequest.ts +77 -0
- package/src/benefitCenter/dtos/ConnectorCatalogItem.ts +6 -0
- package/src/benefitCenter/dtos/FieldOverrideRequest.ts +67 -0
- package/src/benefitCenter/dtos/InputSchemaOverrideRequest.ts +15 -0
- package/src/benefitCenter/dtos/ServiceLeaf.ts +6 -0
- package/src/benefitCenter/enums/LeafOverrideStatusEnum.ts +10 -0
- package/src/benefitCenter/index.ts +8 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ConnectorCatalogItem } from "./ConnectorCatalogItem";
|
|
2
|
+
import { LeafOverrideStatusEnum } from "../enums/LeafOverrideStatusEnum";
|
|
3
|
+
/**
|
|
4
|
+
* Override que vive en BenefitLeafOverride_GT (forma plana del item de DynamoDB).
|
|
5
|
+
* Los slots están definidos del lado lambda en BenefitLeafOverrideDocument;
|
|
6
|
+
* acá lo tipamos como Record opaco para no duplicar la definición.
|
|
7
|
+
*
|
|
8
|
+
* Los consumers del type-kit no necesitan el detalle interno — usan `effective`
|
|
9
|
+
* para ver el resultado final y `override` solo para saber qué campos están
|
|
10
|
+
* seteados.
|
|
11
|
+
*/
|
|
12
|
+
export type BenefitLeafOverridePayload = Record<string, unknown>;
|
|
13
|
+
/**
|
|
14
|
+
* Response del detalle del backoffice. Trae 3 visiones del leaf:
|
|
15
|
+
* - base: lo que devuelve el conector (sin merge).
|
|
16
|
+
* - override: lo que hay en BenefitLeafOverride_GT (null si nunca se editó).
|
|
17
|
+
* - effective: el merge (lo que ve la app).
|
|
18
|
+
* Si status === ORPHANED, base y effective son null.
|
|
19
|
+
*/
|
|
20
|
+
export declare class BackofficeLeafDetailResponse {
|
|
21
|
+
leafId: string;
|
|
22
|
+
benefitId: string;
|
|
23
|
+
moduleName: string;
|
|
24
|
+
serviceId: string;
|
|
25
|
+
base: ConnectorCatalogItem | null;
|
|
26
|
+
override: BenefitLeafOverridePayload | null;
|
|
27
|
+
effective: ConnectorCatalogItem | null;
|
|
28
|
+
status: LeafOverrideStatusEnum;
|
|
29
|
+
updatedBy: string | null;
|
|
30
|
+
createdAt: number | null;
|
|
31
|
+
updatedAt: number | null;
|
|
32
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BackofficeLeafDetailResponse = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Response del detalle del backoffice. Trae 3 visiones del leaf:
|
|
6
|
+
* - base: lo que devuelve el conector (sin merge).
|
|
7
|
+
* - override: lo que hay en BenefitLeafOverride_GT (null si nunca se editó).
|
|
8
|
+
* - effective: el merge (lo que ve la app).
|
|
9
|
+
* Si status === ORPHANED, base y effective son null.
|
|
10
|
+
*/
|
|
11
|
+
class BackofficeLeafDetailResponse {
|
|
12
|
+
}
|
|
13
|
+
exports.BackofficeLeafDetailResponse = BackofficeLeafDetailResponse;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { LeafOverrideStatusEnum } from "../enums/LeafOverrideStatusEnum";
|
|
2
|
+
/**
|
|
3
|
+
* Item del listado del backoffice de leaves. Combina el estado efectivo
|
|
4
|
+
* (post-merge) que verá la app con metadata del override (si existe).
|
|
5
|
+
*/
|
|
6
|
+
export declare class BackofficeLeafListItem {
|
|
7
|
+
leafId: string;
|
|
8
|
+
benefitId: string;
|
|
9
|
+
moduleName: string;
|
|
10
|
+
serviceId: string;
|
|
11
|
+
serviceName: string;
|
|
12
|
+
category: string;
|
|
13
|
+
subcategory: string;
|
|
14
|
+
enabled: boolean;
|
|
15
|
+
logo?: string;
|
|
16
|
+
hasOverride: boolean;
|
|
17
|
+
overriddenFields: string[];
|
|
18
|
+
status: LeafOverrideStatusEnum;
|
|
19
|
+
updatedBy?: string;
|
|
20
|
+
updatedAt?: number;
|
|
21
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BackofficeLeafListItem = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Item del listado del backoffice de leaves. Combina el estado efectivo
|
|
6
|
+
* (post-merge) que verá la app con metadata del override (si existe).
|
|
7
|
+
*/
|
|
8
|
+
class BackofficeLeafListItem {
|
|
9
|
+
}
|
|
10
|
+
exports.BackofficeLeafListItem = BackofficeLeafListItem;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { InputSchemaOverrideRequest } from "./InputSchemaOverrideRequest";
|
|
2
|
+
/**
|
|
3
|
+
* Body de PUT /backoffice/leaves/{leafId}. Upsert parcial:
|
|
4
|
+
* - undefined → no se toca
|
|
5
|
+
* - string/number/boolean seteado → pisa el valor previo del override
|
|
6
|
+
* - null NO se acepta (para borrar un campo, usar DELETE /fields/{fieldName})
|
|
7
|
+
*
|
|
8
|
+
* Si todos los campos llegan undefined → 400 INVALID_PATCH_PAYLOAD.
|
|
9
|
+
*/
|
|
10
|
+
export declare class BackofficeLeafOverrideUpsertRequest {
|
|
11
|
+
serviceName?: string;
|
|
12
|
+
logo?: string;
|
|
13
|
+
description?: string;
|
|
14
|
+
helpText?: string;
|
|
15
|
+
serviceOrder?: number;
|
|
16
|
+
subcategoryOrder?: number;
|
|
17
|
+
enabled?: boolean;
|
|
18
|
+
category?: string;
|
|
19
|
+
subcategory?: string;
|
|
20
|
+
requiresReferenceVerification?: boolean;
|
|
21
|
+
inputSchema?: InputSchemaOverrideRequest;
|
|
22
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.BackofficeLeafOverrideUpsertRequest = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
const class_transformer_1 = require("class-transformer");
|
|
15
|
+
const InputSchemaOverrideRequest_1 = require("./InputSchemaOverrideRequest");
|
|
16
|
+
/**
|
|
17
|
+
* Body de PUT /backoffice/leaves/{leafId}. Upsert parcial:
|
|
18
|
+
* - undefined → no se toca
|
|
19
|
+
* - string/number/boolean seteado → pisa el valor previo del override
|
|
20
|
+
* - null NO se acepta (para borrar un campo, usar DELETE /fields/{fieldName})
|
|
21
|
+
*
|
|
22
|
+
* Si todos los campos llegan undefined → 400 INVALID_PATCH_PAYLOAD.
|
|
23
|
+
*/
|
|
24
|
+
class BackofficeLeafOverrideUpsertRequest {
|
|
25
|
+
}
|
|
26
|
+
exports.BackofficeLeafOverrideUpsertRequest = BackofficeLeafOverrideUpsertRequest;
|
|
27
|
+
__decorate([
|
|
28
|
+
(0, class_validator_1.IsOptional)(),
|
|
29
|
+
(0, class_validator_1.IsString)(),
|
|
30
|
+
(0, class_validator_1.MaxLength)(120),
|
|
31
|
+
__metadata("design:type", String)
|
|
32
|
+
], BackofficeLeafOverrideUpsertRequest.prototype, "serviceName", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
(0, class_validator_1.IsOptional)(),
|
|
35
|
+
(0, class_validator_1.IsUrl)({ protocols: ["https"], require_protocol: true }),
|
|
36
|
+
(0, class_validator_1.MaxLength)(500),
|
|
37
|
+
__metadata("design:type", String)
|
|
38
|
+
], BackofficeLeafOverrideUpsertRequest.prototype, "logo", void 0);
|
|
39
|
+
__decorate([
|
|
40
|
+
(0, class_validator_1.IsOptional)(),
|
|
41
|
+
(0, class_validator_1.IsString)(),
|
|
42
|
+
(0, class_validator_1.MaxLength)(2000),
|
|
43
|
+
__metadata("design:type", String)
|
|
44
|
+
], BackofficeLeafOverrideUpsertRequest.prototype, "description", void 0);
|
|
45
|
+
__decorate([
|
|
46
|
+
(0, class_validator_1.IsOptional)(),
|
|
47
|
+
(0, class_validator_1.IsString)(),
|
|
48
|
+
(0, class_validator_1.MaxLength)(1000),
|
|
49
|
+
__metadata("design:type", String)
|
|
50
|
+
], BackofficeLeafOverrideUpsertRequest.prototype, "helpText", void 0);
|
|
51
|
+
__decorate([
|
|
52
|
+
(0, class_validator_1.IsOptional)(),
|
|
53
|
+
(0, class_validator_1.IsInt)(),
|
|
54
|
+
(0, class_validator_1.Min)(0),
|
|
55
|
+
__metadata("design:type", Number)
|
|
56
|
+
], BackofficeLeafOverrideUpsertRequest.prototype, "serviceOrder", void 0);
|
|
57
|
+
__decorate([
|
|
58
|
+
(0, class_validator_1.IsOptional)(),
|
|
59
|
+
(0, class_validator_1.IsInt)(),
|
|
60
|
+
(0, class_validator_1.Min)(0),
|
|
61
|
+
__metadata("design:type", Number)
|
|
62
|
+
], BackofficeLeafOverrideUpsertRequest.prototype, "subcategoryOrder", void 0);
|
|
63
|
+
__decorate([
|
|
64
|
+
(0, class_validator_1.IsOptional)(),
|
|
65
|
+
(0, class_validator_1.IsBoolean)(),
|
|
66
|
+
__metadata("design:type", Boolean)
|
|
67
|
+
], BackofficeLeafOverrideUpsertRequest.prototype, "enabled", void 0);
|
|
68
|
+
__decorate([
|
|
69
|
+
(0, class_validator_1.IsOptional)(),
|
|
70
|
+
(0, class_validator_1.IsString)(),
|
|
71
|
+
(0, class_validator_1.MaxLength)(60),
|
|
72
|
+
(0, class_validator_1.Matches)(/^[A-Z][A-Z0-9_ ]*$/, { message: "category must be uppercase with underscores or spaces" }),
|
|
73
|
+
__metadata("design:type", String)
|
|
74
|
+
], BackofficeLeafOverrideUpsertRequest.prototype, "category", void 0);
|
|
75
|
+
__decorate([
|
|
76
|
+
(0, class_validator_1.IsOptional)(),
|
|
77
|
+
(0, class_validator_1.IsString)(),
|
|
78
|
+
(0, class_validator_1.MaxLength)(60),
|
|
79
|
+
__metadata("design:type", String)
|
|
80
|
+
], BackofficeLeafOverrideUpsertRequest.prototype, "subcategory", void 0);
|
|
81
|
+
__decorate([
|
|
82
|
+
(0, class_validator_1.IsOptional)(),
|
|
83
|
+
(0, class_validator_1.IsBoolean)(),
|
|
84
|
+
__metadata("design:type", Boolean)
|
|
85
|
+
], BackofficeLeafOverrideUpsertRequest.prototype, "requiresReferenceVerification", void 0);
|
|
86
|
+
__decorate([
|
|
87
|
+
(0, class_validator_1.IsOptional)(),
|
|
88
|
+
(0, class_validator_1.ValidateNested)(),
|
|
89
|
+
(0, class_transformer_1.Type)(() => InputSchemaOverrideRequest_1.InputSchemaOverrideRequest),
|
|
90
|
+
__metadata("design:type", InputSchemaOverrideRequest_1.InputSchemaOverrideRequest)
|
|
91
|
+
], BackofficeLeafOverrideUpsertRequest.prototype, "inputSchema", void 0);
|
|
@@ -24,4 +24,8 @@ export declare class ConnectorCatalogItem {
|
|
|
24
24
|
products: ProductItem[];
|
|
25
25
|
inputSchema: InputSchema;
|
|
26
26
|
updatedAt: number;
|
|
27
|
+
/** Campo editorial solo-marketplace. Vive en BenefitLeafOverride_GT y el merger lo agrega al item devuelto. */
|
|
28
|
+
description?: string;
|
|
29
|
+
/** Campo editorial solo-marketplace. Texto corto inline en el form de pago. */
|
|
30
|
+
helpText?: string;
|
|
27
31
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { InputFieldTypeEnum } from "../enums/InputFieldTypeEnum";
|
|
2
|
+
import { InputValidation } from "./InputValidation";
|
|
3
|
+
import { SelectOption } from "./SelectOption";
|
|
4
|
+
/**
|
|
5
|
+
* Override parcial de un field individual del `inputSchema` por `key`.
|
|
6
|
+
* El admin no puede agregar ni quitar fields — solo editar los existentes.
|
|
7
|
+
*/
|
|
8
|
+
export declare class FieldOverrideRequest {
|
|
9
|
+
key: string;
|
|
10
|
+
type?: InputFieldTypeEnum;
|
|
11
|
+
label?: string;
|
|
12
|
+
placeholder?: string;
|
|
13
|
+
required?: boolean;
|
|
14
|
+
helpImage?: string;
|
|
15
|
+
showHelp?: boolean;
|
|
16
|
+
options?: SelectOption[];
|
|
17
|
+
dependsOn?: string;
|
|
18
|
+
validation?: InputValidation;
|
|
19
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.FieldOverrideRequest = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
const class_transformer_1 = require("class-transformer");
|
|
15
|
+
const InputFieldTypeEnum_1 = require("../enums/InputFieldTypeEnum");
|
|
16
|
+
const InputValidation_1 = require("./InputValidation");
|
|
17
|
+
const SelectOption_1 = require("./SelectOption");
|
|
18
|
+
/**
|
|
19
|
+
* Override parcial de un field individual del `inputSchema` por `key`.
|
|
20
|
+
* El admin no puede agregar ni quitar fields — solo editar los existentes.
|
|
21
|
+
*/
|
|
22
|
+
class FieldOverrideRequest {
|
|
23
|
+
}
|
|
24
|
+
exports.FieldOverrideRequest = FieldOverrideRequest;
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, class_validator_1.IsString)(),
|
|
27
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
28
|
+
__metadata("design:type", String)
|
|
29
|
+
], FieldOverrideRequest.prototype, "key", void 0);
|
|
30
|
+
__decorate([
|
|
31
|
+
(0, class_validator_1.IsOptional)(),
|
|
32
|
+
(0, class_validator_1.IsEnum)(InputFieldTypeEnum_1.InputFieldTypeEnum),
|
|
33
|
+
__metadata("design:type", String)
|
|
34
|
+
], FieldOverrideRequest.prototype, "type", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, class_validator_1.IsOptional)(),
|
|
37
|
+
(0, class_validator_1.IsString)(),
|
|
38
|
+
(0, class_validator_1.MaxLength)(120),
|
|
39
|
+
__metadata("design:type", String)
|
|
40
|
+
], FieldOverrideRequest.prototype, "label", void 0);
|
|
41
|
+
__decorate([
|
|
42
|
+
(0, class_validator_1.IsOptional)(),
|
|
43
|
+
(0, class_validator_1.IsString)(),
|
|
44
|
+
(0, class_validator_1.MaxLength)(120),
|
|
45
|
+
__metadata("design:type", String)
|
|
46
|
+
], FieldOverrideRequest.prototype, "placeholder", void 0);
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, class_validator_1.IsOptional)(),
|
|
49
|
+
(0, class_validator_1.IsBoolean)(),
|
|
50
|
+
__metadata("design:type", Boolean)
|
|
51
|
+
], FieldOverrideRequest.prototype, "required", void 0);
|
|
52
|
+
__decorate([
|
|
53
|
+
(0, class_validator_1.IsOptional)(),
|
|
54
|
+
(0, class_validator_1.IsUrl)({ protocols: ["https"], require_protocol: true }),
|
|
55
|
+
__metadata("design:type", String)
|
|
56
|
+
], FieldOverrideRequest.prototype, "helpImage", void 0);
|
|
57
|
+
__decorate([
|
|
58
|
+
(0, class_validator_1.IsOptional)(),
|
|
59
|
+
(0, class_validator_1.IsBoolean)(),
|
|
60
|
+
__metadata("design:type", Boolean)
|
|
61
|
+
], FieldOverrideRequest.prototype, "showHelp", void 0);
|
|
62
|
+
__decorate([
|
|
63
|
+
(0, class_validator_1.IsOptional)(),
|
|
64
|
+
(0, class_validator_1.IsArray)(),
|
|
65
|
+
(0, class_validator_1.ValidateNested)({ each: true }),
|
|
66
|
+
(0, class_transformer_1.Type)(() => SelectOption_1.SelectOption),
|
|
67
|
+
__metadata("design:type", Array)
|
|
68
|
+
], FieldOverrideRequest.prototype, "options", void 0);
|
|
69
|
+
__decorate([
|
|
70
|
+
(0, class_validator_1.IsOptional)(),
|
|
71
|
+
(0, class_validator_1.IsString)(),
|
|
72
|
+
(0, class_validator_1.MaxLength)(60),
|
|
73
|
+
__metadata("design:type", String)
|
|
74
|
+
], FieldOverrideRequest.prototype, "dependsOn", void 0);
|
|
75
|
+
__decorate([
|
|
76
|
+
(0, class_validator_1.IsOptional)(),
|
|
77
|
+
(0, class_validator_1.ValidateNested)(),
|
|
78
|
+
(0, class_transformer_1.Type)(() => InputValidation_1.InputValidation),
|
|
79
|
+
__metadata("design:type", InputValidation_1.InputValidation)
|
|
80
|
+
], FieldOverrideRequest.prototype, "validation", void 0);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FieldOverrideRequest } from "./FieldOverrideRequest";
|
|
2
|
+
/**
|
|
3
|
+
* Override del inputSchema completo. El array `fieldOverrides[]` lista overrides
|
|
4
|
+
* parciales por `key`. La validación cruzada de que cada `key` exista en el
|
|
5
|
+
* inputSchema del conector la hace el manager (no se puede expresar con class-validator).
|
|
6
|
+
*/
|
|
7
|
+
export declare class InputSchemaOverrideRequest {
|
|
8
|
+
fieldOverrides: FieldOverrideRequest[];
|
|
9
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.InputSchemaOverrideRequest = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
const class_transformer_1 = require("class-transformer");
|
|
15
|
+
const FieldOverrideRequest_1 = require("./FieldOverrideRequest");
|
|
16
|
+
/**
|
|
17
|
+
* Override del inputSchema completo. El array `fieldOverrides[]` lista overrides
|
|
18
|
+
* parciales por `key`. La validación cruzada de que cada `key` exista en el
|
|
19
|
+
* inputSchema del conector la hace el manager (no se puede expresar con class-validator).
|
|
20
|
+
*/
|
|
21
|
+
class InputSchemaOverrideRequest {
|
|
22
|
+
}
|
|
23
|
+
exports.InputSchemaOverrideRequest = InputSchemaOverrideRequest;
|
|
24
|
+
__decorate([
|
|
25
|
+
(0, class_validator_1.IsArray)(),
|
|
26
|
+
(0, class_validator_1.ValidateNested)({ each: true }),
|
|
27
|
+
(0, class_transformer_1.Type)(() => FieldOverrideRequest_1.FieldOverrideRequest),
|
|
28
|
+
__metadata("design:type", Array)
|
|
29
|
+
], InputSchemaOverrideRequest.prototype, "fieldOverrides", void 0);
|
|
@@ -10,4 +10,8 @@ export declare class ServiceLeaf {
|
|
|
10
10
|
products: ProductItem[];
|
|
11
11
|
inputSchema: InputSchema;
|
|
12
12
|
updatedAt: number;
|
|
13
|
+
/** Campo editorial solo-marketplace. Vive en BenefitLeafOverride_GT y el merger lo agrega al item devuelto. */
|
|
14
|
+
description?: string;
|
|
15
|
+
/** Campo editorial solo-marketplace. Texto corto inline en el form de pago. */
|
|
16
|
+
helpText?: string;
|
|
13
17
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
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 declare enum LeafOverrideStatusEnum {
|
|
8
|
+
ACTIVE = "ACTIVE",
|
|
9
|
+
ORPHANED = "ORPHANED"
|
|
10
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LeafOverrideStatusEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Estado de un leaf en el listado del backoffice de overrides.
|
|
6
|
+
*
|
|
7
|
+
* - ACTIVE: el override (si existe) tiene un base correspondiente en el catálogo del conector.
|
|
8
|
+
* - ORPHANED: existe override pero el conector ya no devuelve este leafId — el provider lo retiró.
|
|
9
|
+
*/
|
|
10
|
+
var LeafOverrideStatusEnum;
|
|
11
|
+
(function (LeafOverrideStatusEnum) {
|
|
12
|
+
LeafOverrideStatusEnum["ACTIVE"] = "ACTIVE";
|
|
13
|
+
LeafOverrideStatusEnum["ORPHANED"] = "ORPHANED";
|
|
14
|
+
})(LeafOverrideStatusEnum || (exports.LeafOverrideStatusEnum = LeafOverrideStatusEnum = {}));
|
|
@@ -10,6 +10,7 @@ export * from "./enums/BannerTemplateVariantEnum";
|
|
|
10
10
|
export * from "./enums/FavoriteDisabledReasonEnum";
|
|
11
11
|
export * from "./enums/BenefitPaymentStatusEnum";
|
|
12
12
|
export * from "./enums/BenefitPaymentErrorCodeEnum";
|
|
13
|
+
export * from "./enums/LeafOverrideStatusEnum";
|
|
13
14
|
export * from "./dtos/BenefitItem";
|
|
14
15
|
export * from "./dtos/BenefitListResponse";
|
|
15
16
|
export * from "./dtos/BenefitSummary";
|
|
@@ -52,3 +53,9 @@ export * from "./dtos/BenefitPaymentRequest";
|
|
|
52
53
|
export * from "./dtos/BenefitPaymentResponse";
|
|
53
54
|
export * from "./dtos/AuthorizeBenefitsMarketplaceTransactionRequest";
|
|
54
55
|
export * from "./dtos/FavoriteUpsertContext";
|
|
56
|
+
export * from "./dtos/FieldOverrideRequest";
|
|
57
|
+
export * from "./dtos/InputSchemaOverrideRequest";
|
|
58
|
+
export * from "./dtos/BackofficeLeafOverrideUpsertRequest";
|
|
59
|
+
export * from "./dtos/BackofficeLeafListItem";
|
|
60
|
+
export * from "./dtos/BackofficeLeafListResponse";
|
|
61
|
+
export * from "./dtos/BackofficeLeafDetailResponse";
|
|
@@ -27,6 +27,7 @@ __exportStar(require("./enums/BannerTemplateVariantEnum"), exports);
|
|
|
27
27
|
__exportStar(require("./enums/FavoriteDisabledReasonEnum"), exports);
|
|
28
28
|
__exportStar(require("./enums/BenefitPaymentStatusEnum"), exports);
|
|
29
29
|
__exportStar(require("./enums/BenefitPaymentErrorCodeEnum"), exports);
|
|
30
|
+
__exportStar(require("./enums/LeafOverrideStatusEnum"), exports);
|
|
30
31
|
//DTOs
|
|
31
32
|
__exportStar(require("./dtos/BenefitItem"), exports);
|
|
32
33
|
__exportStar(require("./dtos/BenefitListResponse"), exports);
|
|
@@ -73,3 +74,10 @@ __exportStar(require("./dtos/BenefitPaymentRequest"), exports);
|
|
|
73
74
|
__exportStar(require("./dtos/BenefitPaymentResponse"), exports);
|
|
74
75
|
__exportStar(require("./dtos/AuthorizeBenefitsMarketplaceTransactionRequest"), exports);
|
|
75
76
|
__exportStar(require("./dtos/FavoriteUpsertContext"), exports);
|
|
77
|
+
//Leaf overrides (admin backoffice) (v3.14.0)
|
|
78
|
+
__exportStar(require("./dtos/FieldOverrideRequest"), exports);
|
|
79
|
+
__exportStar(require("./dtos/InputSchemaOverrideRequest"), exports);
|
|
80
|
+
__exportStar(require("./dtos/BackofficeLeafOverrideUpsertRequest"), exports);
|
|
81
|
+
__exportStar(require("./dtos/BackofficeLeafListItem"), exports);
|
|
82
|
+
__exportStar(require("./dtos/BackofficeLeafListResponse"), exports);
|
|
83
|
+
__exportStar(require("./dtos/BackofficeLeafDetailResponse"), exports);
|
|
@@ -6,7 +6,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.
|
|
9
|
+
exports.CardUpdateKeyConstraint = exports.IsReasonRequiredForCancelledStatusConstraint = void 0;
|
|
10
|
+
exports.IsValueValid = IsValueValid;
|
|
10
11
|
const class_validator_1 = require("class-validator");
|
|
11
12
|
const Status_1 = require("../enums/Status");
|
|
12
13
|
const UpdateKey_1 = require("../enums/UpdateKey");
|
|
@@ -70,4 +71,3 @@ function IsValueValid(validationOptions) {
|
|
|
70
71
|
});
|
|
71
72
|
};
|
|
72
73
|
}
|
|
73
|
-
exports.IsValueValid = IsValueValid;
|
|
@@ -6,7 +6,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.
|
|
9
|
+
exports.IsPhoneNumberConstraint = void 0;
|
|
10
|
+
exports.IsPhoneNumberFiado = IsPhoneNumberFiado;
|
|
10
11
|
const class_validator_1 = require("class-validator");
|
|
11
12
|
const regex_1 = require("../../helpers/constans/regex");
|
|
12
13
|
let IsPhoneNumberConstraint = class IsPhoneNumberConstraint {
|
|
@@ -36,4 +37,3 @@ function IsPhoneNumberFiado(validationOptions) {
|
|
|
36
37
|
});
|
|
37
38
|
};
|
|
38
39
|
}
|
|
39
|
-
exports.IsPhoneNumberFiado = IsPhoneNumberFiado;
|
package/bin/index.js
CHANGED
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
36
|
exports.Pricelist = exports.Company = exports.Services = exports.AccountIssuanceBusiness = exports.AppSelectionData = exports.Device = exports.Observations = exports.IssuanceBusiness = exports.Blacklist = exports.CentralPayments = exports.Helpdesk = exports.FiadoApiResponse = exports.Auth = exports.LegalDocumentsBusiness = exports.Role = exports.STPAccount = exports.RiskProfile = exports.FraudPreventionEngine = exports.BBVARst = exports.Stp = exports.BenefitCenter = exports.BankAccount = exports.P2pContact = exports.CreditContract = exports.Contract = exports.ProductCatalog = exports.ContactInfo = exports.Transaction = exports.TransactionProcessor = exports.GenericMessage = exports.EventBridgeMessage = exports.SessionActivity = exports.NotificationMessages = exports.ServicePayment = exports.Header = exports.Identity = exports.Group = exports.File = exports.ExchangeRate = exports.Directory = exports.Currency = exports.Country = exports.Card = exports.Authentication = exports.App = exports.Address = exports.Beneficiary = exports.Activity = exports.Account = exports.Crypto = void 0;
|
|
27
37
|
exports.MilestoneBusiness = exports.CirculoCredito = exports.CreditStatements = exports.Sentry = exports.AiEngine = exports.Funnel = exports.TeamsConnector = exports.PlatformErrorEvents = exports.CustomerFile = exports.CreditBackoffice = exports.CreditDashboard = exports.CreditEngine = exports.Credit = exports.ComissionBusiness = exports.ReferralBusiness = exports.ZendeskMessaging = exports.NotificationWS = exports.Event = exports.PayrollBusiness = exports.Cnbv = exports.DirectorySetting = exports.InvoiceCollector = exports.Collector = void 0;
|
package/package.json
CHANGED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ConnectorCatalogItem } from "./ConnectorCatalogItem";
|
|
2
|
+
import { LeafOverrideStatusEnum } from "../enums/LeafOverrideStatusEnum";
|
|
3
|
+
|
|
4
|
+
/**
|
|
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.
|
|
12
|
+
*/
|
|
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 {
|
|
23
|
+
leafId: string;
|
|
24
|
+
benefitId: string;
|
|
25
|
+
moduleName: string;
|
|
26
|
+
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;
|
|
37
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { LeafOverrideStatusEnum } from "../enums/LeafOverrideStatusEnum";
|
|
2
|
+
|
|
3
|
+
/**
|
|
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).
|
|
6
|
+
*/
|
|
7
|
+
export class BackofficeLeafListItem {
|
|
8
|
+
leafId: string;
|
|
9
|
+
benefitId: string;
|
|
10
|
+
moduleName: string;
|
|
11
|
+
serviceId: string;
|
|
12
|
+
|
|
13
|
+
// Effective (post-merge) — lo que vería el cliente
|
|
14
|
+
serviceName: string;
|
|
15
|
+
category: string;
|
|
16
|
+
subcategory: string;
|
|
17
|
+
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;
|
|
28
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
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
|
+
}
|
|
@@ -32,4 +32,10 @@ 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;
|
|
35
41
|
}
|
|
@@ -0,0 +1,67 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
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
|
+
}
|
|
@@ -11,4 +11,10 @@ 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;
|
|
14
20
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
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
|
+
}
|
|
@@ -11,6 +11,7 @@ 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";
|
|
14
15
|
|
|
15
16
|
//DTOs
|
|
16
17
|
export * from "./dtos/BenefitItem";
|
|
@@ -58,3 +59,10 @@ export * from "./dtos/BenefitPaymentRequest";
|
|
|
58
59
|
export * from "./dtos/BenefitPaymentResponse";
|
|
59
60
|
export * from "./dtos/AuthorizeBenefitsMarketplaceTransactionRequest";
|
|
60
61
|
export * from "./dtos/FavoriteUpsertContext";
|
|
62
|
+
//Leaf overrides (admin backoffice) (v3.14.0)
|
|
63
|
+
export * from "./dtos/FieldOverrideRequest";
|
|
64
|
+
export * from "./dtos/InputSchemaOverrideRequest";
|
|
65
|
+
export * from "./dtos/BackofficeLeafOverrideUpsertRequest";
|
|
66
|
+
export * from "./dtos/BackofficeLeafListItem";
|
|
67
|
+
export * from "./dtos/BackofficeLeafListResponse";
|
|
68
|
+
export * from "./dtos/BackofficeLeafDetailResponse";
|