@muni-sanfer/types-gestor-documental 0.0.1-beta.34 → 0.0.1-beta.36

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.
@@ -461,6 +461,7 @@ export interface DocumentEntity {
461
461
  originalFileName: string;
462
462
  currentFileId?: string | null;
463
463
  currentFileUrl?: string | null;
464
+ fileFormat?: string | null;
464
465
  submittedAt?: string | null;
465
466
  finishedAt?: string | null;
466
467
  documentType?: DocumentTypeEntity;
@@ -659,6 +660,7 @@ export interface CaseFileEntity {
659
660
  metadataChanges?: CaseFileMetadataChangeEntity[];
660
661
  accesses?: CaseFileAccessEntity[];
661
662
  shareLinks?: CaseFileShareLinkEntity[];
663
+ integratedPdf?: JsonValue | null;
662
664
  createdAt: string;
663
665
  updatedAt: string;
664
666
  workFolder?: WorkFolderEntity | null;
@@ -709,6 +711,7 @@ export interface CaseFileEntryEntity {
709
711
  sha256?: string | null;
710
712
  size?: number | null;
711
713
  hasAdvancedSignature: boolean;
714
+ fileFormat?: string | null;
712
715
  signatureCheck?: JsonValue | null;
713
716
  incorporatedByEmployeeId: string;
714
717
  incorporatedByFullName: string;
@@ -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 CaseFileShareLinkCreateResponseEntity, type CaseFileShareLinkResponseEntity, type CaseFileSharedResponseEntity, type CaseFileUpdateResponseEntity, type CaseFileVerifyExportResponseEntity } 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, type CaseFileVerifyExportResponseEntity, type DocumentPublicFileResponseEntity } 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,6 +17,7 @@ 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 getIntegratedPdf: "gestorDocumental.caseFile.getIntegratedPdf";
20
21
  readonly createShareLink: "gestorDocumental.caseFile.createShareLink";
21
22
  readonly getShareLinks: "gestorDocumental.caseFile.getShareLinks";
22
23
  readonly revokeShareLink: "gestorDocumental.caseFile.revokeShareLink";
@@ -204,6 +205,15 @@ export interface CaseFileContract {
204
205
  payload: Pick<CaseFileEntity, 'id'> & CaseFileActorPayload;
205
206
  response: CaseFileExportResponseEntity;
206
207
  };
208
+ /**
209
+ * PDF integrador: todas las actuaciones en un solo PDF, en orden de incorporación, con portada e índice. Queda en la
210
+ * trazabilidad y en el registro de accesos, como la exportación. Sin el sello de copia autorizada (necesita firma
211
+ * desatendida).
212
+ */
213
+ [CaseFilePatterns.getIntegratedPdf]: {
214
+ payload: Pick<CaseFileEntity, 'id'> & CaseFileActorPayload;
215
+ response: DocumentPublicFileResponseEntity;
216
+ };
207
217
  /** Crea un enlace temporal: solo su responsable. El token viaja solo en esta respuesta. */
208
218
  [CaseFilePatterns.createShareLink]: {
209
219
  payload: Pick<CaseFileEntity, 'id'> & CaseFileShareLinkPayload & {
@@ -16,6 +16,7 @@ exports.CaseFilePatterns = {
16
16
  close: 'gestorDocumental.caseFile.close',
17
17
  getEntryFile: 'gestorDocumental.caseFile.getEntryFile',
18
18
  getExport: 'gestorDocumental.caseFile.getExport',
19
+ getIntegratedPdf: 'gestorDocumental.caseFile.getIntegratedPdf',
19
20
  createShareLink: 'gestorDocumental.caseFile.createShareLink',
20
21
  getShareLinks: 'gestorDocumental.caseFile.getShareLinks',
21
22
  revokeShareLink: 'gestorDocumental.caseFile.revokeShareLink',
@@ -114,6 +114,7 @@ export declare const GestorDocumentalPatterns: {
114
114
  readonly close: "gestorDocumental.caseFile.close";
115
115
  readonly getEntryFile: "gestorDocumental.caseFile.getEntryFile";
116
116
  readonly getExport: "gestorDocumental.caseFile.getExport";
117
+ readonly getIntegratedPdf: "gestorDocumental.caseFile.getIntegratedPdf";
117
118
  readonly createShareLink: "gestorDocumental.caseFile.createShareLink";
118
119
  readonly getShareLinks: "gestorDocumental.caseFile.getShareLinks";
119
120
  readonly revokeShareLink: "gestorDocumental.caseFile.revokeShareLink";
@@ -59,6 +59,8 @@ export interface CaseFileEntryResponseEntity {
59
59
  sha256: CaseFileEntryEntity['sha256'];
60
60
  size: CaseFileEntryEntity['size'];
61
61
  hasAdvancedSignature: CaseFileEntryEntity['hasAdvancedSignature'];
62
+ /** Conformidad PDF/A que declara el archivo («PDF/A-2B»), «PDF», o `null` si no es un PDF o no se revisó. */
63
+ fileFormat: CaseFileEntryEntity['fileFormat'];
62
64
  /** Revisión de sus firmas al incorporarlo, en los archivos externos en PDF. */
63
65
  signatureCheck: PdfSignatureReportEntity | null;
64
66
  incorporatedByEmployeeId: CaseFileEntryEntity['incorporatedByEmployeeId'];
@@ -139,6 +139,11 @@ export interface DocumentGetByIdResponseEntity {
139
139
  keywords: DocumentEntity['keywords'];
140
140
  accessLevel: DocumentEntity['accessLevel'];
141
141
  hasSensitiveData: DocumentEntity['hasSensitiveData'];
142
+ /**
143
+ * Formato del archivo vigente: la conformidad PDF/A que declara («PDF/A-2B») o «PDF». `null` si no se revisó (los
144
+ * documentos anteriores a esta revisión, o aún sin firmar).
145
+ */
146
+ fileFormat: DocumentEntity['fileFormat'];
142
147
  status: DocumentEntity['status'];
143
148
  correlative: DocumentEntity['correlative'];
144
149
  correlativeYear: DocumentEntity['correlativeYear'];
@@ -4,6 +4,15 @@
4
4
  */
5
5
  export type PdfSignatureStatus = 'Valid' | 'Invalid' | 'Indeterminate';
6
6
  /** Una firma electrónica de un PDF, como se pudo comprobar. */
7
+ /** Si el certificado de una firma fue revocado, según su emisor (OCSP o lista de revocación). */
8
+ export interface PdfRevocationEntity {
9
+ /** `NotChecked`: la revisión está desactivada en el servidor. `Unknown`: no se pudo confirmar. */
10
+ status: 'Good' | 'Revoked' | 'Unknown' | 'NotChecked';
11
+ source: 'OCSP' | 'CRL' | null;
12
+ revokedAt: string | null;
13
+ /** Por qué no se pudo confirmar. */
14
+ detail: string | null;
15
+ }
7
16
  export interface PdfSignatureEntity {
8
17
  /** Orden en el archivo: 1 es la primera. */
9
18
  index: number;
@@ -31,6 +40,8 @@ export interface PdfSignatureEntity {
31
40
  certificateValidAtSigning: boolean | null;
32
41
  /** Cadena hasta un certificado raíz de confianza. `null` si no hay raíces configuradas. */
33
42
  trusted: boolean | null;
43
+ /** Si el certificado fue revocado. Falta en las revisiones anteriores a que se consultara. */
44
+ revocation?: PdfRevocationEntity;
34
45
  status: PdfSignatureStatus;
35
46
  /** Lo que no cuadra o no se pudo confirmar, en palabras. */
36
47
  problems: string[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@muni-sanfer/types-gestor-documental",
3
- "version": "0.0.1-beta.34",
3
+ "version": "0.0.1-beta.36",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {
@@ -654,6 +654,7 @@ export interface DocumentEntity {
654
654
  originalFileName: string;
655
655
  currentFileId?: string | null;
656
656
  currentFileUrl?: string | null;
657
+ fileFormat?: string | null;
657
658
  submittedAt?: string | null;
658
659
  finishedAt?: string | null;
659
660
  documentType?: DocumentTypeEntity;
@@ -863,6 +864,7 @@ export interface CaseFileEntity {
863
864
  metadataChanges?: CaseFileMetadataChangeEntity[];
864
865
  accesses?: CaseFileAccessEntity[];
865
866
  shareLinks?: CaseFileShareLinkEntity[];
867
+ integratedPdf?: JsonValue | null;
866
868
  createdAt: string;
867
869
  updatedAt: string;
868
870
  workFolder?: WorkFolderEntity | null;
@@ -916,6 +918,7 @@ export interface CaseFileEntryEntity {
916
918
  sha256?: string | null;
917
919
  size?: number | null;
918
920
  hasAdvancedSignature: boolean;
921
+ fileFormat?: string | null;
919
922
  signatureCheck?: JsonValue | null;
920
923
  incorporatedByEmployeeId: string;
921
924
  incorporatedByFullName: string;
@@ -19,6 +19,7 @@ import {
19
19
  type CaseFileSharedResponseEntity,
20
20
  type CaseFileUpdateResponseEntity,
21
21
  type CaseFileVerifyExportResponseEntity,
22
+ type DocumentPublicFileResponseEntity,
22
23
  } from '../entities';
23
24
  import { type RpcPage } from './contract';
24
25
  import { type DocumentActor } from './document.contract';
@@ -38,6 +39,7 @@ export const CaseFilePatterns = {
38
39
  close: 'gestorDocumental.caseFile.close',
39
40
  getEntryFile: 'gestorDocumental.caseFile.getEntryFile',
40
41
  getExport: 'gestorDocumental.caseFile.getExport',
42
+ getIntegratedPdf: 'gestorDocumental.caseFile.getIntegratedPdf',
41
43
  createShareLink: 'gestorDocumental.caseFile.createShareLink',
42
44
  getShareLinks: 'gestorDocumental.caseFile.getShareLinks',
43
45
  revokeShareLink: 'gestorDocumental.caseFile.revokeShareLink',
@@ -189,6 +191,15 @@ export interface CaseFileContract {
189
191
  payload: Pick<CaseFileEntity, 'id'> & CaseFileActorPayload;
190
192
  response: CaseFileExportResponseEntity;
191
193
  };
194
+ /**
195
+ * PDF integrador: todas las actuaciones en un solo PDF, en orden de incorporación, con portada e índice. Queda en la
196
+ * trazabilidad y en el registro de accesos, como la exportación. Sin el sello de copia autorizada (necesita firma
197
+ * desatendida).
198
+ */
199
+ [CaseFilePatterns.getIntegratedPdf]: {
200
+ payload: Pick<CaseFileEntity, 'id'> & CaseFileActorPayload;
201
+ response: DocumentPublicFileResponseEntity;
202
+ };
192
203
  /** Crea un enlace temporal: solo su responsable. El token viaja solo en esta respuesta. */
193
204
  [CaseFilePatterns.createShareLink]: {
194
205
  payload: Pick<CaseFileEntity, 'id'> & CaseFileShareLinkPayload & { actor: DocumentActor };
@@ -73,6 +73,8 @@ export interface CaseFileEntryResponseEntity {
73
73
  sha256: CaseFileEntryEntity['sha256'];
74
74
  size: CaseFileEntryEntity['size'];
75
75
  hasAdvancedSignature: CaseFileEntryEntity['hasAdvancedSignature'];
76
+ /** Conformidad PDF/A que declara el archivo («PDF/A-2B»), «PDF», o `null` si no es un PDF o no se revisó. */
77
+ fileFormat: CaseFileEntryEntity['fileFormat'];
76
78
  /** Revisión de sus firmas al incorporarlo, en los archivos externos en PDF. */
77
79
  signatureCheck: PdfSignatureReportEntity | null;
78
80
  incorporatedByEmployeeId: CaseFileEntryEntity['incorporatedByEmployeeId'];
@@ -163,6 +163,11 @@ export interface DocumentGetByIdResponseEntity {
163
163
  keywords: DocumentEntity['keywords'];
164
164
  accessLevel: DocumentEntity['accessLevel'];
165
165
  hasSensitiveData: DocumentEntity['hasSensitiveData'];
166
+ /**
167
+ * Formato del archivo vigente: la conformidad PDF/A que declara («PDF/A-2B») o «PDF». `null` si no se revisó (los
168
+ * documentos anteriores a esta revisión, o aún sin firmar).
169
+ */
170
+ fileFormat: DocumentEntity['fileFormat'];
166
171
  status: DocumentEntity['status'];
167
172
  correlative: DocumentEntity['correlative'];
168
173
  correlativeYear: DocumentEntity['correlativeYear'];
@@ -5,6 +5,16 @@
5
5
  export type PdfSignatureStatus = 'Valid' | 'Invalid' | 'Indeterminate';
6
6
 
7
7
  /** Una firma electrónica de un PDF, como se pudo comprobar. */
8
+ /** Si el certificado de una firma fue revocado, según su emisor (OCSP o lista de revocación). */
9
+ export interface PdfRevocationEntity {
10
+ /** `NotChecked`: la revisión está desactivada en el servidor. `Unknown`: no se pudo confirmar. */
11
+ status: 'Good' | 'Revoked' | 'Unknown' | 'NotChecked';
12
+ source: 'OCSP' | 'CRL' | null;
13
+ revokedAt: string | null;
14
+ /** Por qué no se pudo confirmar. */
15
+ detail: string | null;
16
+ }
17
+
8
18
  export interface PdfSignatureEntity {
9
19
  /** Orden en el archivo: 1 es la primera. */
10
20
  index: number;
@@ -32,6 +42,8 @@ export interface PdfSignatureEntity {
32
42
  certificateValidAtSigning: boolean | null;
33
43
  /** Cadena hasta un certificado raíz de confianza. `null` si no hay raíces configuradas. */
34
44
  trusted: boolean | null;
45
+ /** Si el certificado fue revocado. Falta en las revisiones anteriores a que se consultara. */
46
+ revocation?: PdfRevocationEntity;
35
47
  status: PdfSignatureStatus;
36
48
  /** Lo que no cuadra o no se pudo confirmar, en palabras. */
37
49
  problems: string[];