@knowledge-stack/ksapi 3.7.0 → 3.8.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 (62) hide show
  1. package/.openapi-generator/FILES +0 -4
  2. package/README.md +2 -4
  3. package/dist/apis/DocumentsApi.d.ts +4 -7
  4. package/dist/apis/DocumentsApi.js +2 -5
  5. package/dist/apis/SystemJobsApi.d.ts +4 -4
  6. package/dist/apis/SystemJobsApi.js +2 -2
  7. package/dist/esm/apis/DocumentsApi.d.ts +4 -7
  8. package/dist/esm/apis/DocumentsApi.js +2 -5
  9. package/dist/esm/apis/SystemJobsApi.d.ts +4 -4
  10. package/dist/esm/apis/SystemJobsApi.js +2 -2
  11. package/dist/esm/models/DocumentVersionMetadata.d.ts +0 -7
  12. package/dist/esm/models/DocumentVersionMetadata.js +0 -3
  13. package/dist/esm/models/DocumentVersionMetadataUpdate.d.ts +0 -7
  14. package/dist/esm/models/DocumentVersionMetadataUpdate.js +0 -3
  15. package/dist/esm/models/IngestDocumentResponse.d.ts +0 -18
  16. package/dist/esm/models/IngestDocumentResponse.js +0 -6
  17. package/dist/esm/models/PipelineState.d.ts +8 -1
  18. package/dist/esm/models/PipelineState.js +3 -0
  19. package/dist/esm/models/UploadFormat.d.ts +6 -0
  20. package/dist/esm/models/UploadFormat.js +4 -0
  21. package/dist/esm/models/index.d.ts +0 -2
  22. package/dist/esm/models/index.js +0 -2
  23. package/dist/models/DocumentVersionMetadata.d.ts +0 -7
  24. package/dist/models/DocumentVersionMetadata.js +0 -3
  25. package/dist/models/DocumentVersionMetadataUpdate.d.ts +0 -7
  26. package/dist/models/DocumentVersionMetadataUpdate.js +0 -3
  27. package/dist/models/IngestDocumentResponse.d.ts +0 -18
  28. package/dist/models/IngestDocumentResponse.js +0 -6
  29. package/dist/models/PipelineState.d.ts +8 -1
  30. package/dist/models/PipelineState.js +3 -0
  31. package/dist/models/UploadFormat.d.ts +6 -0
  32. package/dist/models/UploadFormat.js +4 -0
  33. package/dist/models/index.d.ts +0 -2
  34. package/dist/models/index.js +0 -2
  35. package/docs/DocumentVersionMetadata.md +0 -2
  36. package/docs/DocumentVersionMetadataUpdate.md +0 -2
  37. package/docs/DocumentsApi.md +2 -5
  38. package/docs/IngestDocumentResponse.md +0 -6
  39. package/docs/PipelineState.md +2 -0
  40. package/docs/SystemJobsApi.md +1 -1
  41. package/docs/UploadFormat.md +2 -0
  42. package/package.json +1 -1
  43. package/src/apis/DocumentsApi.ts +4 -11
  44. package/src/apis/SystemJobsApi.ts +4 -4
  45. package/src/models/DocumentVersionMetadata.ts +0 -15
  46. package/src/models/DocumentVersionMetadataUpdate.ts +0 -15
  47. package/src/models/IngestDocumentResponse.ts +0 -24
  48. package/src/models/PipelineState.ts +16 -1
  49. package/src/models/UploadFormat.ts +9 -0
  50. package/src/models/index.ts +0 -2
  51. package/dist/esm/models/EmailMetadata.d.ts +0 -119
  52. package/dist/esm/models/EmailMetadata.js +0 -65
  53. package/dist/esm/models/EmailParty.d.ts +0 -53
  54. package/dist/esm/models/EmailParty.js +0 -46
  55. package/dist/models/EmailMetadata.d.ts +0 -119
  56. package/dist/models/EmailMetadata.js +0 -73
  57. package/dist/models/EmailParty.d.ts +0 -53
  58. package/dist/models/EmailParty.js +0 -54
  59. package/docs/EmailMetadata.md +0 -57
  60. package/docs/EmailParty.md +0 -37
  61. package/src/models/EmailMetadata.ts +0 -183
  62. package/src/models/EmailParty.ts +0 -91
@@ -134,8 +134,6 @@ export * from './DocxParagraphAnchorInput';
134
134
  export * from './DocxParagraphAnchorOutput';
135
135
  export * from './DownloadArtifact';
136
136
  export * from './EditMemoryChunkRequest';
137
- export * from './EmailMetadata';
138
- export * from './EmailParty';
139
137
  export * from './EmailSentResponse';
140
138
  export * from './EmailVerificationRequest';
141
139
  export * from './EnrichedCitation';
@@ -12,7 +12,6 @@
12
12
  import type { PipelineState } from './PipelineState';
13
13
  import type { XlsxCellAnchorOutputOrDocxParagraphAnchorOutput } from './XlsxCellAnchorOutputOrDocxParagraphAnchorOutput';
14
14
  import type { InformationStatistics } from './InformationStatistics';
15
- import type { EmailMetadata } from './EmailMetadata';
16
15
  /**
17
16
  * Schema for document_version.system_metadata JSONB field.
18
17
  *
@@ -112,12 +111,6 @@ export interface DocumentVersionMetadata {
112
111
  * @memberof DocumentVersionMetadata
113
112
  */
114
113
  segmentCount?: number | null;
115
- /**
116
- * Structured email headers; null for non-email documents
117
- * @type {EmailMetadata}
118
- * @memberof DocumentVersionMetadata
119
- */
120
- email?: EmailMetadata | null;
121
114
  /**
122
115
  * Total formula cells in the workbook (XLSX only)
123
116
  * @type {number}
@@ -22,7 +22,6 @@ exports.DocumentVersionMetadataToJSONTyped = DocumentVersionMetadataToJSONTyped;
22
22
  const PipelineState_1 = require("./PipelineState");
23
23
  const XlsxCellAnchorOutputOrDocxParagraphAnchorOutput_1 = require("./XlsxCellAnchorOutputOrDocxParagraphAnchorOutput");
24
24
  const InformationStatistics_1 = require("./InformationStatistics");
25
- const EmailMetadata_1 = require("./EmailMetadata");
26
25
  exports.DocumentVersionMetadataPropertyValidationAttributesMap = {};
27
26
  /**
28
27
  * Check if a given object implements the DocumentVersionMetadata interface.
@@ -52,7 +51,6 @@ function DocumentVersionMetadataFromJSONTyped(json, ignoreDiscriminator) {
52
51
  'durationMs': json['duration_ms'] == null ? undefined : json['duration_ms'],
53
52
  'language': json['language'] == null ? undefined : json['language'],
54
53
  'segmentCount': json['segment_count'] == null ? undefined : json['segment_count'],
55
- 'email': json['email'] == null ? undefined : (0, EmailMetadata_1.EmailMetadataFromJSON)(json['email']),
56
54
  'totalFormulas': json['total_formulas'] == null ? undefined : json['total_formulas'],
57
55
  'xlsxParseResultS3': json['xlsx_parse_result_s3'] == null ? undefined : json['xlsx_parse_result_s3'],
58
56
  'xlsxNamedRanges': json['xlsx_named_ranges'] == null ? undefined : json['xlsx_named_ranges'],
@@ -89,7 +87,6 @@ function DocumentVersionMetadataToJSONTyped(value, ignoreDiscriminator = false)
89
87
  'duration_ms': value['durationMs'],
90
88
  'language': value['language'],
91
89
  'segment_count': value['segmentCount'],
92
- 'email': (0, EmailMetadata_1.EmailMetadataToJSON)(value['email']),
93
90
  'total_formulas': value['totalFormulas'],
94
91
  'xlsx_parse_result_s3': value['xlsxParseResultS3'],
95
92
  'xlsx_named_ranges': value['xlsxNamedRanges'],
@@ -12,7 +12,6 @@
12
12
  import type { PipelineState } from './PipelineState';
13
13
  import type { XlsxCellAnchorInputOrDocxParagraphAnchorInput } from './XlsxCellAnchorInputOrDocxParagraphAnchorInput';
14
14
  import type { InformationStatistics } from './InformationStatistics';
15
- import type { EmailMetadata } from './EmailMetadata';
16
15
  /**
17
16
  * Partial update schema for document version metadata.
18
17
  *
@@ -124,12 +123,6 @@ export interface DocumentVersionMetadataUpdate {
124
123
  * @memberof DocumentVersionMetadataUpdate
125
124
  */
126
125
  segmentCount?: number | null;
127
- /**
128
- *
129
- * @type {EmailMetadata}
130
- * @memberof DocumentVersionMetadataUpdate
131
- */
132
- email?: EmailMetadata | null;
133
126
  /**
134
127
  *
135
128
  * @type {number}
@@ -22,7 +22,6 @@ exports.DocumentVersionMetadataUpdateToJSONTyped = DocumentVersionMetadataUpdate
22
22
  const PipelineState_1 = require("./PipelineState");
23
23
  const XlsxCellAnchorInputOrDocxParagraphAnchorInput_1 = require("./XlsxCellAnchorInputOrDocxParagraphAnchorInput");
24
24
  const InformationStatistics_1 = require("./InformationStatistics");
25
- const EmailMetadata_1 = require("./EmailMetadata");
26
25
  exports.DocumentVersionMetadataUpdatePropertyValidationAttributesMap = {};
27
26
  /**
28
27
  * Check if a given object implements the DocumentVersionMetadataUpdate interface.
@@ -55,7 +54,6 @@ function DocumentVersionMetadataUpdateFromJSONTyped(json, ignoreDiscriminator) {
55
54
  'durationMs': json['duration_ms'] == null ? undefined : json['duration_ms'],
56
55
  'language': json['language'] == null ? undefined : json['language'],
57
56
  'segmentCount': json['segment_count'] == null ? undefined : json['segment_count'],
58
- 'email': json['email'] == null ? undefined : (0, EmailMetadata_1.EmailMetadataFromJSON)(json['email']),
59
57
  'totalFormulas': json['total_formulas'] == null ? undefined : json['total_formulas'],
60
58
  'xlsxParseResultS3': json['xlsx_parse_result_s3'] == null ? undefined : json['xlsx_parse_result_s3'],
61
59
  'xlsxNamedRanges': json['xlsx_named_ranges'] == null ? undefined : json['xlsx_named_ranges'],
@@ -94,7 +92,6 @@ function DocumentVersionMetadataUpdateToJSONTyped(value, ignoreDiscriminator = f
94
92
  'duration_ms': value['durationMs'],
95
93
  'language': value['language'],
96
94
  'segment_count': value['segmentCount'],
97
- 'email': (0, EmailMetadata_1.EmailMetadataToJSON)(value['email']),
98
95
  'total_formulas': value['totalFormulas'],
99
96
  'xlsx_parse_result_s3': value['xlsxParseResultS3'],
100
97
  'xlsx_named_ranges': value['xlsxNamedRanges'],
@@ -33,24 +33,6 @@ export interface IngestDocumentResponse {
33
33
  * @memberof IngestDocumentResponse
34
34
  */
35
35
  documentVersionId: string;
36
- /**
37
- * Folder created to hold this upload and its members. Set for email uploads, which always nest inside their own folder; null for every other type, which ingest directly into path_part_id.
38
- * @type {string}
39
- * @memberof IngestDocumentResponse
40
- */
41
- folderId?: string | null;
42
- /**
43
- * Members found on an email upload, each becoming its own document beside the email: the attachments of a single message, or the messages of an .mbox archive (whose own attachments are then expanded one level deeper). Always 0 for non-email uploads. Null for a .pst, whose members are enumerated only by the worker fan-out — poll attachment_workflow_id for per-member outcomes.
44
- * @type {number}
45
- * @memberof IngestDocumentResponse
46
- */
47
- attachmentCount?: number | null;
48
- /**
49
- * Fan-out workflow ingesting the members. Poll GET /v1/system-jobs/zip-ingestions/{id} for per-member outcomes. Null when the upload had no ingestible members.
50
- * @type {string}
51
- * @memberof IngestDocumentResponse
52
- */
53
- attachmentWorkflowId?: string | null;
54
36
  }
55
37
  export declare const IngestDocumentResponsePropertyValidationAttributesMap: {
56
38
  [property: string]: {
@@ -43,9 +43,6 @@ function IngestDocumentResponseFromJSONTyped(json, ignoreDiscriminator) {
43
43
  'workflowId': json['workflow_id'],
44
44
  'documentId': json['document_id'],
45
45
  'documentVersionId': json['document_version_id'],
46
- 'folderId': json['folder_id'] == null ? undefined : json['folder_id'],
47
- 'attachmentCount': json['attachment_count'] == null ? undefined : json['attachment_count'],
48
- 'attachmentWorkflowId': json['attachment_workflow_id'] == null ? undefined : json['attachment_workflow_id'],
49
46
  };
50
47
  }
51
48
  function IngestDocumentResponseToJSON(json) {
@@ -59,8 +56,5 @@ function IngestDocumentResponseToJSONTyped(value, ignoreDiscriminator = false) {
59
56
  'workflow_id': value['workflowId'],
60
57
  'document_id': value['documentId'],
61
58
  'document_version_id': value['documentVersionId'],
62
- 'folder_id': value['folderId'],
63
- 'attachment_count': value['attachmentCount'],
64
- 'attachment_workflow_id': value['attachmentWorkflowId'],
65
59
  };
66
60
  }
@@ -10,6 +10,7 @@
10
10
  * Do not edit the class manually.
11
11
  */
12
12
  import type { PipelineStatus } from './PipelineStatus';
13
+ import type { ImageTaxonomy } from './ImageTaxonomy';
13
14
  import type { IngestionMode } from './IngestionMode';
14
15
  import type { ChunkType } from './ChunkType';
15
16
  /**
@@ -37,7 +38,7 @@ export interface PipelineState {
37
38
  */
38
39
  lastStateUpdateTimestamp?: Date | null;
39
40
  /**
40
- * Name of the last activity that executed (e.g., 'document_preparation')
41
+ * Name of the last activity that executed (e.g., 'pdf_preparation_activity')
41
42
  * @type {string}
42
43
  * @memberof PipelineState
43
44
  */
@@ -78,6 +79,12 @@ export interface PipelineState {
78
79
  * @memberof PipelineState
79
80
  */
80
81
  chunkType?: ChunkType;
82
+ /**
83
+ *
84
+ * @type {ImageTaxonomy}
85
+ * @memberof PipelineState
86
+ */
87
+ secondaryTaxonomy?: ImageTaxonomy;
81
88
  }
82
89
  export declare const PipelineStatePropertyValidationAttributesMap: {
83
90
  [property: string]: {
@@ -20,6 +20,7 @@ exports.PipelineStateFromJSONTyped = PipelineStateFromJSONTyped;
20
20
  exports.PipelineStateToJSON = PipelineStateToJSON;
21
21
  exports.PipelineStateToJSONTyped = PipelineStateToJSONTyped;
22
22
  const PipelineStatus_1 = require("./PipelineStatus");
23
+ const ImageTaxonomy_1 = require("./ImageTaxonomy");
23
24
  const IngestionMode_1 = require("./IngestionMode");
24
25
  const ChunkType_1 = require("./ChunkType");
25
26
  exports.PipelineStatePropertyValidationAttributesMap = {};
@@ -49,6 +50,7 @@ function PipelineStateFromJSONTyped(json, ignoreDiscriminator) {
49
50
  'pageDpi': json['page_dpi'] == null ? undefined : json['page_dpi'],
50
51
  'ingestionMode': json['ingestion_mode'] == null ? undefined : (0, IngestionMode_1.IngestionModeFromJSON)(json['ingestion_mode']),
51
52
  'chunkType': json['chunk_type'] == null ? undefined : (0, ChunkType_1.ChunkTypeFromJSON)(json['chunk_type']),
53
+ 'secondaryTaxonomy': json['secondary_taxonomy'] == null ? undefined : (0, ImageTaxonomy_1.ImageTaxonomyFromJSON)(json['secondary_taxonomy']),
52
54
  };
53
55
  }
54
56
  function PipelineStateToJSON(json) {
@@ -69,5 +71,6 @@ function PipelineStateToJSONTyped(value, ignoreDiscriminator = false) {
69
71
  'page_dpi': value['pageDpi'],
70
72
  'ingestion_mode': (0, IngestionMode_1.IngestionModeToJSON)(value['ingestionMode']),
71
73
  'chunk_type': (0, ChunkType_1.ChunkTypeToJSON)(value['chunkType']),
74
+ 'secondary_taxonomy': (0, ImageTaxonomy_1.ImageTaxonomyToJSON)(value['secondaryTaxonomy']),
72
75
  };
73
76
  }
@@ -27,6 +27,12 @@ export interface UploadFormat {
27
27
  * @memberof UploadFormat
28
28
  */
29
29
  contentType: string;
30
+ /**
31
+ * Largest file of this format the buffered uploads accept (new document, new version, ZIP member, workflow-run file). A new audio/video document uses the resumable upload, capped at upload.max_media_bytes
32
+ * @type {number}
33
+ * @memberof UploadFormat
34
+ */
35
+ maxBytes: number;
30
36
  }
31
37
  export declare const UploadFormatPropertyValidationAttributesMap: {
32
38
  [property: string]: {
@@ -28,6 +28,8 @@ function instanceOfUploadFormat(value) {
28
28
  return false;
29
29
  if (!('contentType' in value) || value['contentType'] === undefined)
30
30
  return false;
31
+ if (!('maxBytes' in value) || value['maxBytes'] === undefined)
32
+ return false;
31
33
  return true;
32
34
  }
33
35
  function UploadFormatFromJSON(json) {
@@ -40,6 +42,7 @@ function UploadFormatFromJSONTyped(json, ignoreDiscriminator) {
40
42
  return {
41
43
  'extension': json['extension'],
42
44
  'contentType': json['content_type'],
45
+ 'maxBytes': json['max_bytes'],
43
46
  };
44
47
  }
45
48
  function UploadFormatToJSON(json) {
@@ -52,5 +55,6 @@ function UploadFormatToJSONTyped(value, ignoreDiscriminator = false) {
52
55
  return {
53
56
  'extension': value['extension'],
54
57
  'content_type': value['contentType'],
58
+ 'max_bytes': value['maxBytes'],
55
59
  };
56
60
  }
@@ -132,8 +132,6 @@ export * from './DocxParagraphAnchorInput';
132
132
  export * from './DocxParagraphAnchorOutput';
133
133
  export * from './DownloadArtifact';
134
134
  export * from './EditMemoryChunkRequest';
135
- export * from './EmailMetadata';
136
- export * from './EmailParty';
137
135
  export * from './EmailSentResponse';
138
136
  export * from './EmailVerificationRequest';
139
137
  export * from './EnrichedCitation';
@@ -150,8 +150,6 @@ __exportStar(require("./DocxParagraphAnchorInput"), exports);
150
150
  __exportStar(require("./DocxParagraphAnchorOutput"), exports);
151
151
  __exportStar(require("./DownloadArtifact"), exports);
152
152
  __exportStar(require("./EditMemoryChunkRequest"), exports);
153
- __exportStar(require("./EmailMetadata"), exports);
154
- __exportStar(require("./EmailParty"), exports);
155
153
  __exportStar(require("./EmailSentResponse"), exports);
156
154
  __exportStar(require("./EmailVerificationRequest"), exports);
157
155
  __exportStar(require("./EnrichedCitation"), exports);
@@ -21,7 +21,6 @@ Name | Type
21
21
  `durationMs` | number
22
22
  `language` | string
23
23
  `segmentCount` | number
24
- `email` | [EmailMetadata](EmailMetadata.md)
25
24
  `totalFormulas` | number
26
25
  `xlsxParseResultS3` | string
27
26
  `xlsxNamedRanges` | Array<{ [key: string]: any; }>
@@ -56,7 +55,6 @@ const example = {
56
55
  "durationMs": null,
57
56
  "language": null,
58
57
  "segmentCount": null,
59
- "email": null,
60
58
  "totalFormulas": null,
61
59
  "xlsxParseResultS3": null,
62
60
  "xlsxNamedRanges": null,
@@ -24,7 +24,6 @@ Name | Type
24
24
  `durationMs` | number
25
25
  `language` | string
26
26
  `segmentCount` | number
27
- `email` | [EmailMetadata](EmailMetadata.md)
28
27
  `totalFormulas` | number
29
28
  `xlsxParseResultS3` | string
30
29
  `xlsxNamedRanges` | Array<{ [key: string]: any; }>
@@ -61,7 +60,6 @@ const example = {
61
60
  "durationMs": null,
62
61
  "language": null,
63
62
  "segmentCount": null,
64
- "email": null,
65
63
  "totalFormulas": null,
66
64
  "xlsxParseResultS3": null,
67
65
  "xlsxNamedRanges": null,
@@ -627,7 +627,7 @@ example().catch(console.error);
627
627
 
628
628
  ## ingestDocument
629
629
 
630
- > IngestDocumentResponse ingestDocument(file, pathPartId, name, tagIds, idempotencyKey, emailNestingDepth, ingestionMode, chunkType, secondaryTaxonomy, pageDpi, workflowRunId, workflowDefinitionId)
630
+ > IngestDocumentResponse ingestDocument(file, pathPartId, name, tagIds, idempotencyKey, ingestionMode, chunkType, secondaryTaxonomy, pageDpi, workflowRunId, workflowDefinitionId)
631
631
 
632
632
  Ingest Document Handler
633
633
 
@@ -663,8 +663,6 @@ async function example() {
663
663
  tagIds: ...,
664
664
  // string | Opt-in key: a repeat with the same key at the same (parent, name) replays the existing document instead of a 409. (optional)
665
665
  idempotencyKey: idempotencyKey_example,
666
- // number | Internal: set by the email member fan-out when a nested email re-enters this endpoint. Leave at 0 for direct uploads. (optional)
667
- emailNestingDepth: 56,
668
666
  // IngestionMode (optional)
669
667
  ingestionMode: ...,
670
668
  // ChunkType (optional)
@@ -701,7 +699,6 @@ example().catch(console.error);
701
699
  | **name** | `string` | Document name (defaults to filename) | [Optional] [Defaults to `undefined`] |
702
700
  | **tagIds** | `Array<string>` | Tag IDs applied to the created document. | [Optional] |
703
701
  | **idempotencyKey** | `string` | Opt-in key: a repeat with the same key at the same (parent, name) replays the existing document instead of a 409. | [Optional] [Defaults to `undefined`] |
704
- | **emailNestingDepth** | `number` | Internal: set by the email member fan-out when a nested email re-enters this endpoint. Leave at 0 for direct uploads. | [Optional] [Defaults to `0`] |
705
702
  | **ingestionMode** | `IngestionMode` | | [Optional] [Defaults to `undefined`] [Enum: high_accuracy, standard, single_chunk, media] |
706
703
  | **chunkType** | `ChunkType` | | [Optional] [Defaults to `undefined`] [Enum: TEXT, TABLE, IMAGE, HTML, UNKNOWN] |
707
704
  | **secondaryTaxonomy** | `ImageTaxonomy` | | [Optional] [Defaults to `undefined`] [Enum: picture, slide, flowchart] |
@@ -739,7 +736,7 @@ example().catch(console.error);
739
736
 
740
737
  Ingest Document Version Handler
741
738
 
742
- Upload a new file for an existing document, creating a new version and triggering ingestion. Requires an active document checkout held by the caller. Acquire one via &#x60;&#x60;POST /v1/documents/{id}/checkout&#x60;&#x60; first and release it after; otherwise this returns 409 Conflict (\&quot;A document checkout is required to edit this document.\&quot;). Creates a new document version (incrementing the highest version number), uploads the file to S3, and starts the ingestion workflow. Upon successful ingestion, the new version is automatically activated (set as the document\&#39;s active_version) and the old version\&#39;s Qdrant points are deactivated. Returns 201 immediately with the Temporal &#x60;&#x60;workflow_id&#x60;&#x60;. Ingestion runs in the background — poll &#x60;&#x60;GET /v1/system-jobs/document_versions/{workflow_id}&#x60;&#x60; (also given in the &#x60;&#x60;Location&#x60;&#x60; header) until &#x60;&#x60;status&#x60;&#x60; is terminal.
739
+ Upload a new file for an existing document, creating a new version and triggering ingestion. Requires an active document checkout held by the caller. Acquire one via &#x60;&#x60;POST /v1/documents/{id}/checkout&#x60;&#x60; first and release it after; otherwise this returns 409 Conflict (\&quot;A document checkout is required to edit this document.\&quot;). The file must be the document\&#39;s type (a PDF document takes only PDF versions; &#x60;&#x60;.md&#x60;&#x60; and &#x60;&#x60;.txt&#x60;&#x60; are both PLAINTEXT); any other type is a 400. Creates a new document version (incrementing the highest version number), uploads the file to S3, and starts the ingestion workflow. Upon successful ingestion, the new version is automatically activated (set as the document\&#39;s active_version) and the old version\&#39;s Qdrant points are deactivated. Returns 201 immediately with the Temporal &#x60;&#x60;workflow_id&#x60;&#x60;. Ingestion runs in the background — poll &#x60;&#x60;GET /v1/system-jobs/document_versions/{workflow_id}&#x60;&#x60; (also given in the &#x60;&#x60;Location&#x60;&#x60; header) until &#x60;&#x60;status&#x60;&#x60; is terminal.
743
740
 
744
741
  ### Example
745
742
 
@@ -10,9 +10,6 @@ Name | Type
10
10
  `workflowId` | string
11
11
  `documentId` | string
12
12
  `documentVersionId` | string
13
- `folderId` | string
14
- `attachmentCount` | number
15
- `attachmentWorkflowId` | string
16
13
 
17
14
  ## Example
18
15
 
@@ -24,9 +21,6 @@ const example = {
24
21
  "workflowId": null,
25
22
  "documentId": null,
26
23
  "documentVersionId": null,
27
- "folderId": null,
28
- "attachmentCount": null,
29
- "attachmentWorkflowId": null,
30
24
  } satisfies IngestDocumentResponse
31
25
 
32
26
  console.log(example)
@@ -17,6 +17,7 @@ Name | Type
17
17
  `pageDpi` | number
18
18
  `ingestionMode` | [IngestionMode](IngestionMode.md)
19
19
  `chunkType` | [ChunkType](ChunkType.md)
20
+ `secondaryTaxonomy` | [ImageTaxonomy](ImageTaxonomy.md)
20
21
 
21
22
  ## Example
22
23
 
@@ -35,6 +36,7 @@ const example = {
35
36
  "pageDpi": null,
36
37
  "ingestionMode": null,
37
38
  "chunkType": null,
39
+ "secondaryTaxonomy": null,
38
40
  } satisfies PipelineState
39
41
 
40
42
  console.log(example)
@@ -319,7 +319,7 @@ example().catch(console.error);
319
319
 
320
320
  Get Zip Ingestion Status Handler
321
321
 
322
- Get a fan-out\&#39;s live status + per-member outcomes. Serves both container fan-outs: a ZIP archive\&#39;s members and an email\&#39;s attachments. Both expose the same &#x60;&#x60;results&#x60;&#x60; query, so one endpoint covers them rather than duplicating the tenant check and hydration. Tenant-scoped via the TenantId search attribute (no per-path can_read check — intentionally consistent with the sibling generic Temporal endpoints below; the opaque workflow_id is only handed to the uploader, who had can_write on the target). The per-member results come from the workflow\&#39;s &#x60;&#x60;results&#x60;&#x60; query (served from retained history), so once Temporal retention expires this 404s.
322
+ Get a ZIP fan-out\&#39;s live status + per-member outcomes. Tenant-scoped via the TenantId search attribute (no per-path can_read check — intentionally consistent with the sibling generic Temporal endpoints below; the opaque workflow_id is only handed to the uploader, who had can_write on the target). The per-member results come from the workflow\&#39;s &#x60;&#x60;results&#x60;&#x60; query (served from retained history), so once Temporal retention expires this 404s.
323
323
 
324
324
  ### Example
325
325
 
@@ -8,6 +8,7 @@ Name | Type
8
8
  ------------ | -------------
9
9
  `extension` | string
10
10
  `contentType` | string
11
+ `maxBytes` | number
11
12
 
12
13
  ## Example
13
14
 
@@ -18,6 +19,7 @@ import type { UploadFormat } from '@knowledge-stack/ksapi'
18
19
  const example = {
19
20
  "extension": null,
20
21
  "contentType": null,
22
+ "maxBytes": null,
21
23
  } satisfies UploadFormat
22
24
 
23
25
  console.log(example)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knowledge-stack/ksapi",
3
- "version": "3.7.0",
3
+ "version": "3.8.0",
4
4
  "description": "OpenAPI client for @knowledge-stack/ksapi",
5
5
  "author": "OpenAPI-Generator",
6
6
  "repository": {
@@ -122,7 +122,6 @@ export interface IngestDocumentRequest {
122
122
  name?: string | null;
123
123
  tagIds?: Array<string>;
124
124
  idempotencyKey?: string | null;
125
- emailNestingDepth?: number;
126
125
  ingestionMode?: IngestionMode;
127
126
  chunkType?: ChunkType;
128
127
  secondaryTaxonomy?: ImageTaxonomy;
@@ -386,7 +385,6 @@ export interface DocumentsApiInterface {
386
385
  * @param {string} [name] Document name (defaults to filename)
387
386
  * @param {Array<string>} [tagIds] Tag IDs applied to the created document.
388
387
  * @param {string} [idempotencyKey] Opt-in key: a repeat with the same key at the same (parent, name) replays the existing document instead of a 409.
389
- * @param {number} [emailNestingDepth] Internal: set by the email member fan-out when a nested email re-enters this endpoint. Leave at 0 for direct uploads.
390
388
  * @param {IngestionMode} [ingestionMode]
391
389
  * @param {ChunkType} [chunkType]
392
390
  * @param {ImageTaxonomy} [secondaryTaxonomy]
@@ -406,7 +404,6 @@ export interface DocumentsApiInterface {
406
404
  * @param {string} [name] Document name (defaults to filename)
407
405
  * @param {Array<string>} [tagIds] Tag IDs applied to the created document.
408
406
  * @param {string} [idempotencyKey] Opt-in key: a repeat with the same key at the same (parent, name) replays the existing document instead of a 409.
409
- * @param {number} [emailNestingDepth] Internal: set by the email member fan-out when a nested email re-enters this endpoint. Leave at 0 for direct uploads.
410
407
  * @param {IngestionMode} [ingestionMode]
411
408
  * @param {ChunkType} [chunkType]
412
409
  * @param {ImageTaxonomy} [secondaryTaxonomy]
@@ -441,7 +438,7 @@ export interface DocumentsApiInterface {
441
438
  ingestDocumentVersionRequestOpts(requestParameters: IngestDocumentVersionRequest): Promise<runtime.RequestOpts>;
442
439
 
443
440
  /**
444
- * Upload a new file for an existing document, creating a new version and triggering ingestion. Requires an active document checkout held by the caller. Acquire one via ``POST /v1/documents/{id}/checkout`` first and release it after; otherwise this returns 409 Conflict (\"A document checkout is required to edit this document.\"). Creates a new document version (incrementing the highest version number), uploads the file to S3, and starts the ingestion workflow. Upon successful ingestion, the new version is automatically activated (set as the document\'s active_version) and the old version\'s Qdrant points are deactivated. Returns 201 immediately with the Temporal ``workflow_id``. Ingestion runs in the background — poll ``GET /v1/system-jobs/document_versions/{workflow_id}`` (also given in the ``Location`` header) until ``status`` is terminal.
441
+ * Upload a new file for an existing document, creating a new version and triggering ingestion. Requires an active document checkout held by the caller. Acquire one via ``POST /v1/documents/{id}/checkout`` first and release it after; otherwise this returns 409 Conflict (\"A document checkout is required to edit this document.\"). The file must be the document\'s type (a PDF document takes only PDF versions; ``.md`` and ``.txt`` are both PLAINTEXT); any other type is a 400. Creates a new document version (incrementing the highest version number), uploads the file to S3, and starts the ingestion workflow. Upon successful ingestion, the new version is automatically activated (set as the document\'s active_version) and the old version\'s Qdrant points are deactivated. Returns 201 immediately with the Temporal ``workflow_id``. Ingestion runs in the background — poll ``GET /v1/system-jobs/document_versions/{workflow_id}`` (also given in the ``Location`` header) until ``status`` is terminal.
445
442
  * @summary Ingest Document Version Handler
446
443
  * @param {string} documentId Document ID
447
444
  * @param {Blob} file
@@ -458,7 +455,7 @@ export interface DocumentsApiInterface {
458
455
  ingestDocumentVersionRaw(requestParameters: IngestDocumentVersionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<IngestDocumentResponse>>;
459
456
 
460
457
  /**
461
- * Upload a new file for an existing document, creating a new version and triggering ingestion. Requires an active document checkout held by the caller. Acquire one via ``POST /v1/documents/{id}/checkout`` first and release it after; otherwise this returns 409 Conflict (\"A document checkout is required to edit this document.\"). Creates a new document version (incrementing the highest version number), uploads the file to S3, and starts the ingestion workflow. Upon successful ingestion, the new version is automatically activated (set as the document\'s active_version) and the old version\'s Qdrant points are deactivated. Returns 201 immediately with the Temporal ``workflow_id``. Ingestion runs in the background — poll ``GET /v1/system-jobs/document_versions/{workflow_id}`` (also given in the ``Location`` header) until ``status`` is terminal.
458
+ * Upload a new file for an existing document, creating a new version and triggering ingestion. Requires an active document checkout held by the caller. Acquire one via ``POST /v1/documents/{id}/checkout`` first and release it after; otherwise this returns 409 Conflict (\"A document checkout is required to edit this document.\"). The file must be the document\'s type (a PDF document takes only PDF versions; ``.md`` and ``.txt`` are both PLAINTEXT); any other type is a 400. Creates a new document version (incrementing the highest version number), uploads the file to S3, and starts the ingestion workflow. Upon successful ingestion, the new version is automatically activated (set as the document\'s active_version) and the old version\'s Qdrant points are deactivated. Returns 201 immediately with the Temporal ``workflow_id``. Ingestion runs in the background — poll ``GET /v1/system-jobs/document_versions/{workflow_id}`` (also given in the ``Location`` header) until ``status`` is terminal.
462
459
  * Ingest Document Version Handler
463
460
  */
464
461
  ingestDocumentVersion(requestParameters: IngestDocumentVersionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<IngestDocumentResponse>;
@@ -1126,10 +1123,6 @@ export class DocumentsApi extends runtime.BaseAPI implements DocumentsApiInterfa
1126
1123
  formParams.append('idempotency_key', requestParameters['idempotencyKey'] as any);
1127
1124
  }
1128
1125
 
1129
- if (requestParameters['emailNestingDepth'] != null) {
1130
- formParams.append('email_nesting_depth', requestParameters['emailNestingDepth'] as any);
1131
- }
1132
-
1133
1126
  if (requestParameters['ingestionMode'] != null) {
1134
1127
  formParams.append('ingestion_mode', requestParameters['ingestionMode'] as any);
1135
1128
  }
@@ -1274,7 +1267,7 @@ export class DocumentsApi extends runtime.BaseAPI implements DocumentsApiInterfa
1274
1267
  }
1275
1268
 
1276
1269
  /**
1277
- * Upload a new file for an existing document, creating a new version and triggering ingestion. Requires an active document checkout held by the caller. Acquire one via ``POST /v1/documents/{id}/checkout`` first and release it after; otherwise this returns 409 Conflict (\"A document checkout is required to edit this document.\"). Creates a new document version (incrementing the highest version number), uploads the file to S3, and starts the ingestion workflow. Upon successful ingestion, the new version is automatically activated (set as the document\'s active_version) and the old version\'s Qdrant points are deactivated. Returns 201 immediately with the Temporal ``workflow_id``. Ingestion runs in the background — poll ``GET /v1/system-jobs/document_versions/{workflow_id}`` (also given in the ``Location`` header) until ``status`` is terminal.
1270
+ * Upload a new file for an existing document, creating a new version and triggering ingestion. Requires an active document checkout held by the caller. Acquire one via ``POST /v1/documents/{id}/checkout`` first and release it after; otherwise this returns 409 Conflict (\"A document checkout is required to edit this document.\"). The file must be the document\'s type (a PDF document takes only PDF versions; ``.md`` and ``.txt`` are both PLAINTEXT); any other type is a 400. Creates a new document version (incrementing the highest version number), uploads the file to S3, and starts the ingestion workflow. Upon successful ingestion, the new version is automatically activated (set as the document\'s active_version) and the old version\'s Qdrant points are deactivated. Returns 201 immediately with the Temporal ``workflow_id``. Ingestion runs in the background — poll ``GET /v1/system-jobs/document_versions/{workflow_id}`` (also given in the ``Location`` header) until ``status`` is terminal.
1278
1271
  * Ingest Document Version Handler
1279
1272
  */
1280
1273
  async ingestDocumentVersionRaw(requestParameters: IngestDocumentVersionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<IngestDocumentResponse>> {
@@ -1285,7 +1278,7 @@ export class DocumentsApi extends runtime.BaseAPI implements DocumentsApiInterfa
1285
1278
  }
1286
1279
 
1287
1280
  /**
1288
- * Upload a new file for an existing document, creating a new version and triggering ingestion. Requires an active document checkout held by the caller. Acquire one via ``POST /v1/documents/{id}/checkout`` first and release it after; otherwise this returns 409 Conflict (\"A document checkout is required to edit this document.\"). Creates a new document version (incrementing the highest version number), uploads the file to S3, and starts the ingestion workflow. Upon successful ingestion, the new version is automatically activated (set as the document\'s active_version) and the old version\'s Qdrant points are deactivated. Returns 201 immediately with the Temporal ``workflow_id``. Ingestion runs in the background — poll ``GET /v1/system-jobs/document_versions/{workflow_id}`` (also given in the ``Location`` header) until ``status`` is terminal.
1281
+ * Upload a new file for an existing document, creating a new version and triggering ingestion. Requires an active document checkout held by the caller. Acquire one via ``POST /v1/documents/{id}/checkout`` first and release it after; otherwise this returns 409 Conflict (\"A document checkout is required to edit this document.\"). The file must be the document\'s type (a PDF document takes only PDF versions; ``.md`` and ``.txt`` are both PLAINTEXT); any other type is a 400. Creates a new document version (incrementing the highest version number), uploads the file to S3, and starts the ingestion workflow. Upon successful ingestion, the new version is automatically activated (set as the document\'s active_version) and the old version\'s Qdrant points are deactivated. Returns 201 immediately with the Temporal ``workflow_id``. Ingestion runs in the background — poll ``GET /v1/system-jobs/document_versions/{workflow_id}`` (also given in the ``Location`` header) until ``status`` is terminal.
1289
1282
  * Ingest Document Version Handler
1290
1283
  */
1291
1284
  async ingestDocumentVersion(requestParameters: IngestDocumentVersionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<IngestDocumentResponse> {
@@ -180,7 +180,7 @@ export interface SystemJobsApiInterface {
180
180
  getZipIngestionStatusRequestOpts(requestParameters: GetZipIngestionStatusRequest): Promise<runtime.RequestOpts>;
181
181
 
182
182
  /**
183
- * Get a fan-out\'s live status + per-member outcomes. Serves both container fan-outs: a ZIP archive\'s members and an email\'s attachments. Both expose the same ``results`` query, so one endpoint covers them rather than duplicating the tenant check and hydration. Tenant-scoped via the TenantId search attribute (no per-path can_read check — intentionally consistent with the sibling generic Temporal endpoints below; the opaque workflow_id is only handed to the uploader, who had can_write on the target). The per-member results come from the workflow\'s ``results`` query (served from retained history), so once Temporal retention expires this 404s.
183
+ * Get a ZIP fan-out\'s live status + per-member outcomes. Tenant-scoped via the TenantId search attribute (no per-path can_read check — intentionally consistent with the sibling generic Temporal endpoints below; the opaque workflow_id is only handed to the uploader, who had can_write on the target). The per-member results come from the workflow\'s ``results`` query (served from retained history), so once Temporal retention expires this 404s.
184
184
  * @summary Get Zip Ingestion Status Handler
185
185
  * @param {string} workflowId
186
186
  * @param {*} [options] Override http request option.
@@ -190,7 +190,7 @@ export interface SystemJobsApiInterface {
190
190
  getZipIngestionStatusRaw(requestParameters: GetZipIngestionStatusRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ZipIngestionStatusResponse>>;
191
191
 
192
192
  /**
193
- * Get a fan-out\'s live status + per-member outcomes. Serves both container fan-outs: a ZIP archive\'s members and an email\'s attachments. Both expose the same ``results`` query, so one endpoint covers them rather than duplicating the tenant check and hydration. Tenant-scoped via the TenantId search attribute (no per-path can_read check — intentionally consistent with the sibling generic Temporal endpoints below; the opaque workflow_id is only handed to the uploader, who had can_write on the target). The per-member results come from the workflow\'s ``results`` query (served from retained history), so once Temporal retention expires this 404s.
193
+ * Get a ZIP fan-out\'s live status + per-member outcomes. Tenant-scoped via the TenantId search attribute (no per-path can_read check — intentionally consistent with the sibling generic Temporal endpoints below; the opaque workflow_id is only handed to the uploader, who had can_write on the target). The per-member results come from the workflow\'s ``results`` query (served from retained history), so once Temporal retention expires this 404s.
194
194
  * Get Zip Ingestion Status Handler
195
195
  */
196
196
  getZipIngestionStatus(requestParameters: GetZipIngestionStatusRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ZipIngestionStatusResponse>;
@@ -484,7 +484,7 @@ export class SystemJobsApi extends runtime.BaseAPI implements SystemJobsApiInter
484
484
  }
485
485
 
486
486
  /**
487
- * Get a fan-out\'s live status + per-member outcomes. Serves both container fan-outs: a ZIP archive\'s members and an email\'s attachments. Both expose the same ``results`` query, so one endpoint covers them rather than duplicating the tenant check and hydration. Tenant-scoped via the TenantId search attribute (no per-path can_read check — intentionally consistent with the sibling generic Temporal endpoints below; the opaque workflow_id is only handed to the uploader, who had can_write on the target). The per-member results come from the workflow\'s ``results`` query (served from retained history), so once Temporal retention expires this 404s.
487
+ * Get a ZIP fan-out\'s live status + per-member outcomes. Tenant-scoped via the TenantId search attribute (no per-path can_read check — intentionally consistent with the sibling generic Temporal endpoints below; the opaque workflow_id is only handed to the uploader, who had can_write on the target). The per-member results come from the workflow\'s ``results`` query (served from retained history), so once Temporal retention expires this 404s.
488
488
  * Get Zip Ingestion Status Handler
489
489
  */
490
490
  async getZipIngestionStatusRaw(requestParameters: GetZipIngestionStatusRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ZipIngestionStatusResponse>> {
@@ -495,7 +495,7 @@ export class SystemJobsApi extends runtime.BaseAPI implements SystemJobsApiInter
495
495
  }
496
496
 
497
497
  /**
498
- * Get a fan-out\'s live status + per-member outcomes. Serves both container fan-outs: a ZIP archive\'s members and an email\'s attachments. Both expose the same ``results`` query, so one endpoint covers them rather than duplicating the tenant check and hydration. Tenant-scoped via the TenantId search attribute (no per-path can_read check — intentionally consistent with the sibling generic Temporal endpoints below; the opaque workflow_id is only handed to the uploader, who had can_write on the target). The per-member results come from the workflow\'s ``results`` query (served from retained history), so once Temporal retention expires this 404s.
498
+ * Get a ZIP fan-out\'s live status + per-member outcomes. Tenant-scoped via the TenantId search attribute (no per-path can_read check — intentionally consistent with the sibling generic Temporal endpoints below; the opaque workflow_id is only handed to the uploader, who had can_write on the target). The per-member results come from the workflow\'s ``results`` query (served from retained history), so once Temporal retention expires this 404s.
499
499
  * Get Zip Ingestion Status Handler
500
500
  */
501
501
  async getZipIngestionStatus(requestParameters: GetZipIngestionStatusRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ZipIngestionStatusResponse> {
@@ -34,13 +34,6 @@ import {
34
34
  InformationStatisticsToJSON,
35
35
  InformationStatisticsToJSONTyped,
36
36
  } from './InformationStatistics';
37
- import type { EmailMetadata } from './EmailMetadata';
38
- import {
39
- EmailMetadataFromJSON,
40
- EmailMetadataFromJSONTyped,
41
- EmailMetadataToJSON,
42
- EmailMetadataToJSONTyped,
43
- } from './EmailMetadata';
44
37
 
45
38
  /**
46
39
  * Schema for document_version.system_metadata JSONB field.
@@ -141,12 +134,6 @@ export interface DocumentVersionMetadata {
141
134
  * @memberof DocumentVersionMetadata
142
135
  */
143
136
  segmentCount?: number | null;
144
- /**
145
- * Structured email headers; null for non-email documents
146
- * @type {EmailMetadata}
147
- * @memberof DocumentVersionMetadata
148
- */
149
- email?: EmailMetadata | null;
150
137
  /**
151
138
  * Total formula cells in the workbook (XLSX only)
152
139
  * @type {number}
@@ -269,7 +256,6 @@ export function DocumentVersionMetadataFromJSONTyped(json: any, ignoreDiscrimina
269
256
  'durationMs': json['duration_ms'] == null ? undefined : json['duration_ms'],
270
257
  'language': json['language'] == null ? undefined : json['language'],
271
258
  'segmentCount': json['segment_count'] == null ? undefined : json['segment_count'],
272
- 'email': json['email'] == null ? undefined : EmailMetadataFromJSON(json['email']),
273
259
  'totalFormulas': json['total_formulas'] == null ? undefined : json['total_formulas'],
274
260
  'xlsxParseResultS3': json['xlsx_parse_result_s3'] == null ? undefined : json['xlsx_parse_result_s3'],
275
261
  'xlsxNamedRanges': json['xlsx_named_ranges'] == null ? undefined : json['xlsx_named_ranges'],
@@ -310,7 +296,6 @@ export function DocumentVersionMetadataToJSONTyped(value?: DocumentVersionMetada
310
296
  'duration_ms': value['durationMs'],
311
297
  'language': value['language'],
312
298
  'segment_count': value['segmentCount'],
313
- 'email': EmailMetadataToJSON(value['email']),
314
299
  'total_formulas': value['totalFormulas'],
315
300
  'xlsx_parse_result_s3': value['xlsxParseResultS3'],
316
301
  'xlsx_named_ranges': value['xlsxNamedRanges'],
@@ -34,13 +34,6 @@ import {
34
34
  InformationStatisticsToJSON,
35
35
  InformationStatisticsToJSONTyped,
36
36
  } from './InformationStatistics';
37
- import type { EmailMetadata } from './EmailMetadata';
38
- import {
39
- EmailMetadataFromJSON,
40
- EmailMetadataFromJSONTyped,
41
- EmailMetadataToJSON,
42
- EmailMetadataToJSONTyped,
43
- } from './EmailMetadata';
44
37
 
45
38
  /**
46
39
  * Partial update schema for document version metadata.
@@ -153,12 +146,6 @@ export interface DocumentVersionMetadataUpdate {
153
146
  * @memberof DocumentVersionMetadataUpdate
154
147
  */
155
148
  segmentCount?: number | null;
156
- /**
157
- *
158
- * @type {EmailMetadata}
159
- * @memberof DocumentVersionMetadataUpdate
160
- */
161
- email?: EmailMetadata | null;
162
149
  /**
163
150
  *
164
151
  * @type {number}
@@ -278,7 +265,6 @@ export function DocumentVersionMetadataUpdateFromJSONTyped(json: any, ignoreDisc
278
265
  'durationMs': json['duration_ms'] == null ? undefined : json['duration_ms'],
279
266
  'language': json['language'] == null ? undefined : json['language'],
280
267
  'segmentCount': json['segment_count'] == null ? undefined : json['segment_count'],
281
- 'email': json['email'] == null ? undefined : EmailMetadataFromJSON(json['email']),
282
268
  'totalFormulas': json['total_formulas'] == null ? undefined : json['total_formulas'],
283
269
  'xlsxParseResultS3': json['xlsx_parse_result_s3'] == null ? undefined : json['xlsx_parse_result_s3'],
284
270
  'xlsxNamedRanges': json['xlsx_named_ranges'] == null ? undefined : json['xlsx_named_ranges'],
@@ -321,7 +307,6 @@ export function DocumentVersionMetadataUpdateToJSONTyped(value?: DocumentVersion
321
307
  'duration_ms': value['durationMs'],
322
308
  'language': value['language'],
323
309
  'segment_count': value['segmentCount'],
324
- 'email': EmailMetadataToJSON(value['email']),
325
310
  'total_formulas': value['totalFormulas'],
326
311
  'xlsx_parse_result_s3': value['xlsxParseResultS3'],
327
312
  'xlsx_named_ranges': value['xlsxNamedRanges'],