@muni-sanfer/types-gestor-documental 0.0.1-beta.13 → 0.0.1-beta.15

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 (40) hide show
  1. package/dist/base/entities.d.ts +61 -3
  2. package/dist/base/entities.js +4 -0
  3. package/dist/contracts/caseFile.contract.d.ts +59 -1
  4. package/dist/contracts/caseFile.contract.js +6 -0
  5. package/dist/contracts/document.contract.d.ts +33 -1
  6. package/dist/contracts/document.contract.js +3 -0
  7. package/dist/contracts/documentType.contract.d.ts +2 -0
  8. package/dist/contracts/index.d.ts +20 -1
  9. package/dist/contracts/index.js +3 -0
  10. package/dist/contracts/issuingEntity.contract.d.ts +52 -0
  11. package/dist/contracts/issuingEntity.contract.js +11 -0
  12. package/dist/contracts/partsOffice.contract.d.ts +6 -0
  13. package/dist/contracts/partsOffice.contract.js +1 -0
  14. package/dist/entities/caseFile/caseFile.entity.d.ts +77 -0
  15. package/dist/entities/document/document.entity.d.ts +43 -0
  16. package/dist/entities/documentType/documentType.entity.d.ts +13 -0
  17. package/dist/entities/index.d.ts +1 -0
  18. package/dist/entities/index.js +1 -0
  19. package/dist/entities/issuingEntity/index.d.ts +1 -0
  20. package/dist/entities/issuingEntity/index.js +17 -0
  21. package/dist/entities/issuingEntity/issuingEntity.entity.d.ts +20 -0
  22. package/dist/entities/issuingEntity/issuingEntity.entity.js +2 -0
  23. package/dist/entities/partsOffice/partsOffice.entity.d.ts +4 -0
  24. package/dist/entities/registerBook/registerBook.entity.d.ts +6 -0
  25. package/package.json +1 -1
  26. package/src/base/entities.ts +68 -3
  27. package/src/contracts/caseFile.contract.ts +50 -0
  28. package/src/contracts/document.contract.ts +30 -0
  29. package/src/contracts/documentType.contract.ts +6 -1
  30. package/src/contracts/index.ts +4 -0
  31. package/src/contracts/issuingEntity.contract.ts +55 -0
  32. package/src/contracts/partsOffice.contract.ts +3 -0
  33. package/src/entities/caseFile/caseFile.entity.ts +79 -0
  34. package/src/entities/document/document.entity.ts +45 -0
  35. package/src/entities/documentType/documentType.entity.ts +7 -0
  36. package/src/entities/index.ts +1 -0
  37. package/src/entities/issuingEntity/index.ts +1 -0
  38. package/src/entities/issuingEntity/issuingEntity.entity.ts +24 -0
  39. package/src/entities/partsOffice/partsOffice.entity.ts +4 -0
  40. package/src/entities/registerBook/registerBook.entity.ts +6 -0
@@ -33,7 +33,7 @@ export declare const DocumentParticipantStatus: {
33
33
  Resolved: "Resolved";
34
34
  Rejected: "Rejected";
35
35
  };
36
- export type DocumentTrackingAction = 'Created' | 'Updated' | 'Submitted' | 'Visaed' | 'Signed' | 'Rejected' | 'Finished' | 'Discarded' | 'Numbered' | 'NumberAnnulled' | 'Annulled' | 'Delivered' | 'Derived' | 'Reassigned' | 'Dispatched' | 'DispatchReturned' | 'Received';
36
+ export type DocumentTrackingAction = 'Created' | 'Updated' | 'Submitted' | 'Visaed' | 'Signed' | 'Rejected' | 'Finished' | 'Discarded' | 'Numbered' | 'NumberAnnulled' | 'Annulled' | 'Delivered' | 'Derived' | 'Reassigned' | 'Dispatched' | 'DispatchReturned' | 'Received' | 'EmailCopySent' | 'EmailCopyOpened';
37
37
  export declare const DocumentTrackingAction: {
38
38
  Created: "Created";
39
39
  Updated: "Updated";
@@ -52,6 +52,8 @@ export declare const DocumentTrackingAction: {
52
52
  Dispatched: "Dispatched";
53
53
  DispatchReturned: "DispatchReturned";
54
54
  Received: "Received";
55
+ EmailCopySent: "EmailCopySent";
56
+ EmailCopyOpened: "EmailCopyOpened";
55
57
  };
56
58
  export type DocumentOrigin = 'Internal' | 'DocDigital';
57
59
  export declare const DocumentOrigin: {
@@ -144,7 +146,7 @@ export declare const CaseFileActorType: {
144
146
  PrivateInstitution: "PrivateInstitution";
145
147
  Official: "Official";
146
148
  };
147
- export type CaseFileTrackingAction = 'Created' | 'Updated' | 'EntryAdded' | 'EntryVoided' | 'EntryMoved' | 'ParticipantAdded' | 'ParticipantRemoved' | 'Closed' | 'Exported';
149
+ export type CaseFileTrackingAction = 'Created' | 'Updated' | 'EntryAdded' | 'EntryVoided' | 'EntryMoved' | 'ParticipantAdded' | 'ParticipantRemoved' | 'Closed' | 'Exported' | 'ShareLinkCreated' | 'ShareLinkRevoked';
148
150
  export declare const CaseFileTrackingAction: {
149
151
  Created: "Created";
150
152
  Updated: "Updated";
@@ -155,6 +157,8 @@ export declare const CaseFileTrackingAction: {
155
157
  ParticipantRemoved: "ParticipantRemoved";
156
158
  Closed: "Closed";
157
159
  Exported: "Exported";
160
+ ShareLinkCreated: "ShareLinkCreated";
161
+ ShareLinkRevoked: "ShareLinkRevoked";
158
162
  };
159
163
  export type CaseFileAccessAction = 'Viewed' | 'FileDownloaded' | 'Exported';
160
164
  export declare const CaseFileAccessAction: {
@@ -178,6 +182,11 @@ export interface DocumentTypeEntity {
178
182
  resetsYearly: boolean;
179
183
  numbered: boolean;
180
184
  directorateCodeReference?: number | null;
185
+ issuingEntity?: IssuingEntityEntity | null;
186
+ issuingEntityId?: string | null;
187
+ sharesNumberingWith?: DocumentTypeEntity | null;
188
+ sharesNumberingWithId?: string | null;
189
+ numberingMembers?: DocumentTypeEntity[];
181
190
  enabled: boolean;
182
191
  documents?: DocumentEntity[];
183
192
  annulledNumbers?: DocumentAnnulledNumberEntity[];
@@ -237,6 +246,7 @@ export interface DocumentEntity {
237
246
  caseFileEntries?: CaseFileEntryEntity[];
238
247
  workFolderItems?: WorkFolderItemEntity[];
239
248
  externalRecipients?: DocumentExternalRecipientEntity[];
249
+ emailCopies?: DocumentEmailCopyEntity[];
240
250
  dispatch?: DocumentDispatchEntity | null;
241
251
  docDigitalInbound?: DocDigitalInboundEntity | null;
242
252
  deleted: boolean;
@@ -398,6 +408,7 @@ export interface CaseFileEntity {
398
408
  trackings?: CaseFileTrackingEntity[];
399
409
  metadataChanges?: CaseFileMetadataChangeEntity[];
400
410
  accesses?: CaseFileAccessEntity[];
411
+ shareLinks?: CaseFileShareLinkEntity[];
401
412
  createdAt: string;
402
413
  updatedAt: string;
403
414
  workFolder?: WorkFolderEntity | null;
@@ -483,10 +494,43 @@ export interface CaseFileAccessEntity {
483
494
  id: string;
484
495
  action: CaseFileAccessAction;
485
496
  entryId?: string | null;
486
- employeeId: string;
497
+ employeeId?: string | null;
487
498
  employeeFullName: string;
499
+ shareLink?: CaseFileShareLinkEntity | null;
500
+ shareLinkId?: string | null;
501
+ caseFile?: CaseFileEntity;
502
+ caseFileId: string;
503
+ createdAt: string;
504
+ }
505
+ export interface CaseFileShareLinkEntity {
506
+ id: string;
507
+ tokenHash: string;
508
+ recipient: string;
509
+ recipientEmail?: string | null;
510
+ purpose?: string | null;
511
+ allowExport: boolean;
512
+ expiresAt: string;
513
+ createdByEmployeeId: string;
514
+ createdByFullName: string;
515
+ revokedAt?: string | null;
516
+ revokedByEmployeeId?: string | null;
517
+ revokedByFullName?: string | null;
488
518
  caseFile?: CaseFileEntity;
489
519
  caseFileId: string;
520
+ accesses?: CaseFileAccessEntity[];
521
+ createdAt: string;
522
+ }
523
+ export interface DocumentEmailCopyEntity {
524
+ id: string;
525
+ name: string;
526
+ email: string;
527
+ tokenHash?: string | null;
528
+ expiresAt?: string | null;
529
+ issuedAt?: string | null;
530
+ openedAt?: string | null;
531
+ downloadCount: number;
532
+ document?: DocumentEntity;
533
+ documentId: string;
490
534
  createdAt: string;
491
535
  }
492
536
  export interface DocumentExternalRecipientEntity {
@@ -535,6 +579,8 @@ export interface DocDigitalInboundEntity {
535
579
  senderEntityName?: string | null;
536
580
  senderName?: string | null;
537
581
  senderPosition?: string | null;
582
+ recipientEntityId?: number | null;
583
+ recipientEntityName?: string | null;
538
584
  fileId?: string | null;
539
585
  fileName?: string | null;
540
586
  attachments: JsonValue;
@@ -552,6 +598,18 @@ export interface DocDigitalInboundEntity {
552
598
  createdAt: string;
553
599
  updatedAt: string;
554
600
  }
601
+ export interface IssuingEntityEntity {
602
+ id: string;
603
+ name: string;
604
+ shortName?: string | null;
605
+ directorateCodeReferences: number[];
606
+ docDigitalEntityId?: number | null;
607
+ enabled: boolean;
608
+ documentTypes?: DocumentTypeEntity[];
609
+ deleted: boolean;
610
+ createdAt: string;
611
+ updatedAt: string;
612
+ }
555
613
  export interface IntakeSequenceEntity {
556
614
  year: number;
557
615
  next: number;
@@ -50,6 +50,8 @@ exports.DocumentTrackingAction = {
50
50
  Dispatched: 'Dispatched',
51
51
  DispatchReturned: 'DispatchReturned',
52
52
  Received: 'Received',
53
+ EmailCopySent: 'EmailCopySent',
54
+ EmailCopyOpened: 'EmailCopyOpened',
53
55
  };
54
56
  exports.DocumentOrigin = {
55
57
  Internal: 'Internal',
@@ -138,6 +140,8 @@ exports.CaseFileTrackingAction = {
138
140
  ParticipantRemoved: 'ParticipantRemoved',
139
141
  Closed: 'Closed',
140
142
  Exported: 'Exported',
143
+ ShareLinkCreated: 'ShareLinkCreated',
144
+ ShareLinkRevoked: 'ShareLinkRevoked',
141
145
  };
142
146
  exports.CaseFileAccessAction = {
143
147
  Viewed: 'Viewed',
@@ -1,5 +1,5 @@
1
1
  import { type CaseFileActorRelation, type CaseFileActorType, type CaseFileActuationType, type CaseFileEntity, type CaseFileStatus, type DocumentAccessLevel } from '../base/entities';
2
- import { type CaseFileAddBatchResponseEntity, type CaseFileAddEntryResponseEntity, type CaseFileCreateResponseEntity, type CaseFileEntryFileResponseEntity, type CaseFileExportResponseEntity, type CaseFileGetAllResponseEntity, type CaseFileGetByIdResponseEntity, type CaseFileUpdateResponseEntity } from '../entities';
2
+ import { type CaseFileAddBatchResponseEntity, type CaseFileAddEntryResponseEntity, type CaseFileCreateResponseEntity, type CaseFileEntryFileResponseEntity, type CaseFileExportResponseEntity, type CaseFileGetAllResponseEntity, type CaseFileGetByIdResponseEntity, type CaseFileShareLinkCreateResponseEntity, type CaseFileShareLinkResponseEntity, type CaseFileSharedResponseEntity, type CaseFileUpdateResponseEntity } from '../entities';
3
3
  import { type RpcPage } from './contract';
4
4
  import { type DocumentActor } from './document.contract';
5
5
  /** Patrones NATS de `caseFile`: `<servicio>.<recurso>.<acción>`. */
@@ -17,7 +17,25 @@ export declare const CaseFilePatterns: {
17
17
  readonly close: "gestorDocumental.caseFile.close";
18
18
  readonly getEntryFile: "gestorDocumental.caseFile.getEntryFile";
19
19
  readonly getExport: "gestorDocumental.caseFile.getExport";
20
+ readonly createShareLink: "gestorDocumental.caseFile.createShareLink";
21
+ readonly getShareLinks: "gestorDocumental.caseFile.getShareLinks";
22
+ readonly revokeShareLink: "gestorDocumental.caseFile.revokeShareLink";
23
+ readonly getShared: "gestorDocumental.caseFile.getShared";
24
+ readonly getSharedEntryFile: "gestorDocumental.caseFile.getSharedEntryFile";
25
+ readonly getSharedExport: "gestorDocumental.caseFile.getSharedExport";
20
26
  };
27
+ /** Enlace temporal para que alguien de fuera consulte el expediente sin sesión. */
28
+ export interface CaseFileShareLinkPayload {
29
+ /** A quién se entrega. Ej: «Contraloría Regional». */
30
+ recipient: string;
31
+ /** Si se indica, el gateway le envía el enlace por correo. */
32
+ recipientEmail?: string | null;
33
+ purpose?: string | null;
34
+ /** Cuántos días dura: de 1 a 30. */
35
+ days: number;
36
+ /** Puede descargar el expediente completo (ZIP). Por omisión, sí. */
37
+ allowExport?: boolean;
38
+ }
21
39
  /** Persona u organización relacionada con el expediente (MGDEE54). */
22
40
  export interface CaseFileActorInput {
23
41
  relation: CaseFileActorRelation;
@@ -181,5 +199,45 @@ export interface CaseFileContract {
181
199
  payload: Pick<CaseFileEntity, 'id'> & CaseFileActorPayload;
182
200
  response: CaseFileExportResponseEntity;
183
201
  };
202
+ /** Crea un enlace temporal: solo su responsable. El token viaja solo en esta respuesta. */
203
+ [CaseFilePatterns.createShareLink]: {
204
+ payload: Pick<CaseFileEntity, 'id'> & CaseFileShareLinkPayload & {
205
+ actor: DocumentActor;
206
+ };
207
+ response: CaseFileShareLinkCreateResponseEntity;
208
+ };
209
+ /** Enlaces del expediente, vigentes o no, con cuántas veces se usaron: su responsable o quien ve todos. */
210
+ [CaseFilePatterns.getShareLinks]: {
211
+ payload: Pick<CaseFileEntity, 'id'> & CaseFileActorPayload;
212
+ response: CaseFileShareLinkResponseEntity[];
213
+ };
214
+ [CaseFilePatterns.revokeShareLink]: {
215
+ payload: Pick<CaseFileEntity, 'id'> & {
216
+ linkId: string;
217
+ actor: DocumentActor;
218
+ };
219
+ response: CaseFileUpdateResponseEntity;
220
+ };
221
+ /** Sin sesión, con el token del enlace: metadatos e índice. Queda en el registro de accesos. */
222
+ [CaseFilePatterns.getShared]: {
223
+ payload: {
224
+ token: string;
225
+ };
226
+ response: CaseFileSharedResponseEntity;
227
+ };
228
+ [CaseFilePatterns.getSharedEntryFile]: {
229
+ payload: {
230
+ token: string;
231
+ entryId: string;
232
+ };
233
+ response: CaseFileEntryFileResponseEntity;
234
+ };
235
+ /** El expediente completo, si el enlace lo permite. Queda en la trazabilidad y en el registro de accesos. */
236
+ [CaseFilePatterns.getSharedExport]: {
237
+ payload: {
238
+ token: string;
239
+ };
240
+ response: CaseFileExportResponseEntity;
241
+ };
184
242
  }
185
243
  export {};
@@ -16,4 +16,10 @@ exports.CaseFilePatterns = {
16
16
  close: 'gestorDocumental.caseFile.close',
17
17
  getEntryFile: 'gestorDocumental.caseFile.getEntryFile',
18
18
  getExport: 'gestorDocumental.caseFile.getExport',
19
+ createShareLink: 'gestorDocumental.caseFile.createShareLink',
20
+ getShareLinks: 'gestorDocumental.caseFile.getShareLinks',
21
+ revokeShareLink: 'gestorDocumental.caseFile.revokeShareLink',
22
+ getShared: 'gestorDocumental.caseFile.getShared',
23
+ getSharedEntryFile: 'gestorDocumental.caseFile.getSharedEntryFile',
24
+ getSharedExport: 'gestorDocumental.caseFile.getSharedExport',
19
25
  };
@@ -1,5 +1,5 @@
1
1
  import { type DocumentAccessLevel, type DocumentAttachmentEntity, type DocumentDeliveryEntity, type DocumentEntity, type DocumentInstruction, type DocumentParticipantEntity, type DocumentStatus } from '../base/entities';
2
- import { type DocumentAnnulResponseEntity, type DocumentCloseDeliveryResponseEntity, type DocumentCreateResponseEntity, type DocumentDeriveResponseEntity, type DocumentDiscardResponseEntity, type DocumentGetAllResponseEntity, type DocumentGetByIdResponseEntity, type DocumentGetSummaryResponseEntity, type DocumentInboxItemEntity, type DocumentPublicFileResponseEntity, type DocumentReassignResponseEntity, type DocumentReviewResponseEntity, type DocumentSignManyResponseEntity, type DocumentAgendaResponseEntity, type DocumentComposeResponseEntity, type DocumentComposition, type DocumentTrailExportEntity, type DocumentUpdateResponseEntity, type DocumentVerifyResponseEntity } from '../entities';
2
+ import { type DocumentAnnulResponseEntity, type DocumentCloseDeliveryResponseEntity, type DocumentCreateResponseEntity, type DocumentDeriveResponseEntity, type DocumentDiscardResponseEntity, type DocumentEmailCopyIssuedEntity, type DocumentEmailCopyViewEntity, type DocumentGetAllResponseEntity, type DocumentGetByIdResponseEntity, type DocumentGetSummaryResponseEntity, type DocumentInboxItemEntity, type DocumentPublicFileResponseEntity, type DocumentReassignResponseEntity, type DocumentReviewResponseEntity, type DocumentSignManyResponseEntity, type DocumentAgendaResponseEntity, type DocumentComposeResponseEntity, type DocumentComposition, type DocumentTrailExportEntity, type DocumentUpdateResponseEntity, type DocumentVerifyResponseEntity } from '../entities';
3
3
  import { type RpcPage } from './contract';
4
4
  /** Patrones NATS de `document`: `<servicio>.<recurso>.<acción>`. */
5
5
  export declare const DocumentPatterns: {
@@ -22,6 +22,9 @@ export declare const DocumentPatterns: {
22
22
  readonly getAgenda: "gestorDocumental.document.getAgenda";
23
23
  readonly exportTrail: "gestorDocumental.document.exportTrail";
24
24
  readonly compose: "gestorDocumental.document.compose";
25
+ readonly issueEmailCopies: "gestorDocumental.document.issueEmailCopies";
26
+ readonly getEmailCopy: "gestorDocumental.document.getEmailCopy";
27
+ readonly getEmailCopyFile: "gestorDocumental.document.getEmailCopyFile";
25
28
  };
26
29
  /**
27
30
  * Funcionario que hace la operación y sus áreas (direcciones y departamentos a los que pertenece o que dirige). Lo
@@ -81,9 +84,15 @@ export interface DocumentWritePayload extends Pick<DocumentEntity, 'subject' | '
81
84
  responseDueAt?: string | null;
82
85
  replyToDocumentId?: string | null;
83
86
  externalRecipients?: DocumentExternalRecipientInput[];
87
+ emailCopies?: DocumentEmailCopyInput[];
84
88
  action?: 'Submit';
85
89
  actor: DocumentActor;
86
90
  }
91
+ /** Persona u organización fuera del Estado que recibe una copia por correo. */
92
+ export interface DocumentEmailCopyInput {
93
+ name: string;
94
+ email: string;
95
+ }
87
96
  /** Destinatario externo: una institución de DocDigital y, si se indica, uno de sus usuarios. */
88
97
  export interface DocumentExternalRecipientInput {
89
98
  entityId: number;
@@ -295,6 +304,29 @@ export interface DocumentContract {
295
304
  };
296
305
  response: DocumentPublicFileResponseEntity;
297
306
  };
307
+ /**
308
+ * Emite las copias por correo pendientes de estos documentos, si ya corresponde (finalizado y, si va por DocDigital,
309
+ * despachado): genera el enlace de cada una. Se puede pedir de más: lo ya emitido no se repite.
310
+ */
311
+ [DocumentPatterns.issueEmailCopies]: {
312
+ payload: {
313
+ documentIds: string[];
314
+ };
315
+ response: DocumentEmailCopyIssuedEntity[];
316
+ };
317
+ /** Sin sesión, con el token de la copia: el documento y quién lo emitió. */
318
+ [DocumentPatterns.getEmailCopy]: {
319
+ payload: {
320
+ token: string;
321
+ };
322
+ response: DocumentEmailCopyViewEntity;
323
+ };
324
+ [DocumentPatterns.getEmailCopyFile]: {
325
+ payload: {
326
+ token: string;
327
+ };
328
+ response: DocumentPublicFileResponseEntity;
329
+ };
298
330
  /** Carpeta de Drive de los documentos y sus anexos: el gateway la pide antes de subir cada archivo. */
299
331
  [DocumentPatterns.getFilesFolder]: {
300
332
  payload: Record<string, never>;
@@ -22,4 +22,7 @@ exports.DocumentPatterns = {
22
22
  getAgenda: 'gestorDocumental.document.getAgenda',
23
23
  exportTrail: 'gestorDocumental.document.exportTrail',
24
24
  compose: 'gestorDocumental.document.compose',
25
+ issueEmailCopies: 'gestorDocumental.document.issueEmailCopies',
26
+ getEmailCopy: 'gestorDocumental.document.getEmailCopy',
27
+ getEmailCopyFile: 'gestorDocumental.document.getEmailCopyFile',
25
28
  };
@@ -36,6 +36,8 @@ export interface DocumentTypeWritePayload {
36
36
  resetsYearly?: boolean;
37
37
  numbered?: boolean;
38
38
  directorateCodeReference?: number | null;
39
+ issuingEntityId?: string | null;
40
+ sharesNumberingWithId?: string | null;
39
41
  enabled?: boolean;
40
42
  flowSteps?: DocumentFlowStepInput[];
41
43
  }
@@ -1,6 +1,7 @@
1
1
  import { type CaseFileContract } from './caseFile.contract';
2
2
  import { type DocumentContract } from './document.contract';
3
3
  import { type DocumentTypeContract } from './documentType.contract';
4
+ import { type IssuingEntityContract } from './issuingEntity.contract';
4
5
  import { type PartsOfficeContract } from './partsOffice.contract';
5
6
  import { type ProcedureContract } from './procedure.contract';
6
7
  import { type RegisterBookContract } from './registerBook.contract';
@@ -10,6 +11,7 @@ export * from './contract';
10
11
  export * from './document.contract';
11
12
  export * from './documentType.contract';
12
13
  export * from './procedure.contract';
14
+ export * from './issuingEntity.contract';
13
15
  export * from './caseFile.contract';
14
16
  export * from './partsOffice.contract';
15
17
  export * from './registerBook.contract';
@@ -44,6 +46,9 @@ export declare const GestorDocumentalPatterns: {
44
46
  readonly getAgenda: "gestorDocumental.document.getAgenda";
45
47
  readonly exportTrail: "gestorDocumental.document.exportTrail";
46
48
  readonly compose: "gestorDocumental.document.compose";
49
+ readonly issueEmailCopies: "gestorDocumental.document.issueEmailCopies";
50
+ readonly getEmailCopy: "gestorDocumental.document.getEmailCopy";
51
+ readonly getEmailCopyFile: "gestorDocumental.document.getEmailCopyFile";
47
52
  };
48
53
  readonly procedure: {
49
54
  readonly getAll: "gestorDocumental.procedure.getAll";
@@ -52,6 +57,13 @@ export declare const GestorDocumentalPatterns: {
52
57
  readonly update: "gestorDocumental.procedure.update";
53
58
  readonly setEnabled: "gestorDocumental.procedure.setEnabled";
54
59
  };
60
+ readonly issuingEntity: {
61
+ readonly getAll: "gestorDocumental.issuingEntity.getAll";
62
+ readonly getById: "gestorDocumental.issuingEntity.getById";
63
+ readonly create: "gestorDocumental.issuingEntity.create";
64
+ readonly update: "gestorDocumental.issuingEntity.update";
65
+ readonly setEnabled: "gestorDocumental.issuingEntity.setEnabled";
66
+ };
55
67
  readonly caseFile: {
56
68
  readonly getAll: "gestorDocumental.caseFile.getAll";
57
69
  readonly getById: "gestorDocumental.caseFile.getById";
@@ -66,11 +78,18 @@ export declare const GestorDocumentalPatterns: {
66
78
  readonly close: "gestorDocumental.caseFile.close";
67
79
  readonly getEntryFile: "gestorDocumental.caseFile.getEntryFile";
68
80
  readonly getExport: "gestorDocumental.caseFile.getExport";
81
+ readonly createShareLink: "gestorDocumental.caseFile.createShareLink";
82
+ readonly getShareLinks: "gestorDocumental.caseFile.getShareLinks";
83
+ readonly revokeShareLink: "gestorDocumental.caseFile.revokeShareLink";
84
+ readonly getShared: "gestorDocumental.caseFile.getShared";
85
+ readonly getSharedEntryFile: "gestorDocumental.caseFile.getSharedEntryFile";
86
+ readonly getSharedExport: "gestorDocumental.caseFile.getSharedExport";
69
87
  };
70
88
  readonly partsOffice: {
71
89
  readonly getStatus: "gestorDocumental.partsOffice.getStatus";
72
90
  readonly getSummary: "gestorDocumental.partsOffice.getSummary";
73
91
  readonly getEntities: "gestorDocumental.partsOffice.getEntities";
92
+ readonly getOwnEntities: "gestorDocumental.partsOffice.getOwnEntities";
74
93
  readonly getUsers: "gestorDocumental.partsOffice.getUsers";
75
94
  readonly getDocumentTypes: "gestorDocumental.partsOffice.getDocumentTypes";
76
95
  readonly getDispatches: "gestorDocumental.partsOffice.getDispatches";
@@ -111,4 +130,4 @@ export declare const GestorDocumentalPatterns: {
111
130
  };
112
131
  };
113
132
  /** Contrato completo de gestor-documental-ms: la unión de los contratos de sus recursos. */
114
- export type GestorDocumentalContract = DocumentTypeContract & DocumentContract & ProcedureContract & CaseFileContract & PartsOfficeContract & RegisterBookContract & SignatureBatchContract & WorkFolderContract;
133
+ export type GestorDocumentalContract = DocumentTypeContract & DocumentContract & ProcedureContract & IssuingEntityContract & CaseFileContract & PartsOfficeContract & RegisterBookContract & SignatureBatchContract & WorkFolderContract;
@@ -18,6 +18,7 @@ exports.GestorDocumentalPatterns = void 0;
18
18
  const caseFile_contract_1 = require("./caseFile.contract");
19
19
  const document_contract_1 = require("./document.contract");
20
20
  const documentType_contract_1 = require("./documentType.contract");
21
+ const issuingEntity_contract_1 = require("./issuingEntity.contract");
21
22
  const partsOffice_contract_1 = require("./partsOffice.contract");
22
23
  const procedure_contract_1 = require("./procedure.contract");
23
24
  const registerBook_contract_1 = require("./registerBook.contract");
@@ -27,6 +28,7 @@ __exportStar(require("./contract"), exports);
27
28
  __exportStar(require("./document.contract"), exports);
28
29
  __exportStar(require("./documentType.contract"), exports);
29
30
  __exportStar(require("./procedure.contract"), exports);
31
+ __exportStar(require("./issuingEntity.contract"), exports);
30
32
  __exportStar(require("./caseFile.contract"), exports);
31
33
  __exportStar(require("./partsOffice.contract"), exports);
32
34
  __exportStar(require("./registerBook.contract"), exports);
@@ -37,6 +39,7 @@ exports.GestorDocumentalPatterns = {
37
39
  documentType: documentType_contract_1.DocumentTypePatterns,
38
40
  document: document_contract_1.DocumentPatterns,
39
41
  procedure: procedure_contract_1.ProcedurePatterns,
42
+ issuingEntity: issuingEntity_contract_1.IssuingEntityPatterns,
40
43
  caseFile: caseFile_contract_1.CaseFilePatterns,
41
44
  partsOffice: partsOffice_contract_1.PartsOfficePatterns,
42
45
  registerBook: registerBook_contract_1.RegisterBookPatterns,
@@ -0,0 +1,52 @@
1
+ import { type IssuingEntityEntity } from '../base/entities';
2
+ import { type IssuingEntityCreateResponseEntity, type IssuingEntityGetAllResponseEntity, type IssuingEntityGetByIdResponseEntity, type IssuingEntityUpdateResponseEntity } from '../entities';
3
+ import { type RpcPage } from './contract';
4
+ /** Patrones NATS de `issuingEntity`: `<servicio>.<recurso>.<acción>`. */
5
+ export declare const IssuingEntityPatterns: {
6
+ readonly getAll: "gestorDocumental.issuingEntity.getAll";
7
+ readonly getById: "gestorDocumental.issuingEntity.getById";
8
+ readonly create: "gestorDocumental.issuingEntity.create";
9
+ readonly update: "gestorDocumental.issuingEntity.update";
10
+ readonly setEnabled: "gestorDocumental.issuingEntity.setEnabled";
11
+ };
12
+ /** Datos de una entidad emisora al crearla o editarla. */
13
+ export interface IssuingEntityWritePayload {
14
+ name: string;
15
+ shortName?: string | null;
16
+ /** Direcciones (código de caschile) cuyos funcionarios actúan por la entidad. */
17
+ directorateCodeReferences: number[];
18
+ /** Su entidad en DocDigital, entre las asociadas a las credenciales del gestor. */
19
+ docDigitalEntityId?: number | null;
20
+ enabled?: boolean;
21
+ }
22
+ export interface IssuingEntityContract {
23
+ [IssuingEntityPatterns.getAll]: {
24
+ payload: {
25
+ pagination?: {
26
+ page?: number;
27
+ limit?: number;
28
+ };
29
+ filters?: {
30
+ search?: string;
31
+ enabled?: boolean;
32
+ };
33
+ };
34
+ response: RpcPage<IssuingEntityGetAllResponseEntity[]>;
35
+ };
36
+ [IssuingEntityPatterns.getById]: {
37
+ payload: Pick<IssuingEntityEntity, 'id'>;
38
+ response: IssuingEntityGetByIdResponseEntity;
39
+ };
40
+ [IssuingEntityPatterns.create]: {
41
+ payload: IssuingEntityWritePayload;
42
+ response: IssuingEntityCreateResponseEntity;
43
+ };
44
+ [IssuingEntityPatterns.update]: {
45
+ payload: IssuingEntityWritePayload & Pick<IssuingEntityEntity, 'id'>;
46
+ response: IssuingEntityUpdateResponseEntity;
47
+ };
48
+ [IssuingEntityPatterns.setEnabled]: {
49
+ payload: Pick<IssuingEntityEntity, 'id' | 'enabled'>;
50
+ response: IssuingEntityUpdateResponseEntity;
51
+ };
52
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IssuingEntityPatterns = void 0;
4
+ /** Patrones NATS de `issuingEntity`: `<servicio>.<recurso>.<acción>`. */
5
+ exports.IssuingEntityPatterns = {
6
+ getAll: 'gestorDocumental.issuingEntity.getAll',
7
+ getById: 'gestorDocumental.issuingEntity.getById',
8
+ create: 'gestorDocumental.issuingEntity.create',
9
+ update: 'gestorDocumental.issuingEntity.update',
10
+ setEnabled: 'gestorDocumental.issuingEntity.setEnabled',
11
+ };
@@ -7,6 +7,7 @@ export declare const PartsOfficePatterns: {
7
7
  readonly getStatus: "gestorDocumental.partsOffice.getStatus";
8
8
  readonly getSummary: "gestorDocumental.partsOffice.getSummary";
9
9
  readonly getEntities: "gestorDocumental.partsOffice.getEntities";
10
+ readonly getOwnEntities: "gestorDocumental.partsOffice.getOwnEntities";
10
11
  readonly getUsers: "gestorDocumental.partsOffice.getUsers";
11
12
  readonly getDocumentTypes: "gestorDocumental.partsOffice.getDocumentTypes";
12
13
  readonly getDispatches: "gestorDocumental.partsOffice.getDispatches";
@@ -62,6 +63,11 @@ export interface PartsOfficeContract {
62
63
  };
63
64
  response: DocDigitalEntityEntity[];
64
65
  };
66
+ /** Entidades asociadas a las credenciales del gestor: la del municipio y las de sus entidades emisoras. */
67
+ [PartsOfficePatterns.getOwnEntities]: {
68
+ payload: Record<string, never>;
69
+ response: DocDigitalEntityEntity[];
70
+ };
65
71
  [PartsOfficePatterns.getUsers]: {
66
72
  payload: {
67
73
  entityId: number;
@@ -6,6 +6,7 @@ exports.PartsOfficePatterns = {
6
6
  getStatus: 'gestorDocumental.partsOffice.getStatus',
7
7
  getSummary: 'gestorDocumental.partsOffice.getSummary',
8
8
  getEntities: 'gestorDocumental.partsOffice.getEntities',
9
+ getOwnEntities: 'gestorDocumental.partsOffice.getOwnEntities',
9
10
  getUsers: 'gestorDocumental.partsOffice.getUsers',
10
11
  getDocumentTypes: 'gestorDocumental.partsOffice.getDocumentTypes',
11
12
  getDispatches: 'gestorDocumental.partsOffice.getDispatches',
@@ -102,7 +102,10 @@ export interface CaseFileAccessResponseEntity {
102
102
  entryId: CaseFileAccessEntity['entryId'];
103
103
  /** Título del documento que se abrió, si el acceso fue a uno. */
104
104
  entryTitle: string | null;
105
+ /** El funcionario o, si fue por un enlace temporal, su destinatario externo. */
105
106
  employeeFullName: CaseFileAccessEntity['employeeFullName'];
107
+ /** Fue por un enlace temporal, sin sesión. */
108
+ external: boolean;
106
109
  createdAt: CaseFileAccessEntity['createdAt'];
107
110
  }
108
111
  export interface CaseFileGetByIdResponseEntity extends CaseFileGetAllResponseEntity {
@@ -182,3 +185,77 @@ export interface CaseFileExportResponseEntity {
182
185
  }
183
186
  /** Expediente en que está incorporado un documento, visto desde el documento. */
184
187
  export type DocumentCaseFileEntity = CaseFileLinkEntity;
188
+ /** Estado de un enlace temporal: vigente, vencido o revocado. */
189
+ export type CaseFileShareLinkStatus = 'Active' | 'Expired' | 'Revoked';
190
+ /** Enlace temporal de un expediente, como lo ve su responsable. El token no se vuelve a mostrar. */
191
+ export interface CaseFileShareLinkResponseEntity {
192
+ id: string;
193
+ recipient: string;
194
+ recipientEmail: string | null;
195
+ purpose: string | null;
196
+ allowExport: boolean;
197
+ expiresAt: string;
198
+ status: CaseFileShareLinkStatus;
199
+ createdByFullName: string;
200
+ createdAt: string;
201
+ revokedAt: string | null;
202
+ revokedByFullName: string | null;
203
+ /** Cuántas consultas, descargas y exportaciones se hicieron con él. */
204
+ accessCount: number;
205
+ lastAccessAt: string | null;
206
+ }
207
+ /** Enlace recién creado: el token va solo aquí; la dirección la arma quien lo muestra. */
208
+ export interface CaseFileShareLinkCreateResponseEntity {
209
+ id: string;
210
+ token: string;
211
+ recipient: string;
212
+ recipientEmail: string | null;
213
+ purpose: string | null;
214
+ expiresAt: string;
215
+ /** Para avisarle al destinatario: qué expediente, de qué órgano y quién se lo comparte. */
216
+ caseFile: {
217
+ code: string;
218
+ title: string;
219
+ };
220
+ organName: string;
221
+ createdByFullName: string;
222
+ }
223
+ /** Actuación del índice como la ve el destinatario externo. */
224
+ export interface CaseFileSharedEntryEntity {
225
+ id: string;
226
+ sequence: number;
227
+ folder: string | null;
228
+ kind: CaseFileEntryEntity['kind'];
229
+ actuationType: CaseFileEntryEntity['actuationType'];
230
+ title: string;
231
+ /** Tipo y número del documento («D.E. N° 590/2026») o el tipo declarado del archivo. */
232
+ reference: string | null;
233
+ originDate: string | null;
234
+ createdAt: string;
235
+ hasFile: boolean;
236
+ sha256: string | null;
237
+ hasAdvancedSignature: boolean;
238
+ physicalLocation: string | null;
239
+ pageCount: number | null;
240
+ voidedAt: string | null;
241
+ voidReason: string | null;
242
+ }
243
+ /** Expediente abierto con un enlace temporal: metadatos e índice, sin participantes ni registros internos. */
244
+ export interface CaseFileSharedResponseEntity {
245
+ code: string;
246
+ title: string;
247
+ subject: string;
248
+ summary: string | null;
249
+ procedureName: string;
250
+ status: CaseFileEntity['status'];
251
+ organName: string;
252
+ responsibleFullName: string;
253
+ responsiblePosition: string | null;
254
+ createdAt: string;
255
+ closedAt: string | null;
256
+ recipient: string;
257
+ purpose: string | null;
258
+ expiresAt: string;
259
+ allowExport: boolean;
260
+ entries: CaseFileSharedEntryEntity[];
261
+ }
@@ -114,6 +114,7 @@ export interface DocumentInboxItemEntity extends DocumentDeliveryResponseEntity
114
114
  }
115
115
  export interface DocumentGetByIdResponseEntity {
116
116
  id: DocumentEntity['id'];
117
+ issuerName: string;
117
118
  subject: DocumentEntity['subject'];
118
119
  keywords: DocumentEntity['keywords'];
119
120
  accessLevel: DocumentEntity['accessLevel'];
@@ -173,6 +174,7 @@ export interface DocumentGetByIdResponseEntity {
173
174
  /** Instituciones de DocDigital a quienes va dirigido, y su despacho por Oficina de Partes. */
174
175
  externalRecipients: DocumentExternalRecipientResponseEntity[];
175
176
  dispatch: DocumentDispatchResponseEntity | null;
177
+ emailCopies: DocumentEmailCopyResponseEntity[];
176
178
  documentType: DocumentTypeSummaryEntity;
177
179
  participants: DocumentParticipantResponseEntity[];
178
180
  attachments: {
@@ -282,6 +284,7 @@ export interface DocumentVerifyResponseEntity {
282
284
  state: DocumentVerificationState;
283
285
  verificationCode: string;
284
286
  documentType: Pick<DocumentTypeSummaryEntity, 'name' | 'abbreviation'>;
287
+ issuerName: string;
285
288
  correlative: DocumentEntity['correlative'];
286
289
  correlativeYear: DocumentEntity['correlativeYear'];
287
290
  numberedAt: DocumentEntity['numberedAt'];
@@ -401,3 +404,43 @@ export interface DocumentComposeResponseEntity {
401
404
  fileId?: string;
402
405
  contentBase64?: string;
403
406
  }
407
+ /** Copia por correo de un documento, como la ve quien lo consulta en el gestor. */
408
+ export interface DocumentEmailCopyResponseEntity {
409
+ id: string;
410
+ name: string;
411
+ email: string;
412
+ /** Cuándo se envió (sin valor: aún no corresponde). */
413
+ issuedAt: string | null;
414
+ expiresAt: string | null;
415
+ openedAt: string | null;
416
+ downloadCount: number;
417
+ }
418
+ /** Copia recién emitida: el gateway le envía el enlace a su destinatario. El token viaja solo aquí. */
419
+ export interface DocumentEmailCopyIssuedEntity {
420
+ copyId: string;
421
+ documentId: string;
422
+ name: string;
423
+ email: string;
424
+ token: string;
425
+ expiresAt: string;
426
+ /** Cómo se cita: «D.E. N° 590/2026», o el tipo si no lleva número. */
427
+ folio: string;
428
+ subject: string;
429
+ issuerName: string;
430
+ }
431
+ /** El documento como lo ve quien abre su copia por correo. */
432
+ export interface DocumentEmailCopyViewEntity {
433
+ recipientName: string;
434
+ expiresAt: string;
435
+ documentTypeName: string;
436
+ folio: string;
437
+ subject: string;
438
+ issuerName: string;
439
+ finishedAt: string | null;
440
+ verificationCode: string | null;
441
+ signers: {
442
+ fullName: string;
443
+ position: string | null;
444
+ signedAt: string | null;
445
+ }[];
446
+ }