@fiado/type-kit 3.86.0 → 3.88.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 (84) hide show
  1. package/bin/index.d.ts +1 -0
  2. package/bin/index.js +4 -1
  3. package/bin/networkConnector/dtos/AssignLeadToGroupRequest.d.ts +3 -0
  4. package/bin/networkConnector/dtos/AssignLeadToGroupRequest.js +22 -0
  5. package/bin/networkConnector/dtos/CreateLeadGroupRequest.d.ts +5 -0
  6. package/bin/networkConnector/dtos/CreateLeadGroupRequest.js +36 -0
  7. package/bin/networkConnector/dtos/CreateProfileRequest.d.ts +12 -0
  8. package/bin/networkConnector/dtos/CreateProfileRequest.js +82 -0
  9. package/bin/networkConnector/dtos/DeletePhotoResponse.d.ts +4 -0
  10. package/bin/networkConnector/dtos/DeletePhotoResponse.js +2 -0
  11. package/bin/networkConnector/dtos/DeleteProfileResponse.d.ts +4 -0
  12. package/bin/networkConnector/dtos/DeleteProfileResponse.js +2 -0
  13. package/bin/networkConnector/dtos/GetPhotoUploadUrlRequest.d.ts +5 -0
  14. package/bin/networkConnector/dtos/GetPhotoUploadUrlRequest.js +29 -0
  15. package/bin/networkConnector/dtos/LeadGroupResponse.d.ts +8 -0
  16. package/bin/networkConnector/dtos/LeadGroupResponse.js +2 -0
  17. package/bin/networkConnector/dtos/LeadResponse.d.ts +16 -0
  18. package/bin/networkConnector/dtos/LeadResponse.js +2 -0
  19. package/bin/networkConnector/dtos/ListLeadGroupsResponse.d.ts +5 -0
  20. package/bin/networkConnector/dtos/ListLeadGroupsResponse.js +2 -0
  21. package/bin/networkConnector/dtos/ListLeadsResponse.d.ts +5 -0
  22. package/bin/networkConnector/dtos/ListLeadsResponse.js +2 -0
  23. package/bin/networkConnector/dtos/ListProfilesResponse.d.ts +5 -0
  24. package/bin/networkConnector/dtos/ListProfilesResponse.js +2 -0
  25. package/bin/networkConnector/dtos/PhotoUploadUrlResponse.d.ts +5 -0
  26. package/bin/networkConnector/dtos/PhotoUploadUrlResponse.js +2 -0
  27. package/bin/networkConnector/dtos/ProfileResponse.d.ts +18 -0
  28. package/bin/networkConnector/dtos/ProfileResponse.js +2 -0
  29. package/bin/networkConnector/dtos/SaveLeadRequest.d.ts +9 -0
  30. package/bin/networkConnector/dtos/SaveLeadRequest.js +57 -0
  31. package/bin/networkConnector/dtos/SaveLeadResponse.d.ts +5 -0
  32. package/bin/networkConnector/dtos/SaveLeadResponse.js +2 -0
  33. package/bin/networkConnector/dtos/UpdateLeadGroupRequest.d.ts +4 -0
  34. package/bin/networkConnector/dtos/UpdateLeadGroupRequest.js +32 -0
  35. package/bin/networkConnector/dtos/UpdateProfileRequest.d.ts +13 -0
  36. package/bin/networkConnector/dtos/UpdateProfileRequest.js +87 -0
  37. package/bin/networkConnector/enums/LeadSourceEnum.d.ts +6 -0
  38. package/bin/networkConnector/enums/LeadSourceEnum.js +10 -0
  39. package/bin/networkConnector/enums/LeadStatusEnum.d.ts +6 -0
  40. package/bin/networkConnector/enums/LeadStatusEnum.js +10 -0
  41. package/bin/networkConnector/enums/PhotoContentType.d.ts +5 -0
  42. package/bin/networkConnector/enums/PhotoContentType.js +9 -0
  43. package/bin/networkConnector/enums/ProfileStatusEnum.d.ts +5 -0
  44. package/bin/networkConnector/enums/ProfileStatusEnum.js +9 -0
  45. package/bin/networkConnector/index.d.ts +21 -0
  46. package/bin/networkConnector/index.js +42 -0
  47. package/bin/platformRbac/dtos/AuthContext.d.ts +3 -3
  48. package/bin/platformRbac/tenantTypes.d.ts +4 -3
  49. package/bin/platformRbac/tenantTypes.js +4 -3
  50. package/bin/transaction/dtos/CreateDisputePrivateRequest.d.ts +19 -0
  51. package/bin/transaction/dtos/CreateDisputePrivateRequest.js +11 -0
  52. package/bin/transaction/dtos/ReopenDisputeRequest.d.ts +8 -0
  53. package/bin/transaction/dtos/ReopenDisputeRequest.js +11 -0
  54. package/bin/transaction/index.d.ts +2 -0
  55. package/bin/transaction/index.js +2 -0
  56. package/package.json +1 -1
  57. package/src/index.ts +3 -0
  58. package/src/networkConnector/dtos/AssignLeadToGroupRequest.ts +6 -0
  59. package/src/networkConnector/dtos/CreateLeadGroupRequest.ts +8 -0
  60. package/src/networkConnector/dtos/CreateProfileRequest.ts +15 -0
  61. package/src/networkConnector/dtos/DeletePhotoResponse.ts +4 -0
  62. package/src/networkConnector/dtos/DeleteProfileResponse.ts +4 -0
  63. package/src/networkConnector/dtos/GetPhotoUploadUrlRequest.ts +8 -0
  64. package/src/networkConnector/dtos/LeadGroupResponse.ts +8 -0
  65. package/src/networkConnector/dtos/LeadResponse.ts +17 -0
  66. package/src/networkConnector/dtos/ListLeadGroupsResponse.ts +6 -0
  67. package/src/networkConnector/dtos/ListLeadsResponse.ts +6 -0
  68. package/src/networkConnector/dtos/ListProfilesResponse.ts +6 -0
  69. package/src/networkConnector/dtos/PhotoUploadUrlResponse.ts +5 -0
  70. package/src/networkConnector/dtos/ProfileResponse.ts +19 -0
  71. package/src/networkConnector/dtos/SaveLeadRequest.ts +12 -0
  72. package/src/networkConnector/dtos/SaveLeadResponse.ts +5 -0
  73. package/src/networkConnector/dtos/UpdateLeadGroupRequest.ts +7 -0
  74. package/src/networkConnector/dtos/UpdateProfileRequest.ts +16 -0
  75. package/src/networkConnector/enums/LeadSourceEnum.ts +6 -0
  76. package/src/networkConnector/enums/LeadStatusEnum.ts +6 -0
  77. package/src/networkConnector/enums/PhotoContentType.ts +5 -0
  78. package/src/networkConnector/enums/ProfileStatusEnum.ts +5 -0
  79. package/src/networkConnector/index.ts +30 -0
  80. package/src/platformRbac/dtos/AuthContext.ts +3 -3
  81. package/src/platformRbac/tenantTypes.ts +4 -3
  82. package/src/transaction/dtos/CreateDisputePrivateRequest.ts +19 -0
  83. package/src/transaction/dtos/ReopenDisputeRequest.ts +8 -0
  84. package/src/transaction/index.ts +2 -0
@@ -0,0 +1,5 @@
1
+ export declare enum ProfileStatusEnum {
2
+ ACTIVE = "ACTIVE",
3
+ INACTIVE = "INACTIVE",
4
+ DRAFT = "DRAFT"
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProfileStatusEnum = void 0;
4
+ var ProfileStatusEnum;
5
+ (function (ProfileStatusEnum) {
6
+ ProfileStatusEnum["ACTIVE"] = "ACTIVE";
7
+ ProfileStatusEnum["INACTIVE"] = "INACTIVE";
8
+ ProfileStatusEnum["DRAFT"] = "DRAFT";
9
+ })(ProfileStatusEnum || (exports.ProfileStatusEnum = ProfileStatusEnum = {}));
@@ -0,0 +1,21 @@
1
+ export * from './enums/ProfileStatusEnum';
2
+ export * from './enums/LeadSourceEnum';
3
+ export * from './enums/LeadStatusEnum';
4
+ export * from './enums/PhotoContentType';
5
+ export * from './dtos/CreateProfileRequest';
6
+ export * from './dtos/UpdateProfileRequest';
7
+ export * from './dtos/ProfileResponse';
8
+ export * from './dtos/ListProfilesResponse';
9
+ export * from './dtos/DeleteProfileResponse';
10
+ export * from './dtos/SaveLeadRequest';
11
+ export * from './dtos/SaveLeadResponse';
12
+ export * from './dtos/LeadResponse';
13
+ export * from './dtos/ListLeadsResponse';
14
+ export * from './dtos/CreateLeadGroupRequest';
15
+ export * from './dtos/UpdateLeadGroupRequest';
16
+ export * from './dtos/AssignLeadToGroupRequest';
17
+ export * from './dtos/LeadGroupResponse';
18
+ export * from './dtos/ListLeadGroupsResponse';
19
+ export * from './dtos/GetPhotoUploadUrlRequest';
20
+ export * from './dtos/PhotoUploadUrlResponse';
21
+ export * from './dtos/DeletePhotoResponse';
@@ -0,0 +1,42 @@
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
+ // Enums
18
+ __exportStar(require("./enums/ProfileStatusEnum"), exports);
19
+ __exportStar(require("./enums/LeadSourceEnum"), exports);
20
+ __exportStar(require("./enums/LeadStatusEnum"), exports);
21
+ __exportStar(require("./enums/PhotoContentType"), exports);
22
+ // Profile DTOs
23
+ __exportStar(require("./dtos/CreateProfileRequest"), exports);
24
+ __exportStar(require("./dtos/UpdateProfileRequest"), exports);
25
+ __exportStar(require("./dtos/ProfileResponse"), exports);
26
+ __exportStar(require("./dtos/ListProfilesResponse"), exports);
27
+ __exportStar(require("./dtos/DeleteProfileResponse"), exports);
28
+ // Lead DTOs
29
+ __exportStar(require("./dtos/SaveLeadRequest"), exports);
30
+ __exportStar(require("./dtos/SaveLeadResponse"), exports);
31
+ __exportStar(require("./dtos/LeadResponse"), exports);
32
+ __exportStar(require("./dtos/ListLeadsResponse"), exports);
33
+ // Lead Group DTOs
34
+ __exportStar(require("./dtos/CreateLeadGroupRequest"), exports);
35
+ __exportStar(require("./dtos/UpdateLeadGroupRequest"), exports);
36
+ __exportStar(require("./dtos/AssignLeadToGroupRequest"), exports);
37
+ __exportStar(require("./dtos/LeadGroupResponse"), exports);
38
+ __exportStar(require("./dtos/ListLeadGroupsResponse"), exports);
39
+ // Photo DTOs
40
+ __exportStar(require("./dtos/GetPhotoUploadUrlRequest"), exports);
41
+ __exportStar(require("./dtos/PhotoUploadUrlResponse"), exports);
42
+ __exportStar(require("./dtos/DeletePhotoResponse"), exports);
@@ -18,10 +18,10 @@ export interface AuthContext {
18
18
  permissions: Permission[];
19
19
  resolvedAt: string;
20
20
  issuer?: string;
21
- /** Bitset base64url de permisos efectivos (token-as-cache). Ausente fallback al resolver/claim. */
21
+ /** @deprecated RBAC Token Flaco (DEC-RBAC-008): el bitset muere; el adapter resuelve permisos frescos desde DDB. Se conserva el campo para compat de tokens viejos en transición. */
22
22
  permBits?: string;
23
- /** Versión del catálogo (PERMS_VERSION) con la que se construyó permBits. */
23
+ /** @deprecated DEC-RBAC-008: versión del catálogo del bitset. No se usa en el modelo token-flaco. */
24
24
  permVer?: number;
25
- /** Epoch de permisos del tenant al momento de emitir el token. */
25
+ /** @deprecated DEC-RBAC-008: epoch de permisos. El authorizer ya no lo chequea. */
26
26
  permsEpoch?: number;
27
27
  }
@@ -18,9 +18,10 @@ export declare const TENANT_TYPES: Record<TenantType, TenantTypeDef>;
18
18
  export declare function levelsOf(type: TenantType): PermissionScope[];
19
19
  export declare function tableSuffixForLevel(type: TenantType, level: PermissionScope): string | undefined;
20
20
  /**
21
- * Orden global de rank de scopes: PLATFORM, TENANT (fijos) + los niveles de cada tipo en orden.
22
- * Las comparaciones de rank nunca cruzan tipos (un actor pertenece a un solo tenant de un solo tipo),
23
- * así que un orden global concatenado es seguro. Sin duplicados.
21
+ * Orden global de scopes para ORDENAR (ej. UI): PLATFORM, TENANT + niveles de cada tipo.
22
+ * ⚠️ NO usar para COBERTURA de autorización: es un orden total que cruzaría ramas
23
+ * (sugeriría falsamente que RETAILER cubre GROUP). La cobertura se decide con una relación
24
+ * explícita por niveles — ver `canAccess`/`scopeCovers` en @fiado/gateway-adapter (DEC-RBAC-010).
24
25
  */
25
26
  export declare function scopeRankOrder(): PermissionScope[];
26
27
  export {};
@@ -37,9 +37,10 @@ function tableSuffixForLevel(type, level) {
37
37
  return exports.TENANT_TYPES[type].tableSuffix[level];
38
38
  }
39
39
  /**
40
- * Orden global de rank de scopes: PLATFORM, TENANT (fijos) + los niveles de cada tipo en orden.
41
- * Las comparaciones de rank nunca cruzan tipos (un actor pertenece a un solo tenant de un solo tipo),
42
- * así que un orden global concatenado es seguro. Sin duplicados.
40
+ * Orden global de scopes para ORDENAR (ej. UI): PLATFORM, TENANT + niveles de cada tipo.
41
+ * ⚠️ NO usar para COBERTURA de autorización: es un orden total que cruzaría ramas
42
+ * (sugeriría falsamente que RETAILER cubre GROUP). La cobertura se decide con una relación
43
+ * explícita por niveles — ver `canAccess`/`scopeCovers` en @fiado/gateway-adapter (DEC-RBAC-010).
43
44
  */
44
45
  function scopeRankOrder() {
45
46
  const order = [PermissionScope_1.PermissionScope.PLATFORM, PermissionScope_1.PermissionScope.TENANT];
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Request de alta multi-canal de reclamación por el OC (BO-R27 Fase A, §3.5).
3
+ * POST disputes — privado (VPC/VPN). Para reclamaciones recibidas por canal no-app
4
+ * (teléfono 202, correo 204, otros 205) que hoy no generan folio y se pierden del R27.
5
+ */
6
+ export declare class CreateDisputePrivateRequest {
7
+ directoryId: string;
8
+ channel: number;
9
+ originatorRole: string;
10
+ originatorUserId: string;
11
+ disputeReason: number;
12
+ disputeObject: number;
13
+ disputeObjectChannel: number;
14
+ amount: number;
15
+ description: string;
16
+ dateOfDisputedTx: string;
17
+ disputedTxNumber?: string;
18
+ clientRequestId: string;
19
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateDisputePrivateRequest = void 0;
4
+ /**
5
+ * Request de alta multi-canal de reclamación por el OC (BO-R27 Fase A, §3.5).
6
+ * POST disputes — privado (VPC/VPN). Para reclamaciones recibidas por canal no-app
7
+ * (teléfono 202, correo 204, otros 205) que hoy no generan folio y se pierden del R27.
8
+ */
9
+ class CreateDisputePrivateRequest {
10
+ }
11
+ exports.CreateDisputePrivateRequest = CreateDisputePrivateRequest;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Request de reapertura de reclamación (BO-R27 Fase A, §3.1).
3
+ * POST disputes/{folioId}/reopen — privado (VPC/VPN). Transición 102 -> 103.
4
+ * La dispara la app móvil del cliente cuando discrepa con un dictamen improcedente.
5
+ */
6
+ export declare class ReopenDisputeRequest {
7
+ reopenReason: string;
8
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReopenDisputeRequest = void 0;
4
+ /**
5
+ * Request de reapertura de reclamación (BO-R27 Fase A, §3.1).
6
+ * POST disputes/{folioId}/reopen — privado (VPC/VPN). Transición 102 -> 103.
7
+ * La dispara la app móvil del cliente cuando discrepa con un dictamen improcedente.
8
+ */
9
+ class ReopenDisputeRequest {
10
+ }
11
+ exports.ReopenDisputeRequest = ReopenDisputeRequest;
@@ -1,6 +1,8 @@
1
1
  export * from './dtos/CounterQueryResponse';
2
2
  export * from './dtos/UpdateR27StatusRequest';
3
3
  export * from './dtos/UpdateR27StatusResponse';
4
+ export * from './dtos/ReopenDisputeRequest';
5
+ export * from './dtos/CreateDisputePrivateRequest';
4
6
  export * from './dtos/TransactionCreateRequest';
5
7
  export * from './dtos/TransactionCreateResponse';
6
8
  export * from './dtos/TransactionGetDetailResponse';
@@ -18,6 +18,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  __exportStar(require("./dtos/CounterQueryResponse"), exports);
19
19
  __exportStar(require("./dtos/UpdateR27StatusRequest"), exports);
20
20
  __exportStar(require("./dtos/UpdateR27StatusResponse"), exports);
21
+ __exportStar(require("./dtos/ReopenDisputeRequest"), exports);
22
+ __exportStar(require("./dtos/CreateDisputePrivateRequest"), exports);
21
23
  __exportStar(require("./dtos/TransactionCreateRequest"), exports);
22
24
  __exportStar(require("./dtos/TransactionCreateResponse"), exports);
23
25
  __exportStar(require("./dtos/TransactionGetDetailResponse"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.86.0",
3
+ "version": "3.88.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
package/src/index.ts CHANGED
@@ -85,5 +85,8 @@ export * as PlatformRbac from './platformRbac';
85
85
  export * as Remittance from './remittance';
86
86
  export * as WalletFunding from './walletFunding';
87
87
  export * as TotpSecurity from './totpSecurity';
88
+ // NetworkConnector: módulo del lambda fiado-network-business (Access Card / Digital Business Card).
89
+ // Contiene DTOs y enums para perfiles, leads, lead groups y fotos.
90
+ export * as NetworkConnector from './networkConnector';
88
91
  export * from './messaging';
89
92
  export * from './complaint';
@@ -0,0 +1,6 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsString } from 'class-validator';
3
+
4
+ export class AssignLeadToGroupRequest {
5
+ @Expose() @IsString() leadId!: string;
6
+ }
@@ -0,0 +1,8 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsString, IsOptional, MaxLength, MinLength } from 'class-validator';
3
+
4
+ export class CreateLeadGroupRequest {
5
+ @Expose() @IsString() @MinLength(1) @MaxLength(100) name!: string;
6
+ @Expose() @IsOptional() @IsString() @MaxLength(500) description?: string;
7
+ @Expose() @IsString() profileId!: string;
8
+ }
@@ -0,0 +1,15 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsString, IsOptional, IsObject, MaxLength, MinLength } from 'class-validator';
3
+
4
+ export class CreateProfileRequest {
5
+ @Expose() @IsString() @MinLength(1) @MaxLength(100) firstName!: string;
6
+ @Expose() @IsString() @MinLength(1) @MaxLength(100) lastName!: string;
7
+ @Expose() @IsString() @MinLength(1) @MaxLength(200) title!: string;
8
+ @Expose() @IsString() @MinLength(1) @MaxLength(200) company!: string;
9
+ @Expose() @IsString() @MinLength(2) @MaxLength(100) slug!: string;
10
+ @Expose() @IsString() directoryId!: string;
11
+ @Expose() @IsOptional() @IsString() phone?: string;
12
+ @Expose() @IsOptional() @IsString() email?: string;
13
+ @Expose() @IsOptional() @IsString() @MaxLength(500) bio?: string;
14
+ @Expose() @IsOptional() @IsObject() socialLinks?: Record<string, string>;
15
+ }
@@ -0,0 +1,4 @@
1
+ export interface DeletePhotoResponse {
2
+ deleted: boolean;
3
+ profileId: string;
4
+ }
@@ -0,0 +1,4 @@
1
+ export interface DeleteProfileResponse {
2
+ deleted: boolean;
3
+ profileId: string;
4
+ }
@@ -0,0 +1,8 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsString, IsOptional, IsEnum } from 'class-validator';
3
+ import { PhotoContentType } from '../enums/PhotoContentType';
4
+
5
+ export class GetPhotoUploadUrlRequest {
6
+ @Expose() @IsString() profileId!: string;
7
+ @Expose() @IsOptional() @IsEnum(PhotoContentType) contentType?: PhotoContentType;
8
+ }
@@ -0,0 +1,8 @@
1
+ export interface LeadGroupResponse {
2
+ id: string;
3
+ profileId: string;
4
+ name: string;
5
+ description?: string;
6
+ createdAt: number;
7
+ updatedAt: number;
8
+ }
@@ -0,0 +1,17 @@
1
+ import { LeadSourceEnum } from '../enums/LeadSourceEnum';
2
+ import { LeadStatusEnum } from '../enums/LeadStatusEnum';
3
+
4
+ export interface LeadResponse {
5
+ id: string;
6
+ profileId: string;
7
+ name: string;
8
+ email?: string;
9
+ phone?: string;
10
+ company?: string;
11
+ notes?: string;
12
+ source: LeadSourceEnum;
13
+ status: LeadStatusEnum;
14
+ groupId?: string;
15
+ createdAt: number;
16
+ updatedAt: number;
17
+ }
@@ -0,0 +1,6 @@
1
+ import { LeadGroupResponse } from './LeadGroupResponse';
2
+
3
+ export interface ListLeadGroupsResponse {
4
+ groups: LeadGroupResponse[];
5
+ total: number;
6
+ }
@@ -0,0 +1,6 @@
1
+ import { LeadResponse } from './LeadResponse';
2
+
3
+ export interface ListLeadsResponse {
4
+ leads: LeadResponse[];
5
+ total: number;
6
+ }
@@ -0,0 +1,6 @@
1
+ import { ProfileResponse } from './ProfileResponse';
2
+
3
+ export interface ListProfilesResponse {
4
+ profiles: ProfileResponse[];
5
+ total: number;
6
+ }
@@ -0,0 +1,5 @@
1
+ export interface PhotoUploadUrlResponse {
2
+ uploadUrl: string;
3
+ photoUrl: string;
4
+ expiresIn: number;
5
+ }
@@ -0,0 +1,19 @@
1
+ import { ProfileStatusEnum } from '../enums/ProfileStatusEnum';
2
+
3
+ export interface ProfileResponse {
4
+ id: string;
5
+ slug: string;
6
+ firstName: string;
7
+ lastName: string;
8
+ title: string;
9
+ company: string;
10
+ phone?: string;
11
+ email?: string;
12
+ photoUrl?: string;
13
+ bio?: string;
14
+ socialLinks?: Record<string, string>;
15
+ status: ProfileStatusEnum;
16
+ directoryId: string;
17
+ createdAt: number;
18
+ updatedAt: number;
19
+ }
@@ -0,0 +1,12 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsString, IsOptional, IsEnum, IsEmail, MaxLength, MinLength } from 'class-validator';
3
+ import { LeadSourceEnum } from '../enums/LeadSourceEnum';
4
+
5
+ export class SaveLeadRequest {
6
+ @Expose() @IsString() @MinLength(1) @MaxLength(200) name!: string;
7
+ @Expose() @IsOptional() @IsEmail() email?: string;
8
+ @Expose() @IsOptional() @IsString() phone?: string;
9
+ @Expose() @IsOptional() @IsString() @MaxLength(200) company?: string;
10
+ @Expose() @IsOptional() @IsString() @MaxLength(500) notes?: string;
11
+ @Expose() @IsOptional() @IsEnum(LeadSourceEnum) source?: LeadSourceEnum;
12
+ }
@@ -0,0 +1,5 @@
1
+ export interface SaveLeadResponse {
2
+ leadId: string;
3
+ profileId: string;
4
+ createdAt: number;
5
+ }
@@ -0,0 +1,7 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsString, IsOptional, MaxLength, MinLength } from 'class-validator';
3
+
4
+ export class UpdateLeadGroupRequest {
5
+ @Expose() @IsOptional() @IsString() @MinLength(1) @MaxLength(100) name?: string;
6
+ @Expose() @IsOptional() @IsString() @MaxLength(500) description?: string;
7
+ }
@@ -0,0 +1,16 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsString, IsOptional, IsEnum, IsObject, MaxLength, MinLength } from 'class-validator';
3
+ import { ProfileStatusEnum } from '../enums/ProfileStatusEnum';
4
+
5
+ export class UpdateProfileRequest {
6
+ @Expose() @IsOptional() @IsString() @MinLength(1) @MaxLength(100) firstName?: string;
7
+ @Expose() @IsOptional() @IsString() @MinLength(1) @MaxLength(100) lastName?: string;
8
+ @Expose() @IsOptional() @IsString() @MaxLength(200) title?: string;
9
+ @Expose() @IsOptional() @IsString() @MaxLength(200) company?: string;
10
+ @Expose() @IsOptional() @IsString() @MinLength(2) @MaxLength(100) slug?: string;
11
+ @Expose() @IsOptional() @IsString() phone?: string;
12
+ @Expose() @IsOptional() @IsString() email?: string;
13
+ @Expose() @IsOptional() @IsString() @MaxLength(500) bio?: string;
14
+ @Expose() @IsOptional() @IsObject() socialLinks?: Record<string, string>;
15
+ @Expose() @IsOptional() @IsEnum(ProfileStatusEnum) status?: ProfileStatusEnum;
16
+ }
@@ -0,0 +1,6 @@
1
+ export enum LeadSourceEnum {
2
+ QR_SCAN = 'QR_SCAN',
3
+ DIRECT_LINK = 'DIRECT_LINK',
4
+ SHARED_CONTACT = 'SHARED_CONTACT',
5
+ WALLET_PASS = 'WALLET_PASS',
6
+ }
@@ -0,0 +1,6 @@
1
+ export enum LeadStatusEnum {
2
+ NEW = 'NEW',
3
+ CONTACTED = 'CONTACTED',
4
+ CONVERTED = 'CONVERTED',
5
+ ARCHIVED = 'ARCHIVED',
6
+ }
@@ -0,0 +1,5 @@
1
+ export enum PhotoContentType {
2
+ JPEG = 'image/jpeg',
3
+ PNG = 'image/png',
4
+ WEBP = 'image/webp',
5
+ }
@@ -0,0 +1,5 @@
1
+ export enum ProfileStatusEnum {
2
+ ACTIVE = 'ACTIVE',
3
+ INACTIVE = 'INACTIVE',
4
+ DRAFT = 'DRAFT',
5
+ }
@@ -0,0 +1,30 @@
1
+ // Enums
2
+ export * from './enums/ProfileStatusEnum';
3
+ export * from './enums/LeadSourceEnum';
4
+ export * from './enums/LeadStatusEnum';
5
+ export * from './enums/PhotoContentType';
6
+
7
+ // Profile DTOs
8
+ export * from './dtos/CreateProfileRequest';
9
+ export * from './dtos/UpdateProfileRequest';
10
+ export * from './dtos/ProfileResponse';
11
+ export * from './dtos/ListProfilesResponse';
12
+ export * from './dtos/DeleteProfileResponse';
13
+
14
+ // Lead DTOs
15
+ export * from './dtos/SaveLeadRequest';
16
+ export * from './dtos/SaveLeadResponse';
17
+ export * from './dtos/LeadResponse';
18
+ export * from './dtos/ListLeadsResponse';
19
+
20
+ // Lead Group DTOs
21
+ export * from './dtos/CreateLeadGroupRequest';
22
+ export * from './dtos/UpdateLeadGroupRequest';
23
+ export * from './dtos/AssignLeadToGroupRequest';
24
+ export * from './dtos/LeadGroupResponse';
25
+ export * from './dtos/ListLeadGroupsResponse';
26
+
27
+ // Photo DTOs
28
+ export * from './dtos/GetPhotoUploadUrlRequest';
29
+ export * from './dtos/PhotoUploadUrlResponse';
30
+ export * from './dtos/DeletePhotoResponse';
@@ -19,10 +19,10 @@ export interface AuthContext {
19
19
  permissions: Permission[];
20
20
  resolvedAt: string;
21
21
  issuer?: string;
22
- /** Bitset base64url de permisos efectivos (token-as-cache). Ausente fallback al resolver/claim. */
22
+ /** @deprecated RBAC Token Flaco (DEC-RBAC-008): el bitset muere; el adapter resuelve permisos frescos desde DDB. Se conserva el campo para compat de tokens viejos en transición. */
23
23
  permBits?: string;
24
- /** Versión del catálogo (PERMS_VERSION) con la que se construyó permBits. */
24
+ /** @deprecated DEC-RBAC-008: versión del catálogo del bitset. No se usa en el modelo token-flaco. */
25
25
  permVer?: number;
26
- /** Epoch de permisos del tenant al momento de emitir el token. */
26
+ /** @deprecated DEC-RBAC-008: epoch de permisos. El authorizer ya no lo chequea. */
27
27
  permsEpoch?: number;
28
28
  }
@@ -43,9 +43,10 @@ export function tableSuffixForLevel(type: TenantType, level: PermissionScope): s
43
43
  }
44
44
 
45
45
  /**
46
- * Orden global de rank de scopes: PLATFORM, TENANT (fijos) + los niveles de cada tipo en orden.
47
- * Las comparaciones de rank nunca cruzan tipos (un actor pertenece a un solo tenant de un solo tipo),
48
- * así que un orden global concatenado es seguro. Sin duplicados.
46
+ * Orden global de scopes para ORDENAR (ej. UI): PLATFORM, TENANT + niveles de cada tipo.
47
+ * ⚠️ NO usar para COBERTURA de autorización: es un orden total que cruzaría ramas
48
+ * (sugeriría falsamente que RETAILER cubre GROUP). La cobertura se decide con una relación
49
+ * explícita por niveles — ver `canAccess`/`scopeCovers` en @fiado/gateway-adapter (DEC-RBAC-010).
49
50
  */
50
51
  export function scopeRankOrder(): PermissionScope[] {
51
52
  const order: PermissionScope[] = [PermissionScope.PLATFORM, PermissionScope.TENANT];
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Request de alta multi-canal de reclamación por el OC (BO-R27 Fase A, §3.5).
3
+ * POST disputes — privado (VPC/VPN). Para reclamaciones recibidas por canal no-app
4
+ * (teléfono 202, correo 204, otros 205) que hoy no generan folio y se pierden del R27.
5
+ */
6
+ export class CreateDisputePrivateRequest {
7
+ directoryId: string; // uuid cliente, requerido
8
+ channel: number; // 202|204|205 (206 sólo si el OC captura lo dictado por la app)
9
+ originatorRole: string; // "OC"
10
+ originatorUserId: string; // email del OC
11
+ disputeReason: number; // catálogo R27
12
+ disputeObject: number; // catálogo R27
13
+ disputeObjectChannel: number; // catálogo R27
14
+ amount: number; // > 0
15
+ description: string; // 20-2000 chars
16
+ dateOfDisputedTx: string; // ISO, no futura
17
+ disputedTxNumber?: string; // opcional
18
+ clientRequestId: string; // uuid-v4 del Dashboard, idempotencia
19
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Request de reapertura de reclamación (BO-R27 Fase A, §3.1).
3
+ * POST disputes/{folioId}/reopen — privado (VPC/VPN). Transición 102 -> 103.
4
+ * La dispara la app móvil del cliente cuando discrepa con un dictamen improcedente.
5
+ */
6
+ export class ReopenDisputeRequest {
7
+ reopenReason: string; // requerido, max 500 chars
8
+ }
@@ -2,6 +2,8 @@
2
2
  export * from './dtos/CounterQueryResponse';
3
3
  export * from './dtos/UpdateR27StatusRequest';
4
4
  export * from './dtos/UpdateR27StatusResponse';
5
+ export * from './dtos/ReopenDisputeRequest';
6
+ export * from './dtos/CreateDisputePrivateRequest';
5
7
  export * from './dtos/TransactionCreateRequest';
6
8
  export * from './dtos/TransactionCreateResponse';
7
9
  export * from './dtos/TransactionGetDetailResponse';