@fiado/type-kit 3.144.0 → 3.145.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 (66) hide show
  1. package/bin/cognitoBackofficeConnector/dtos/MfaPoolConfig.d.ts +7 -0
  2. package/bin/{platformRbac/dtos/ResendSelfRegisterOtpRequest.js → cognitoBackofficeConnector/dtos/MfaPoolConfig.js} +18 -18
  3. package/bin/cognitoBackofficeConnector/dtos/PoolConfigResponse.d.ts +20 -0
  4. package/bin/cognitoBackofficeConnector/dtos/PoolConfigResponse.js +11 -0
  5. package/bin/cognitoBackofficeConnector/dtos/PoolsListResponse.d.ts +4 -0
  6. package/bin/cognitoBackofficeConnector/dtos/PoolsListResponse.js +6 -0
  7. package/bin/cognitoBackofficeConnector/validators/MfaTypesRequiresOne.d.ts +17 -0
  8. package/bin/cognitoBackofficeConnector/validators/MfaTypesRequiresOne.js +39 -0
  9. package/bin/group/dtos/GroupCountsResponse.d.ts +11 -0
  10. package/bin/group/dtos/GroupCountsResponse.js +11 -0
  11. package/bin/group/index.d.ts +1 -0
  12. package/bin/group/index.js +2 -0
  13. package/bin/index.d.ts +1 -0
  14. package/bin/index.js +3 -2
  15. package/bin/rbac/enums/PoolKind.d.ts +16 -0
  16. package/bin/rbac/enums/PoolKind.js +20 -0
  17. package/bin/rbac/index.d.ts +1 -0
  18. package/bin/rbac/index.js +17 -0
  19. package/bin/remittance/dtos/RemittanceSegment.d.ts +80 -0
  20. package/bin/remittance/dtos/RemittanceSegment.js +122 -0
  21. package/bin/remittance/dtos/index.d.ts +1 -0
  22. package/bin/remittance/dtos/index.js +1 -0
  23. package/bin/remittance/dtos/internal/RemittanceSegmentMetrics.d.ts +17 -0
  24. package/bin/remittance/dtos/internal/RemittanceSegmentMetrics.js +31 -0
  25. package/bin/remittance/enums/SegmentMemberType.d.ts +8 -0
  26. package/bin/remittance/enums/SegmentMemberType.js +12 -0
  27. package/bin/remittance/enums/index.d.ts +1 -0
  28. package/bin/remittance/enums/index.js +1 -0
  29. package/bin/remittance/index.d.ts +1 -0
  30. package/bin/remittance/index.js +1 -0
  31. package/bin/userTags/dtos/TagsByDirectoriesRequest.d.ts +4 -0
  32. package/bin/userTags/dtos/TagsByDirectoriesRequest.js +22 -0
  33. package/bin/userTags/dtos/TagsByDirectoriesResponse.d.ts +7 -0
  34. package/bin/userTags/dtos/TagsByDirectoriesResponse.js +10 -0
  35. package/bin/userTags/dtos/TagsSummaryResponse.d.ts +9 -0
  36. package/bin/userTags/dtos/TagsSummaryResponse.js +11 -0
  37. package/bin/userTags/index.d.ts +3 -0
  38. package/bin/userTags/index.js +20 -0
  39. package/bin/walletFunding/dtos/CancelFundingReferenceRequest.d.ts +5 -0
  40. package/bin/walletFunding/dtos/CancelFundingReferenceRequest.js +31 -0
  41. package/bin/walletFunding/dtos/CancelFundingReferenceResponse.d.ts +7 -0
  42. package/bin/walletFunding/dtos/CancelFundingReferenceResponse.js +6 -0
  43. package/bin/walletFunding/dtos/CancelFundingRequest.d.ts +11 -0
  44. package/bin/{platformRbac/dtos/ResendOtpRequest.js → walletFunding/dtos/CancelFundingRequest.js} +13 -16
  45. package/bin/walletFunding/dtos/CancelFundingResponse.d.ts +14 -0
  46. package/bin/walletFunding/dtos/CancelFundingResponse.js +12 -0
  47. package/bin/walletFunding/dtos/CancelWalletFundingRequest.d.ts +3 -0
  48. package/bin/walletFunding/dtos/CancelWalletFundingRequest.js +21 -0
  49. package/bin/walletFunding/dtos/CancelWalletFundingResponse.d.ts +7 -0
  50. package/bin/walletFunding/dtos/CancelWalletFundingResponse.js +6 -0
  51. package/package.json +1 -1
  52. package/src/group/dtos/GroupCountsResponse.ts +12 -0
  53. package/src/group/index.ts +3 -0
  54. package/src/index.ts +1 -0
  55. package/src/remittance/dtos/RemittanceSegment.ts +132 -0
  56. package/src/remittance/dtos/index.ts +1 -0
  57. package/src/remittance/dtos/internal/RemittanceSegmentMetrics.ts +22 -0
  58. package/src/remittance/enums/SegmentMemberType.ts +8 -0
  59. package/src/remittance/enums/index.ts +1 -0
  60. package/src/remittance/index.ts +1 -0
  61. package/src/userTags/dtos/TagsByDirectoriesRequest.ts +8 -0
  62. package/src/userTags/dtos/TagsByDirectoriesResponse.ts +7 -0
  63. package/src/userTags/dtos/TagsSummaryResponse.ts +10 -0
  64. package/src/userTags/index.ts +4 -0
  65. package/bin/platformRbac/dtos/ResendOtpRequest.d.ts +0 -22
  66. package/bin/platformRbac/dtos/ResendSelfRegisterOtpRequest.d.ts +0 -11
@@ -0,0 +1,22 @@
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.TagsByDirectoriesRequest = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ /** Request de POST tags/by-directories (privado, onboarding-business). */
15
+ class TagsByDirectoriesRequest {
16
+ }
17
+ exports.TagsByDirectoriesRequest = TagsByDirectoriesRequest;
18
+ __decorate([
19
+ (0, class_validator_1.IsArray)(),
20
+ (0, class_validator_1.IsUUID)("4", { each: true }),
21
+ __metadata("design:type", Array)
22
+ ], TagsByDirectoriesRequest.prototype, "directoryIds", void 0);
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tags por usuario para un batch de directoryIds. Ids sin tags → `[]`
3
+ * (siempre presentes en el mapa, para que el consumidor no distinga ausencia).
4
+ */
5
+ export declare class TagsByDirectoriesResponse {
6
+ tagsByDirectory: Record<string, string[]>;
7
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TagsByDirectoriesResponse = void 0;
4
+ /**
5
+ * Tags por usuario para un batch de directoryIds. Ids sin tags → `[]`
6
+ * (siempre presentes en el mapa, para que el consumidor no distinga ausencia).
7
+ */
8
+ class TagsByDirectoriesResponse {
9
+ }
10
+ exports.TagsByDirectoriesResponse = TagsByDirectoriesResponse;
@@ -0,0 +1,9 @@
1
+ /** Un tag operativo con su # de asignaciones en UserTags_GT (membresía Fiado-wide). */
2
+ export declare class TagSummaryItem {
3
+ tag: string;
4
+ count: number;
5
+ }
6
+ /** Response de GET tags/summary (privado, onboarding-business). Orden: count desc. */
7
+ export declare class TagsSummaryResponse {
8
+ items: TagSummaryItem[];
9
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TagsSummaryResponse = exports.TagSummaryItem = void 0;
4
+ /** Un tag operativo con su # de asignaciones en UserTags_GT (membresía Fiado-wide). */
5
+ class TagSummaryItem {
6
+ }
7
+ exports.TagSummaryItem = TagSummaryItem;
8
+ /** Response de GET tags/summary (privado, onboarding-business). Orden: count desc. */
9
+ class TagsSummaryResponse {
10
+ }
11
+ exports.TagsSummaryResponse = TagsSummaryResponse;
@@ -0,0 +1,3 @@
1
+ export * from './dtos/TagsSummaryResponse';
2
+ export * from './dtos/TagsByDirectoriesRequest';
3
+ export * from './dtos/TagsByDirectoriesResponse';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ //dtos
18
+ __exportStar(require("./dtos/TagsSummaryResponse"), exports);
19
+ __exportStar(require("./dtos/TagsByDirectoriesRequest"), exports);
20
+ __exportStar(require("./dtos/TagsByDirectoriesResponse"), exports);
@@ -0,0 +1,5 @@
1
+ export declare class CancelFundingReferenceRequest {
2
+ fundingId: string;
3
+ directoryId: string;
4
+ idempotencyKey: string;
5
+ }
@@ -0,0 +1,31 @@
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.CancelFundingReferenceRequest = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ class CancelFundingReferenceRequest {
15
+ }
16
+ exports.CancelFundingReferenceRequest = CancelFundingReferenceRequest;
17
+ __decorate([
18
+ (0, class_validator_1.IsString)(),
19
+ (0, class_validator_1.MaxLength)(64),
20
+ __metadata("design:type", String)
21
+ ], CancelFundingReferenceRequest.prototype, "fundingId", void 0);
22
+ __decorate([
23
+ (0, class_validator_1.IsString)(),
24
+ (0, class_validator_1.MaxLength)(64),
25
+ __metadata("design:type", String)
26
+ ], CancelFundingReferenceRequest.prototype, "directoryId", void 0);
27
+ __decorate([
28
+ (0, class_validator_1.IsString)(),
29
+ (0, class_validator_1.MaxLength)(64),
30
+ __metadata("design:type", String)
31
+ ], CancelFundingReferenceRequest.prototype, "idempotencyKey", void 0);
@@ -0,0 +1,7 @@
1
+ import { BenefitPaymentStatusEnum } from "../../benefitCenter/enums/BenefitPaymentStatusEnum";
2
+ import { WalletFundingErrorCodeEnum } from "../enums/WalletFundingErrorCodeEnum";
3
+ export declare class CancelFundingReferenceResponse {
4
+ fundingId: string;
5
+ status: BenefitPaymentStatusEnum;
6
+ errorCode?: WalletFundingErrorCodeEnum;
7
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CancelFundingReferenceResponse = void 0;
4
+ class CancelFundingReferenceResponse {
5
+ }
6
+ exports.CancelFundingReferenceResponse = CancelFundingReferenceResponse;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Request del cancel via Centro de Beneficios (spec 13 v2.0).
3
+ * `fundingId` viaja en el path, `directoryId` se resuelve del JWT.
4
+ * `providerModuleName` permite al marketplace rutear al publisher correcto
5
+ * sin tener que persistir el mapping (el wallet-app sabe el moduleName
6
+ * porque vino en la respuesta del authorize).
7
+ */
8
+ export declare class CancelFundingRequest {
9
+ idempotencyKey: string;
10
+ providerModuleName: string;
11
+ }
@@ -9,28 +9,25 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ResendOtpRequest = void 0;
13
- const class_transformer_1 = require("class-transformer");
12
+ exports.CancelFundingRequest = void 0;
14
13
  const class_validator_1 = require("class-validator");
15
14
  /**
16
- * Body del POST /auth/resend-otp (público, anónimo). DEC-RBAC-054.
17
- * Reenvía el OTP del login re-disparando el challenge real CUSTOM_AUTH (EMAIL_OTP) para la
18
- * identidad SIN password. `tenantId` obligatorio (DEC-064 el picker ya lo resolvió, NO "solo email").
19
- * El email se normaliza lowercase server-side. Postura anti-enumeración: respuesta 200 genérica
20
- * siempre, sin filtrar existencia (ver AuthLoginManager.resendChallengeOtp).
15
+ * Request del cancel via Centro de Beneficios (spec 13 v2.0).
16
+ * `fundingId` viaja en el path, `directoryId` se resuelve del JWT.
17
+ * `providerModuleName` permite al marketplace rutear al publisher correcto
18
+ * sin tener que persistir el mapping (el wallet-app sabe el moduleName
19
+ * porque vino en la respuesta del authorize).
21
20
  */
22
- class ResendOtpRequest {
21
+ class CancelFundingRequest {
23
22
  }
24
- exports.ResendOtpRequest = ResendOtpRequest;
23
+ exports.CancelFundingRequest = CancelFundingRequest;
25
24
  __decorate([
26
- (0, class_transformer_1.Expose)(),
27
- (0, class_validator_1.IsEmail)(),
28
- (0, class_validator_1.IsNotEmpty)(),
25
+ (0, class_validator_1.IsString)(),
26
+ (0, class_validator_1.MaxLength)(64),
29
27
  __metadata("design:type", String)
30
- ], ResendOtpRequest.prototype, "email", void 0);
28
+ ], CancelFundingRequest.prototype, "idempotencyKey", void 0);
31
29
  __decorate([
32
- (0, class_transformer_1.Expose)(),
33
30
  (0, class_validator_1.IsString)(),
34
- (0, class_validator_1.IsNotEmpty)(),
31
+ (0, class_validator_1.MaxLength)(128),
35
32
  __metadata("design:type", String)
36
- ], ResendOtpRequest.prototype, "tenantId", void 0);
33
+ ], CancelFundingRequest.prototype, "providerModuleName", void 0);
@@ -0,0 +1,14 @@
1
+ import { BenefitPaymentStatusEnum } from "../../benefitCenter/enums/BenefitPaymentStatusEnum";
2
+ import { WalletFundingErrorCodeEnum } from "../enums/WalletFundingErrorCodeEnum";
3
+ /**
4
+ * Response del cancel via Centro de Beneficios (spec 13 v2.0).
5
+ * `status` reusa `BenefitPaymentStatusEnum` (APPROVED = cancel aceptado;
6
+ * REJECTED = no se pudo) para consistencia con `CancelFundingReferenceResponse`
7
+ * (marketplace ↔ connector). Idempotente: re-cancelar devuelve APPROVED.
8
+ */
9
+ export declare class CancelFundingResponse {
10
+ fundingId: string;
11
+ status: BenefitPaymentStatusEnum;
12
+ errorCode?: WalletFundingErrorCodeEnum;
13
+ message?: string;
14
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CancelFundingResponse = void 0;
4
+ /**
5
+ * Response del cancel via Centro de Beneficios (spec 13 v2.0).
6
+ * `status` reusa `BenefitPaymentStatusEnum` (APPROVED = cancel aceptado;
7
+ * REJECTED = no se pudo) para consistencia con `CancelFundingReferenceResponse`
8
+ * (marketplace ↔ connector). Idempotente: re-cancelar devuelve APPROVED.
9
+ */
10
+ class CancelFundingResponse {
11
+ }
12
+ exports.CancelFundingResponse = CancelFundingResponse;
@@ -0,0 +1,3 @@
1
+ export declare class CancelWalletFundingRequest {
2
+ idempotencyKey: string;
3
+ }
@@ -0,0 +1,21 @@
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.CancelWalletFundingRequest = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ class CancelWalletFundingRequest {
15
+ }
16
+ exports.CancelWalletFundingRequest = CancelWalletFundingRequest;
17
+ __decorate([
18
+ (0, class_validator_1.IsString)(),
19
+ (0, class_validator_1.MaxLength)(64),
20
+ __metadata("design:type", String)
21
+ ], CancelWalletFundingRequest.prototype, "idempotencyKey", void 0);
@@ -0,0 +1,7 @@
1
+ import { BenefitPaymentStatusEnum } from "../../benefitCenter/enums/BenefitPaymentStatusEnum";
2
+ import { WalletFundingErrorCodeEnum } from "../enums/WalletFundingErrorCodeEnum";
3
+ export declare class CancelWalletFundingResponse {
4
+ status: BenefitPaymentStatusEnum;
5
+ errorCode?: WalletFundingErrorCodeEnum;
6
+ fundingId?: string;
7
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CancelWalletFundingResponse = void 0;
4
+ class CancelWalletFundingResponse {
5
+ }
6
+ exports.CancelWalletFundingResponse = CancelWalletFundingResponse;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.144.0",
3
+ "version": "3.145.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -0,0 +1,12 @@
1
+ /** Grupo con su # de miembros (relaciones DIRECTORY en GroupDirectoryRelations_GT). */
2
+ export class GroupCountItem {
3
+ id!: string;
4
+ name!: string;
5
+ status!: string;
6
+ memberCount!: number;
7
+ }
8
+
9
+ /** Response de GET groups/counts (privado, fiado-group-business). */
10
+ export class GroupCountsResponse {
11
+ items!: GroupCountItem[];
12
+ }
@@ -16,3 +16,6 @@ export * from './enums/RelationStatus';
16
16
  export * from './enums/GroupAction';
17
17
 
18
18
 
19
+
20
+ //dtos
21
+ export * from './dtos/GroupCountsResponse';
package/src/index.ts CHANGED
@@ -14,6 +14,7 @@ export * as Directory from './directory';
14
14
  export * as ExchangeRate from './exchangeRate';
15
15
  export * as File from './identity';
16
16
  export * as Group from './group';
17
+ export * as UserTags from './userTags';
17
18
  export * as Identity from './provider';
18
19
  export * as Header from './header';
19
20
  export * as ServicePayment from './servicePayment';
@@ -0,0 +1,132 @@
1
+ import { Type } from "class-transformer";
2
+ import {
3
+ IsArray,
4
+ IsEnum,
5
+ IsOptional,
6
+ IsString,
7
+ IsUUID,
8
+ Length,
9
+ ValidateNested,
10
+ } from "class-validator";
11
+ import { SegmentMemberType } from "../enums/SegmentMemberType";
12
+
13
+ /**
14
+ * DTOs de Segmentos (Dashboard Ops · Configuración §2, EP-22..25 + catalog + search).
15
+ *
16
+ * Un segmento es una colección EXPLÍCITA de clientes: referencias a grupos
17
+ * (Group_GT) y tags (UserTags_GT) por id + individuos (override por cliente).
18
+ * Dueño de la tabla: remittance-business (RemittanceSegments_GT).
19
+ *
20
+ * "Clientes" del segmento = intersección con RemittanceUsers_GT (usuarios de
21
+ * remesas que caen en el segmento), NO la membresía Fiado-wide del picker.
22
+ */
23
+
24
+ /** Referencia de composición: un grupo (Group_GT.id) o un tag (UserTags_GT.tag). */
25
+ export class SegmentMember {
26
+ @IsEnum(SegmentMemberType)
27
+ type!: SegmentMemberType;
28
+
29
+ /** Group_GT.id (p. ej. "CELULARES") o el tag (p. ej. "VIPS"). */
30
+ @IsString()
31
+ @Length(1, 100)
32
+ id!: string;
33
+ }
34
+
35
+ /** Individuo agregado explícitamente (la llave es directoryId; peopleId informativo). */
36
+ export class SegmentIndividual {
37
+ @IsUUID("4")
38
+ directoryId!: string;
39
+
40
+ @IsOptional()
41
+ @IsUUID("4")
42
+ peopleId?: string;
43
+
44
+ /** Snapshot de display (se pinta sin lookup). */
45
+ @IsString()
46
+ @Length(1, 200)
47
+ name!: string;
48
+ }
49
+
50
+ /** Body de EP-23 POST /backoffice/config/segments. */
51
+ export class CreateSegmentRequest {
52
+ @IsString()
53
+ @Length(3, 100)
54
+ name!: string;
55
+
56
+ @IsArray()
57
+ @ValidateNested({ each: true })
58
+ @Type(() => SegmentMember)
59
+ members!: SegmentMember[];
60
+
61
+ @IsArray()
62
+ @ValidateNested({ each: true })
63
+ @Type(() => SegmentIndividual)
64
+ individuals!: SegmentIndividual[];
65
+ }
66
+
67
+ /** Body de EP-24 PUT /backoffice/config/segments/{id} (reemplazo completo). */
68
+ export class UpdateSegmentRequest {
69
+ @IsString()
70
+ @Length(3, 100)
71
+ name!: string;
72
+
73
+ @IsArray()
74
+ @ValidateNested({ each: true })
75
+ @Type(() => SegmentMember)
76
+ members!: SegmentMember[];
77
+
78
+ @IsArray()
79
+ @ValidateNested({ each: true })
80
+ @Type(() => SegmentIndividual)
81
+ individuals!: SegmentIndividual[];
82
+ }
83
+
84
+ /** Segmento completo (response). Métricas null = nunca calculadas. */
85
+ export class Segment {
86
+ id!: string;
87
+ name!: string;
88
+ /** true solo en ESTANDAR (catch-all: composición bloqueada, no eliminable). */
89
+ isDefault!: boolean;
90
+ members!: SegmentMember[];
91
+ individuals!: SegmentIndividual[];
92
+ /** # de RemittanceUsers en el segmento (intersección con remesas). */
93
+ clientCount!: number | null;
94
+ /** Σ amountUSD del mes calendario de esos users (sin CANCELLED/REFUND). */
95
+ volMonthUSD!: number | null;
96
+ lastCalculatedAt!: string | null;
97
+ createdAt!: string;
98
+ updatedAt!: string;
99
+ createdBy!: string;
100
+ updatedBy!: string;
101
+ }
102
+
103
+ /** Response de EP-22 GET /backoffice/config/segments. */
104
+ export class SegmentListResponse {
105
+ items!: Segment[];
106
+ }
107
+
108
+ /** Response de POST /backoffice/config/segments/{id}/recalcular. */
109
+ export class RecalculateSegmentResponse {
110
+ id!: string;
111
+ clientCount!: number;
112
+ volMonthUSD!: number;
113
+ lastCalculatedAt!: string;
114
+ }
115
+
116
+ /** Item del picker DISPONIBLES (EP-32 catalog). `count` = membresía Fiado-wide. */
117
+ export class SegmentCatalogItem {
118
+ type!: SegmentMemberType;
119
+ id!: string;
120
+ name!: string;
121
+ count!: number;
122
+ }
123
+
124
+ /** Response de GET /backoffice/config/segments/catalog. */
125
+ export class SegmentCatalogResponse {
126
+ items!: SegmentCatalogItem[];
127
+ }
128
+
129
+ /** Response de GET /backoffice/config/segments/search-individual?q= (cap 20). */
130
+ export class SearchIndividualResponse {
131
+ items!: SegmentIndividual[];
132
+ }
@@ -38,3 +38,4 @@ export * from "./RemittanceUserLimits";
38
38
  export * from "./RemittanceKyc";
39
39
  export * from "./RemittanceCohort";
40
40
  export * from "./RemittanceAuditLog";
41
+ export * from "./RemittanceSegment";
@@ -0,0 +1,22 @@
1
+ import { IsArray, IsUUID } from "class-validator";
2
+
3
+ /**
4
+ * Contrato interno de métricas de un segmento (puente Opción A):
5
+ * remittance-business resuelve la membresía (subconjunto de RemittanceUsers que
6
+ * caen en el segmento) y el uniteller-connector (dueño de las tx) devuelve el
7
+ * conteo validado + volumen del mes. Vía api-invoker →
8
+ * POST /backoffice/config/segments/metrics (privado).
9
+ */
10
+ export class SegmentMetricsRequest {
11
+ /** Subconjunto ya resuelto por rb. `[]` → { clientCount: 0, volMonthUSD: 0 }. */
12
+ @IsArray()
13
+ @IsUUID("4", { each: true })
14
+ directoryIds!: string[];
15
+ }
16
+
17
+ export class SegmentMetricsResponse {
18
+ /** ids del request que SÍ existen en RemittanceUsers_GT. */
19
+ clientCount!: number;
20
+ /** Σ amountUSD del mes calendario corriente (UTC) de esos users, sin CANCELLED/REFUND. */
21
+ volMonthUSD!: number;
22
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Tipo de miembro de la composición de un segmento (Dashboard Ops · Configuración §2).
3
+ * Los valores son los del mockup (pills GRUPO/TAG del dual-list).
4
+ */
5
+ export enum SegmentMemberType {
6
+ GROUP = "group",
7
+ TAG = "tag",
8
+ }
@@ -10,3 +10,4 @@ export * from "./CohortOperator";
10
10
  export * from "./CohortRefresh";
11
11
  export * from "./AuditAction";
12
12
  export * from "./AuditEntityType";
13
+ export * from "./SegmentMemberType";
@@ -5,3 +5,4 @@ export * from "./dtos";
5
5
  export * from "./dtos/internal/RemittanceCreditBackRequest";
6
6
  export * from "./dtos/internal/RemittanceCreditBackResponse";
7
7
  export * from "./dtos/internal/RemittanceCohortCount";
8
+ export * from "./dtos/internal/RemittanceSegmentMetrics";
@@ -0,0 +1,8 @@
1
+ import { IsArray, IsUUID } from "class-validator";
2
+
3
+ /** Request de POST tags/by-directories (privado, onboarding-business). */
4
+ export class TagsByDirectoriesRequest {
5
+ @IsArray()
6
+ @IsUUID("4", { each: true })
7
+ directoryIds!: string[];
8
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tags por usuario para un batch de directoryIds. Ids sin tags → `[]`
3
+ * (siempre presentes en el mapa, para que el consumidor no distinga ausencia).
4
+ */
5
+ export class TagsByDirectoriesResponse {
6
+ tagsByDirectory!: Record<string, string[]>;
7
+ }
@@ -0,0 +1,10 @@
1
+ /** Un tag operativo con su # de asignaciones en UserTags_GT (membresía Fiado-wide). */
2
+ export class TagSummaryItem {
3
+ tag!: string;
4
+ count!: number;
5
+ }
6
+
7
+ /** Response de GET tags/summary (privado, onboarding-business). Orden: count desc. */
8
+ export class TagsSummaryResponse {
9
+ items!: TagSummaryItem[];
10
+ }
@@ -0,0 +1,4 @@
1
+ //dtos
2
+ export * from './dtos/TagsSummaryResponse';
3
+ export * from './dtos/TagsByDirectoriesRequest';
4
+ export * from './dtos/TagsByDirectoriesResponse';
@@ -1,22 +0,0 @@
1
- import { MfaMethodEnum } from '../enums/MfaMethodEnum';
2
- /**
3
- * Body del POST /auth/resend-otp (público, anónimo). DEC-RBAC-054.
4
- * Reenvía el OTP del login re-disparando el challenge real CUSTOM_AUTH (EMAIL_OTP) para la
5
- * identidad SIN password. `tenantId` obligatorio (DEC-064 — el picker ya lo resolvió, NO "solo email").
6
- * El email se normaliza lowercase server-side. Postura anti-enumeración: respuesta 200 genérica
7
- * siempre, sin filtrar existencia (ver AuthLoginManager.resendChallengeOtp).
8
- */
9
- export declare class ResendOtpRequest {
10
- email: string;
11
- tenantId: string;
12
- }
13
- /**
14
- * Respuesta del resend-otp. `session`/`mfaMethod` frescos del nuevo challenge CUSTOM_AUTH.
15
- * Plain sin validators (no validamos lo que mandamos al cliente — fiado-validation-and-dtos § 7).
16
- * Ambos opcionales: en los caminos de rechazo silencioso (anti-enumeración) o ramas sin CUSTOM_AUTH
17
- * el server responde 200 genérico sin session ni método.
18
- */
19
- export interface ResendOtpResponse {
20
- session?: string;
21
- mfaMethod?: MfaMethodEnum;
22
- }
@@ -1,11 +0,0 @@
1
- /**
2
- * Body del POST /self-register/resend-otp (público, anónimo). DEC-RBAC-054.
3
- * Re-envía el OTP del autoregistro (mecanismo messages-business, NO Cognito) tras validar un
4
- * `pending` existente. Misma postura anti-enumeración del start. El email se normaliza lowercase
5
- * server-side. DTO propio por endpoint (NO reusa SelfRegisterStartRequest, que exige roleId/scope/
6
- * scopeRef, ni SelfRegisterVerifyOtpRequest, que exige otp).
7
- */
8
- export declare class ResendSelfRegisterOtpRequest {
9
- tenantId: string;
10
- email: string;
11
- }