@fiado/type-kit 3.434.0 → 3.435.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/_test_/unit/messagesConnector/messageLogListContract.test.ts +106 -0
- package/bin/messagesConnector/constants/MessageLogListLimits.d.ts +8 -0
- package/bin/messagesConnector/constants/MessageLogListLimits.js +11 -0
- package/bin/messagesConnector/dtos/MessageLogItem.d.ts +17 -0
- package/bin/messagesConnector/dtos/MessageLogItem.js +7 -0
- package/bin/messagesConnector/dtos/MessageLogListRequest.d.ts +11 -0
- package/bin/messagesConnector/dtos/MessageLogListRequest.js +50 -0
- package/bin/messagesConnector/dtos/MessageLogListResponse.d.ts +6 -0
- package/bin/messagesConnector/dtos/MessageLogListResponse.js +7 -0
- package/bin/messagesConnector/enums/MessageLogStatusEnum.d.ts +9 -0
- package/bin/messagesConnector/enums/MessageLogStatusEnum.js +13 -0
- package/bin/messagesConnector/index.d.ts +5 -0
- package/bin/messagesConnector/index.js +5 -0
- package/package.json +1 -1
- package/src/messagesConnector/constants/MessageLogListLimits.ts +11 -0
- package/src/messagesConnector/dtos/MessageLogItem.ts +18 -0
- package/src/messagesConnector/dtos/MessageLogListRequest.ts +15 -0
- package/src/messagesConnector/dtos/MessageLogListResponse.ts +7 -0
- package/src/messagesConnector/enums/MessageLogStatusEnum.ts +9 -0
- package/src/messagesConnector/index.ts +5 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { plainToInstance } from 'class-transformer';
|
|
3
|
+
import { validate, ValidationError } from 'class-validator';
|
|
4
|
+
import * as MessagesConnectorBarrel from '../../../src/messagesConnector/index';
|
|
5
|
+
import { MessageLogListRequest } from '../../../src/messagesConnector/dtos/MessageLogListRequest';
|
|
6
|
+
import { MessageLogListResponse } from '../../../src/messagesConnector/dtos/MessageLogListResponse';
|
|
7
|
+
import { MessageLogItem } from '../../../src/messagesConnector/dtos/MessageLogItem';
|
|
8
|
+
import { MessageLogStatusEnum } from '../../../src/messagesConnector/enums/MessageLogStatusEnum';
|
|
9
|
+
import { DeliveryChannelExtendedEnum } from '../../../src/messagesConnector/enums/DeliveryChannelExtendedEnum';
|
|
10
|
+
import {
|
|
11
|
+
MESSAGE_LOG_MAX_WINDOW_DAYS,
|
|
12
|
+
MESSAGE_LOG_NEXT_TOKEN_MAX_LENGTH,
|
|
13
|
+
MESSAGE_LOG_PAGE_SIZE,
|
|
14
|
+
} from '../../../src/messagesConnector/constants/MessageLogListLimits';
|
|
15
|
+
|
|
16
|
+
const validQuery = {
|
|
17
|
+
tenantId: 'SUREKEEP',
|
|
18
|
+
directoryId: '01M0B5D7FQA3T06K4REEVPRM33',
|
|
19
|
+
from: '2026-09-01T00:00:00.000Z',
|
|
20
|
+
to: '2026-09-15T23:59:59.999Z',
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const validateQuery = async (payload: Record<string, unknown>): Promise<ValidationError[]> =>
|
|
24
|
+
validate(plainToInstance(MessageLogListRequest, { ...validQuery, ...payload }), { whitelist: true });
|
|
25
|
+
|
|
26
|
+
const hasError = (errors: ValidationError[], property: string): boolean =>
|
|
27
|
+
errors.some((error) => error.property === property);
|
|
28
|
+
|
|
29
|
+
describe('MessageLogListRequest', () => {
|
|
30
|
+
it('acepta la primera página sin nextToken', async () => {
|
|
31
|
+
expect(await validateQuery({})).toEqual([]);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it('acepta el nextToken de la página anterior', async () => {
|
|
35
|
+
expect(await validateQuery({ nextToken: 'eyJpZCI6ImEifQ' })).toEqual([]);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it.each(['tenantId', 'directoryId', 'from', 'to'])('rechaza el query sin %s', async (property) => {
|
|
39
|
+
expect(hasError(await validateQuery({ [property]: undefined }), property)).toBe(true);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it.each(['tenantId', 'directoryId'])('rechaza %s vacío', async (property) => {
|
|
43
|
+
expect(hasError(await validateQuery({ [property]: '' }), property)).toBe(true);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it('rechaza un from que no es ISO 8601', async () => {
|
|
47
|
+
expect(hasError(await validateQuery({ from: '15/09/2026' }), 'from')).toBe(true);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it.each(['2026-W37-2', '2026-258', '2026-09-15'])('rechaza %s: la ventana lleva fecha de calendario y hora', async (from) => {
|
|
51
|
+
expect(hasError(await validateQuery({ from }), 'from')).toBe(true);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it('acepta la hora con offset', async () => {
|
|
55
|
+
expect(await validateQuery({ to: '2026-09-15T18:00:00-06:00' })).toEqual([]);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it('rechaza un to que no es ISO 8601', async () => {
|
|
59
|
+
expect(hasError(await validateQuery({ to: 'ayer' }), 'to')).toBe(true);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it('rechaza un nextToken por encima del largo máximo', async () => {
|
|
63
|
+
const nextToken = 'a'.repeat(MESSAGE_LOG_NEXT_TOKEN_MAX_LENGTH + 1);
|
|
64
|
+
|
|
65
|
+
expect(hasError(await validateQuery({ nextToken }), 'nextToken')).toBe(true);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
describe('MessageLogListResponse', () => {
|
|
70
|
+
it('el item no expone destination, variables ni otpCode', () => {
|
|
71
|
+
const item: MessageLogItem = {
|
|
72
|
+
id: 'b3c1f0a2-0000-4000-8000-000000000001',
|
|
73
|
+
channelType: DeliveryChannelExtendedEnum.SMS,
|
|
74
|
+
messageType: 'PAYMENT_REMINDER',
|
|
75
|
+
templatePk: 'SUREKEEP#PAYMENT_REMINDER#SMS#es#MX',
|
|
76
|
+
referenceMessageId: 'credit#01M0B5D7FQA3T06K4REEVPRM33#PM-003',
|
|
77
|
+
status: MessageLogStatusEnum.COMPLETED,
|
|
78
|
+
renderedMessage: 'Tu pago vence mañana.',
|
|
79
|
+
failureCode: null,
|
|
80
|
+
createdAt: '2026-09-14T15:00:00.000Z',
|
|
81
|
+
};
|
|
82
|
+
const response: MessageLogListResponse = { items: [item], nextToken: null };
|
|
83
|
+
|
|
84
|
+
expect(Object.keys(response.items[0]).sort()).toEqual([
|
|
85
|
+
'channelType', 'createdAt', 'failureCode', 'id', 'messageType',
|
|
86
|
+
'referenceMessageId', 'renderedMessage', 'status', 'templatePk',
|
|
87
|
+
]);
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
it('el enum de estado trae los estados que escribe messages-business', () => {
|
|
91
|
+
expect(Object.values(MessageLogStatusEnum).sort()).toEqual(
|
|
92
|
+
['CANCEL', 'COMPLETED', 'CREATED', 'PENDING', 'REJECTED', 'VALIDATED'],
|
|
93
|
+
);
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
it('los límites del listado son positivos', () => {
|
|
97
|
+
expect(MESSAGE_LOG_PAGE_SIZE).toBeGreaterThan(0);
|
|
98
|
+
expect(MESSAGE_LOG_MAX_WINDOW_DAYS).toBeGreaterThan(0);
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
it('el barrel exporta el contrato', () => {
|
|
102
|
+
expect(MessagesConnectorBarrel.MessageLogListRequest).toBe(MessageLogListRequest);
|
|
103
|
+
expect(MessagesConnectorBarrel.MessageLogStatusEnum).toBe(MessageLogStatusEnum);
|
|
104
|
+
expect(MessagesConnectorBarrel.MESSAGE_LOG_PAGE_SIZE).toBe(MESSAGE_LOG_PAGE_SIZE);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Mensajes evaluados por página de la lectura privada de mensajes. */
|
|
2
|
+
export declare const MESSAGE_LOG_PAGE_SIZE = 50;
|
|
3
|
+
/** Ventana máxima entre `from` y `to`; más amplia se rechaza con 400. */
|
|
4
|
+
export declare const MESSAGE_LOG_MAX_WINDOW_DAYS = 366;
|
|
5
|
+
/** Largo máximo del `nextToken` opaco que devuelve la página anterior. */
|
|
6
|
+
export declare const MESSAGE_LOG_NEXT_TOKEN_MAX_LENGTH = 1024;
|
|
7
|
+
/** Fecha de calendario con hora: ISO 8601 también admite semanas y ordinales que `Date.parse` no lee. */
|
|
8
|
+
export declare const MESSAGE_LOG_DATE_TIME_PATTERN: RegExp;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MESSAGE_LOG_DATE_TIME_PATTERN = exports.MESSAGE_LOG_NEXT_TOKEN_MAX_LENGTH = exports.MESSAGE_LOG_MAX_WINDOW_DAYS = exports.MESSAGE_LOG_PAGE_SIZE = void 0;
|
|
4
|
+
/** Mensajes evaluados por página de la lectura privada de mensajes. */
|
|
5
|
+
exports.MESSAGE_LOG_PAGE_SIZE = 50;
|
|
6
|
+
/** Ventana máxima entre `from` y `to`; más amplia se rechaza con 400. */
|
|
7
|
+
exports.MESSAGE_LOG_MAX_WINDOW_DAYS = 366;
|
|
8
|
+
/** Largo máximo del `nextToken` opaco que devuelve la página anterior. */
|
|
9
|
+
exports.MESSAGE_LOG_NEXT_TOKEN_MAX_LENGTH = 1024;
|
|
10
|
+
/** Fecha de calendario con hora: ISO 8601 también admite semanas y ordinales que `Date.parse` no lee. */
|
|
11
|
+
exports.MESSAGE_LOG_DATE_TIME_PATTERN = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DeliveryChannelExtendedEnum } from '../enums/DeliveryChannelExtendedEnum';
|
|
2
|
+
import { MessageLogStatusEnum } from '../enums/MessageLogStatusEnum';
|
|
3
|
+
/** Un mensaje enviado, sin datos personales: ni destino, ni variables, ni código OTP. */
|
|
4
|
+
export declare class MessageLogItem {
|
|
5
|
+
id: string;
|
|
6
|
+
channelType: DeliveryChannelExtendedEnum;
|
|
7
|
+
/** Momento del catálogo o tipo de aviso MDM; cada canal trae el suyo. */
|
|
8
|
+
messageType: string;
|
|
9
|
+
templatePk: string;
|
|
10
|
+
referenceMessageId: string | null;
|
|
11
|
+
status: MessageLogStatusEnum;
|
|
12
|
+
/** Texto que recibió el destinatario. */
|
|
13
|
+
renderedMessage: string | null;
|
|
14
|
+
failureCode: string | null;
|
|
15
|
+
/** ISO 8601. */
|
|
16
|
+
createdAt: string;
|
|
17
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MessageLogItem = void 0;
|
|
4
|
+
/** Un mensaje enviado, sin datos personales: ni destino, ni variables, ni código OTP. */
|
|
5
|
+
class MessageLogItem {
|
|
6
|
+
}
|
|
7
|
+
exports.MessageLogItem = MessageLogItem;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Query string de la lectura privada de mensajes de un destinatario en una ventana. */
|
|
2
|
+
export declare class MessageLogListRequest {
|
|
3
|
+
tenantId: string;
|
|
4
|
+
directoryId: string;
|
|
5
|
+
/** Inicio de la ventana sobre `createdAt`, ISO 8601 con hora, inclusivo. */
|
|
6
|
+
from: string;
|
|
7
|
+
/** Fin de la ventana sobre `createdAt`, ISO 8601 con hora, inclusivo. */
|
|
8
|
+
to: string;
|
|
9
|
+
/** Token opaco de la página anterior. */
|
|
10
|
+
nextToken?: string;
|
|
11
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
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.MessageLogListRequest = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
const MessageLogListLimits_1 = require("../constants/MessageLogListLimits");
|
|
16
|
+
/** Query string de la lectura privada de mensajes de un destinatario en una ventana. */
|
|
17
|
+
class MessageLogListRequest {
|
|
18
|
+
}
|
|
19
|
+
exports.MessageLogListRequest = MessageLogListRequest;
|
|
20
|
+
__decorate([
|
|
21
|
+
(0, class_transformer_1.Expose)(),
|
|
22
|
+
(0, class_validator_1.IsString)(),
|
|
23
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
24
|
+
__metadata("design:type", String)
|
|
25
|
+
], MessageLogListRequest.prototype, "tenantId", void 0);
|
|
26
|
+
__decorate([
|
|
27
|
+
(0, class_transformer_1.Expose)(),
|
|
28
|
+
(0, class_validator_1.IsString)(),
|
|
29
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
30
|
+
__metadata("design:type", String)
|
|
31
|
+
], MessageLogListRequest.prototype, "directoryId", void 0);
|
|
32
|
+
__decorate([
|
|
33
|
+
(0, class_transformer_1.Expose)(),
|
|
34
|
+
(0, class_validator_1.IsISO8601)({ strict: true }),
|
|
35
|
+
(0, class_validator_1.Matches)(MessageLogListLimits_1.MESSAGE_LOG_DATE_TIME_PATTERN),
|
|
36
|
+
__metadata("design:type", String)
|
|
37
|
+
], MessageLogListRequest.prototype, "from", void 0);
|
|
38
|
+
__decorate([
|
|
39
|
+
(0, class_transformer_1.Expose)(),
|
|
40
|
+
(0, class_validator_1.IsISO8601)({ strict: true }),
|
|
41
|
+
(0, class_validator_1.Matches)(MessageLogListLimits_1.MESSAGE_LOG_DATE_TIME_PATTERN),
|
|
42
|
+
__metadata("design:type", String)
|
|
43
|
+
], MessageLogListRequest.prototype, "to", void 0);
|
|
44
|
+
__decorate([
|
|
45
|
+
(0, class_transformer_1.Expose)(),
|
|
46
|
+
(0, class_validator_1.IsOptional)(),
|
|
47
|
+
(0, class_validator_1.IsString)(),
|
|
48
|
+
(0, class_validator_1.MaxLength)(MessageLogListLimits_1.MESSAGE_LOG_NEXT_TOKEN_MAX_LENGTH),
|
|
49
|
+
__metadata("design:type", String)
|
|
50
|
+
], MessageLogListRequest.prototype, "nextToken", void 0);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MessageLogListResponse = void 0;
|
|
4
|
+
/** Página de mensajes, del más nuevo al más viejo. `nextToken` en null: no hay más. */
|
|
5
|
+
class MessageLogListResponse {
|
|
6
|
+
}
|
|
7
|
+
exports.MessageLogListResponse = MessageLogListResponse;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Estado de un mensaje en `MessageLogs_GT`, tal como lo escribe messages-business. */
|
|
2
|
+
export declare enum MessageLogStatusEnum {
|
|
3
|
+
CREATED = "CREATED",
|
|
4
|
+
VALIDATED = "VALIDATED",
|
|
5
|
+
COMPLETED = "COMPLETED",
|
|
6
|
+
REJECTED = "REJECTED",
|
|
7
|
+
PENDING = "PENDING",
|
|
8
|
+
CANCEL = "CANCEL"
|
|
9
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MessageLogStatusEnum = void 0;
|
|
4
|
+
/** Estado de un mensaje en `MessageLogs_GT`, tal como lo escribe messages-business. */
|
|
5
|
+
var MessageLogStatusEnum;
|
|
6
|
+
(function (MessageLogStatusEnum) {
|
|
7
|
+
MessageLogStatusEnum["CREATED"] = "CREATED";
|
|
8
|
+
MessageLogStatusEnum["VALIDATED"] = "VALIDATED";
|
|
9
|
+
MessageLogStatusEnum["COMPLETED"] = "COMPLETED";
|
|
10
|
+
MessageLogStatusEnum["REJECTED"] = "REJECTED";
|
|
11
|
+
MessageLogStatusEnum["PENDING"] = "PENDING";
|
|
12
|
+
MessageLogStatusEnum["CANCEL"] = "CANCEL";
|
|
13
|
+
})(MessageLogStatusEnum || (exports.MessageLogStatusEnum = MessageLogStatusEnum = {}));
|
|
@@ -28,3 +28,8 @@ export * from './dtos/MdmNotifyQueueMessageRequest';
|
|
|
28
28
|
export * from './dtos/MdmNotifyResponse';
|
|
29
29
|
export * from './dtos/MdmNotifyBatchResponse';
|
|
30
30
|
export * from './constants/MessageIdempotencyLimits';
|
|
31
|
+
export * from './constants/MessageLogListLimits';
|
|
32
|
+
export * from './enums/MessageLogStatusEnum';
|
|
33
|
+
export * from './dtos/MessageLogListRequest';
|
|
34
|
+
export * from './dtos/MessageLogItem';
|
|
35
|
+
export * from './dtos/MessageLogListResponse';
|
|
@@ -44,3 +44,8 @@ __exportStar(require("./dtos/MdmNotifyQueueMessageRequest"), exports);
|
|
|
44
44
|
__exportStar(require("./dtos/MdmNotifyResponse"), exports);
|
|
45
45
|
__exportStar(require("./dtos/MdmNotifyBatchResponse"), exports);
|
|
46
46
|
__exportStar(require("./constants/MessageIdempotencyLimits"), exports);
|
|
47
|
+
__exportStar(require("./constants/MessageLogListLimits"), exports);
|
|
48
|
+
__exportStar(require("./enums/MessageLogStatusEnum"), exports);
|
|
49
|
+
__exportStar(require("./dtos/MessageLogListRequest"), exports);
|
|
50
|
+
__exportStar(require("./dtos/MessageLogItem"), exports);
|
|
51
|
+
__exportStar(require("./dtos/MessageLogListResponse"), exports);
|
package/package.json
CHANGED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Mensajes evaluados por página de la lectura privada de mensajes. */
|
|
2
|
+
export const MESSAGE_LOG_PAGE_SIZE = 50;
|
|
3
|
+
|
|
4
|
+
/** Ventana máxima entre `from` y `to`; más amplia se rechaza con 400. */
|
|
5
|
+
export const MESSAGE_LOG_MAX_WINDOW_DAYS = 366;
|
|
6
|
+
|
|
7
|
+
/** Largo máximo del `nextToken` opaco que devuelve la página anterior. */
|
|
8
|
+
export const MESSAGE_LOG_NEXT_TOKEN_MAX_LENGTH = 1024;
|
|
9
|
+
|
|
10
|
+
/** Fecha de calendario con hora: ISO 8601 también admite semanas y ordinales que `Date.parse` no lee. */
|
|
11
|
+
export const MESSAGE_LOG_DATE_TIME_PATTERN = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DeliveryChannelExtendedEnum } from '../enums/DeliveryChannelExtendedEnum';
|
|
2
|
+
import { MessageLogStatusEnum } from '../enums/MessageLogStatusEnum';
|
|
3
|
+
|
|
4
|
+
/** Un mensaje enviado, sin datos personales: ni destino, ni variables, ni código OTP. */
|
|
5
|
+
export class MessageLogItem {
|
|
6
|
+
id!: string;
|
|
7
|
+
channelType!: DeliveryChannelExtendedEnum;
|
|
8
|
+
/** Momento del catálogo o tipo de aviso MDM; cada canal trae el suyo. */
|
|
9
|
+
messageType!: string;
|
|
10
|
+
templatePk!: string;
|
|
11
|
+
referenceMessageId!: string | null;
|
|
12
|
+
status!: MessageLogStatusEnum;
|
|
13
|
+
/** Texto que recibió el destinatario. */
|
|
14
|
+
renderedMessage!: string | null;
|
|
15
|
+
failureCode!: string | null;
|
|
16
|
+
/** ISO 8601. */
|
|
17
|
+
createdAt!: string;
|
|
18
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsISO8601, IsNotEmpty, IsOptional, IsString, Matches, MaxLength } from 'class-validator';
|
|
3
|
+
import { MESSAGE_LOG_DATE_TIME_PATTERN, MESSAGE_LOG_NEXT_TOKEN_MAX_LENGTH } from '../constants/MessageLogListLimits';
|
|
4
|
+
|
|
5
|
+
/** Query string de la lectura privada de mensajes de un destinatario en una ventana. */
|
|
6
|
+
export class MessageLogListRequest {
|
|
7
|
+
@Expose() @IsString() @IsNotEmpty() tenantId!: string;
|
|
8
|
+
@Expose() @IsString() @IsNotEmpty() directoryId!: string;
|
|
9
|
+
/** Inicio de la ventana sobre `createdAt`, ISO 8601 con hora, inclusivo. */
|
|
10
|
+
@Expose() @IsISO8601({ strict: true }) @Matches(MESSAGE_LOG_DATE_TIME_PATTERN) from!: string;
|
|
11
|
+
/** Fin de la ventana sobre `createdAt`, ISO 8601 con hora, inclusivo. */
|
|
12
|
+
@Expose() @IsISO8601({ strict: true }) @Matches(MESSAGE_LOG_DATE_TIME_PATTERN) to!: string;
|
|
13
|
+
/** Token opaco de la página anterior. */
|
|
14
|
+
@Expose() @IsOptional() @IsString() @MaxLength(MESSAGE_LOG_NEXT_TOKEN_MAX_LENGTH) nextToken?: string;
|
|
15
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Estado de un mensaje en `MessageLogs_GT`, tal como lo escribe messages-business. */
|
|
2
|
+
export enum MessageLogStatusEnum {
|
|
3
|
+
CREATED = 'CREATED',
|
|
4
|
+
VALIDATED = 'VALIDATED',
|
|
5
|
+
COMPLETED = 'COMPLETED',
|
|
6
|
+
REJECTED = 'REJECTED',
|
|
7
|
+
PENDING = 'PENDING',
|
|
8
|
+
CANCEL = 'CANCEL',
|
|
9
|
+
}
|
|
@@ -28,3 +28,8 @@ export * from './dtos/MdmNotifyQueueMessageRequest';
|
|
|
28
28
|
export * from './dtos/MdmNotifyResponse';
|
|
29
29
|
export * from './dtos/MdmNotifyBatchResponse';
|
|
30
30
|
export * from './constants/MessageIdempotencyLimits';
|
|
31
|
+
export * from './constants/MessageLogListLimits';
|
|
32
|
+
export * from './enums/MessageLogStatusEnum';
|
|
33
|
+
export * from './dtos/MessageLogListRequest';
|
|
34
|
+
export * from './dtos/MessageLogItem';
|
|
35
|
+
export * from './dtos/MessageLogListResponse';
|