@laserfiche/lf-repository-api-client-v2 1.4.1 → 1.5.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 (3) hide show
  1. package/dist/index.d.ts +625 -24
  2. package/dist/index.js +1135 -31
  3. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -1044,6 +1044,7 @@ export interface IAccessControlClient {
1044
1044
  /**
1045
1045
  * - Full replace: the supplied entries replace the field's entire explicit ACL. Inherited entries are not accepted (field ACEs are never inherited). Address a trustee by trustee.sid or trustee.accountName (the SID wins when both are given; an account name is resolved to a SID server-side).
1046
1046
  - The OAuth scope is coarse; the repository session enforces the real permission and returns 403 when the caller lacks the field's ChangePermissions right.
1047
+ - The entries property is required. A request body that does not include it is rejected with a 400; send an empty array to clear the list.
1047
1048
  - Required OAuth scope: repository.Write
1048
1049
  * @param args.repositoryId The requested repository ID.
1049
1050
  * @param args.fieldId The field definition ID whose ACL to replace.
@@ -1083,6 +1084,7 @@ export interface IAccessControlClient {
1083
1084
  }): Promise<FieldAccessControlList>;
1084
1085
  /**
1085
1086
  * - Full replace: the supplied entries replace the entire default field ACL. Inherited entries are not accepted. Address a trustee by trustee.sid or trustee.accountName (the SID wins when both are given).
1087
+ - The entries property is required. A request body that does not include it is rejected with a 400; send an empty array to clear the list.
1086
1088
  - Required OAuth scope: repository.Write
1087
1089
  * @param args.repositoryId The requested repository ID.
1088
1090
  * @param args.request The access control entries to set as the default field ACL.
@@ -1115,6 +1117,7 @@ export interface IAccessControlClient {
1115
1117
  - Each ACE identifies its trustee by trustee.sid or trustee.accountName (an account name is resolved to a SID server-side; the SID takes precedence when both are supplied). A trustee that needs both allowed and denied rights is expressed as two ACEs.
1116
1118
  - The repository session enforces the underlying permission: changing an ACL requires the ChangePermissions right on the entry, and a 403 is returned when it is lacking. The repository.Write OAuth scope is necessary but not sufficient.
1117
1119
  - Returns the entry's full ACL after the change.
1120
+ - The entries property is required. A request body that does not include it is rejected with a 400; send an empty array to clear the list.
1118
1121
  - Required OAuth scope: repository.Write
1119
1122
  * @param args.repositoryId The requested repository ID.
1120
1123
  * @param args.entryId The entry whose access control list is replaced.
@@ -1172,6 +1175,7 @@ export interface IAccessControlClient {
1172
1175
  /**
1173
1176
  * - Full replace: the supplied entries replace the template's entire explicit ACL. Inherited entries are not accepted (template ACEs are never inherited). Address a trustee by trustee.sid or trustee.accountName (the SID wins when both are given; an account name is resolved to a SID server-side).
1174
1177
  - The OAuth scope is coarse; the repository session enforces the real permission and returns 403 when the caller lacks the template's ChangePermissions right.
1178
+ - The entries property is required. A request body that does not include it is rejected with a 400; send an empty array to clear the list.
1175
1179
  - Required OAuth scope: repository.Write
1176
1180
  * @param args.repositoryId The requested repository ID.
1177
1181
  * @param args.templateId The template definition ID whose ACL to replace.
@@ -1211,6 +1215,7 @@ export interface IAccessControlClient {
1211
1215
  }): Promise<TemplateAccessControlList>;
1212
1216
  /**
1213
1217
  * - Full replace: the supplied entries replace the entire default template ACL. Inherited entries are not accepted. Address a trustee by trustee.sid or trustee.accountName (the SID wins when both are given).
1218
+ - The entries property is required. A request body that does not include it is rejected with a 400; send an empty array to clear the list.
1214
1219
  - Required OAuth scope: repository.Write
1215
1220
  * @param args.repositoryId The requested repository ID.
1216
1221
  * @param args.request The access control entries to set as the default template ACL.
@@ -1274,6 +1279,7 @@ export declare class AccessControlClient implements IAccessControlClient {
1274
1279
  /**
1275
1280
  * - Full replace: the supplied entries replace the field's entire explicit ACL. Inherited entries are not accepted (field ACEs are never inherited). Address a trustee by trustee.sid or trustee.accountName (the SID wins when both are given; an account name is resolved to a SID server-side).
1276
1281
  - The OAuth scope is coarse; the repository session enforces the real permission and returns 403 when the caller lacks the field's ChangePermissions right.
1282
+ - The entries property is required. A request body that does not include it is rejected with a 400; send an empty array to clear the list.
1277
1283
  - Required OAuth scope: repository.Write
1278
1284
  * @param args.repositoryId The requested repository ID.
1279
1285
  * @param args.fieldId The field definition ID whose ACL to replace.
@@ -1316,6 +1322,7 @@ export declare class AccessControlClient implements IAccessControlClient {
1316
1322
  protected processGetDefaultFieldAccessControl(response: Response): Promise<FieldAccessControlList>;
1317
1323
  /**
1318
1324
  * - Full replace: the supplied entries replace the entire default field ACL. Inherited entries are not accepted. Address a trustee by trustee.sid or trustee.accountName (the SID wins when both are given).
1325
+ - The entries property is required. A request body that does not include it is rejected with a 400; send an empty array to clear the list.
1319
1326
  - Required OAuth scope: repository.Write
1320
1327
  * @param args.repositoryId The requested repository ID.
1321
1328
  * @param args.request The access control entries to set as the default field ACL.
@@ -1350,6 +1357,7 @@ export declare class AccessControlClient implements IAccessControlClient {
1350
1357
  - Each ACE identifies its trustee by trustee.sid or trustee.accountName (an account name is resolved to a SID server-side; the SID takes precedence when both are supplied). A trustee that needs both allowed and denied rights is expressed as two ACEs.
1351
1358
  - The repository session enforces the underlying permission: changing an ACL requires the ChangePermissions right on the entry, and a 403 is returned when it is lacking. The repository.Write OAuth scope is necessary but not sufficient.
1352
1359
  - Returns the entry's full ACL after the change.
1360
+ - The entries property is required. A request body that does not include it is rejected with a 400; send an empty array to clear the list.
1353
1361
  - Required OAuth scope: repository.Write
1354
1362
  * @param args.repositoryId The requested repository ID.
1355
1363
  * @param args.entryId The entry whose access control list is replaced.
@@ -1411,6 +1419,7 @@ export declare class AccessControlClient implements IAccessControlClient {
1411
1419
  /**
1412
1420
  * - Full replace: the supplied entries replace the template's entire explicit ACL. Inherited entries are not accepted (template ACEs are never inherited). Address a trustee by trustee.sid or trustee.accountName (the SID wins when both are given; an account name is resolved to a SID server-side).
1413
1421
  - The OAuth scope is coarse; the repository session enforces the real permission and returns 403 when the caller lacks the template's ChangePermissions right.
1422
+ - The entries property is required. A request body that does not include it is rejected with a 400; send an empty array to clear the list.
1414
1423
  - Required OAuth scope: repository.Write
1415
1424
  * @param args.repositoryId The requested repository ID.
1416
1425
  * @param args.templateId The template definition ID whose ACL to replace.
@@ -1453,6 +1462,7 @@ export declare class AccessControlClient implements IAccessControlClient {
1453
1462
  protected processGetDefaultTemplateAccessControl(response: Response): Promise<TemplateAccessControlList>;
1454
1463
  /**
1455
1464
  * - Full replace: the supplied entries replace the entire default template ACL. Inherited entries are not accepted. Address a trustee by trustee.sid or trustee.accountName (the SID wins when both are given).
1465
+ - The entries property is required. A request body that does not include it is rejected with a 400; send an empty array to clear the list.
1456
1466
  - Required OAuth scope: repository.Write
1457
1467
  * @param args.repositoryId The requested repository ID.
1458
1468
  * @param args.request The access control entries to set as the default template ACL.
@@ -1670,7 +1680,7 @@ export interface IEntriesClient {
1670
1680
  * @param args.repositoryId The requested repository ID.
1671
1681
  * @param args.entryId The ID of entry to export.
1672
1682
  * @param args.request The request body.
1673
- * @param args.pageRange (optional) A comma-separated range of pages to include. Ex: 1,3,4 or 1-3,5-7,9. This value is ignored when part=Edoc.
1683
+ * @param args.pageRange (optional) A comma-separated range of pages to include. Ex: 1,3,4 or 1-3,5-7,9. This value is ignored when part=Edoc or part=AlternateEdoc.
1674
1684
  * @returns Operation was started successfully. Returned a long operation task ID.
1675
1685
  */
1676
1686
  startExportEntry(args: {
@@ -1788,7 +1798,7 @@ export interface IEntriesClient {
1788
1798
  * @param args.repositoryId The requested repository ID.
1789
1799
  * @param args.entryId The ID of entry to export.
1790
1800
  * @param args.request The request body.
1791
- * @param args.pageRange (optional) A comma-separated range of pages to include. Ex: 1,3,4 or 1-3,5-7,9. This value is ignored when exporting as Edoc.
1801
+ * @param args.pageRange (optional) A comma-separated range of pages to include. Ex: 1,3,4 or 1-3,5-7,9. This value is ignored when exporting as Edoc or AlternateEdoc.
1792
1802
  * @returns Export was successful. Returned a link to download the exported entry.
1793
1803
  */
1794
1804
  exportEntry(args: {
@@ -1898,6 +1908,7 @@ export interface IEntriesClient {
1898
1908
  * - Update the field values assigned to an entry.
1899
1909
  - Provide the new field values to assign to the entry, and remove/reset all previously assigned field values.
1900
1910
  - This is an overwrite action. The request body must include all desired field values, including any existing field values that should remain assigned to the entry. Field values that are not included in the request will be deleted from the entry. If the field value that is not included is part of a template, it will still be assigned (as required by the template), but its value will be reset.
1911
+ - The fields property is required. A request body that does not include it is rejected with a 400; send an empty list to clear every field value.
1901
1912
  - Required OAuth scope: repository.Write
1902
1913
  * @param args.repositoryId The requested repository ID.
1903
1914
  * @param args.entryId The entry ID of the entry that will have its fields updated.
@@ -1940,6 +1951,7 @@ export interface IEntriesClient {
1940
1951
  * - Assign tags to an entry.
1941
1952
  - Provide an entry ID and a list of tags to assign to that entry.
1942
1953
  - This is an overwrite action. The request must include all tags to assign to the entry, including existing tags that should remain assigned to the entry.
1954
+ - The tags property is required. A request body that does not include it is rejected with a 400; send an empty list to unassign every tag.
1943
1955
  - Required OAuth scope: repository.Write
1944
1956
  * @param args.repositoryId The requested repository ID.
1945
1957
  * @param args.entryId The requested entry ID.
@@ -1955,6 +1967,7 @@ export interface IEntriesClient {
1955
1967
  * - Assign links to an entry.
1956
1968
  - Provide an entry ID and a list of links to assign to that entry.
1957
1969
  - This is an overwrite action. The request must include all links to assign to the entry, including existing links that should remain assigned to the entry.
1970
+ - The links property is required. A request body that does not include it is rejected with a 400; send an empty list to remove every link.
1958
1971
  - Required OAuth scope: repository.Write
1959
1972
  * @param args.repositoryId The request repository ID.
1960
1973
  * @param args.entryId The requested entry ID.
@@ -2221,6 +2234,114 @@ export interface IEntriesClient {
2221
2234
  pageNumber: number;
2222
2235
  request: RotateImagePageRequest;
2223
2236
  }): Promise<Entry>;
2237
+ /**
2238
+ * - An alternate electronic document is a named binary stream stored alongside the document's primary electronic document, such as an audio recording, a source scan, or sidecar data. It travels with the document through copy, move, versioning, and briefcase operations.
2239
+ - Returns the name, MIME type, and size of each stream. This endpoint does not return the stream content.
2240
+ - Stream names are at most 15 characters long.
2241
+ - Streams are returned in ascending name order; that order is fixed and not configurable.
2242
+ - Streams reserved for internal use are not listed.
2243
+ - Default page size: 150. Allowed OData query options: Select | Count | Skip | SkipToken | Top | Prefer.
2244
+ - Required OAuth scope: repository.Read
2245
+ * @param args.repositoryId The requested repository ID.
2246
+ * @param args.entryId The requested document ID.
2247
+ * @param args.prefer (optional) An optional OData header. Can be used to set the maximum page size using odata.maxpagesize.
2248
+ * @param args.select (optional) Limits the properties returned in the result.
2249
+ * @param args.top (optional) Limits the number of items returned from a collection. The maximum value is 150.
2250
+ * @param args.skip (optional) Excludes the specified number of items of the queried collection from the result.
2251
+ * @param args.count (optional) Indicates whether the total count of items within a collection are returned in the result.
2252
+ * @returns Successfully retrieved a paged listing of the document's alternate electronic documents.
2253
+ */
2254
+ listAlternateEdocs(args: {
2255
+ repositoryId: string;
2256
+ entryId: number;
2257
+ prefer?: string | null | undefined;
2258
+ select?: string | null | undefined;
2259
+ top?: number | undefined;
2260
+ skip?: number | undefined;
2261
+ count?: boolean | undefined;
2262
+ }): Promise<AlternateEdocInfoCollectionResponse>;
2263
+ /**
2264
+ * - Returns the name, MIME type, and size of the stream. This endpoint does not return the stream content.
2265
+ - The name is supplied as a query parameter rather than a path segment, because the legal character set includes characters that are significant to OData URI parsing.
2266
+ - Names match exactly. A name that differs only in letter case identifies a different stream on some repository configurations, so no case folding is applied.
2267
+ - Streams reserved for internal use are reported as not found.
2268
+ - Required OAuth scope: repository.Read
2269
+ * @param args.repositoryId The requested repository ID.
2270
+ * @param args.entryId The requested document ID.
2271
+ * @param args.name The name of the alternate electronic document. Matched exactly, so a name differing only in letter case is not found. Names reserved for internal use are also reported as not found.
2272
+ * @param args.select (optional) Limits the properties returned in the result.
2273
+ * @returns Successfully retrieved the metadata of the specified alternate electronic document.
2274
+ */
2275
+ getAlternateEdocInfo(args: {
2276
+ repositoryId: string;
2277
+ entryId: number;
2278
+ name: string | null;
2279
+ select?: string | null | undefined;
2280
+ }): Promise<AlternateEdocInfoResponse>;
2281
+ /**
2282
+ * - Writes a named binary stream stored alongside the document's primary electronic document, such as an audio recording, a source scan, or sidecar data. The stream is created when the document does not have one under that name, and its content fully replaced when it does. The primary electronic document, the pages, and the metadata are unaffected.
2283
+ - Send the content as multipart/form-data under the form field `file`. A zero-byte file is rejected; use the delete operation to remove an alternate electronic document.
2284
+ - The name is supplied as a query parameter rather than a path segment, because the legal character set includes characters that are significant to OData URI parsing.
2285
+ - Names are at most 15 characters long, and each character must be an ASCII letter, an ASCII digit, or one of `!@#$%^&()-+={}[]_~`.
2286
+ - Names match exactly. A name that differs only in letter case from one the document already has is rejected with 409 rather than written, because such a pair means different things on different repository configurations; reads and deletes stay exact-match.
2287
+ - Names reserved for internal use are rejected.
2288
+ - The optional `mimeType` form field sets the content's MIME type, at most 127 characters. When omitted it is derived from the uploaded file's content type and file name, falling back to `application/octet-stream`. The repository stores it lower-cased and without any parameters, so `Text/Plain; charset=utf-8` is stored as `text/plain`; the response reports the stored value.
2289
+ - Repeating an identical request is safe: the same content replaces itself.
2290
+ - Required OAuth scope: repository.Write
2291
+ * @param args.repositoryId The requested repository ID.
2292
+ * @param args.entryId The requested document ID.
2293
+ * @param args.name The name of the alternate electronic document. 1 to 15 characters, each an ASCII letter, an ASCII digit, or one of `!@#$%^&()-+={}[]_~`. An existing name has its content and MIME type replaced in full; a name differing from an existing one only in letter case is rejected with 409 and leaves that stream unchanged. Names reserved for internal use are rejected.
2294
+ * @param args.file (optional) The content to store. Any file type is accepted. A zero-byte file is rejected with 400; use the delete operation to remove an alternate electronic document.
2295
+ * @param args.mimeType (optional) Optional. The MIME type to set for the content, at most 127 characters. When omitted it is derived from the uploaded file's content type and file name, falling back to application/octet-stream. Stored lower-cased and without parameters, so Text/Plain; charset=utf-8 is stored as text/plain. Worth setting explicitly for audio and video, where the multipart content type is frequently generic or wrong.
2296
+ * @returns Successfully wrote the alternate electronic document. Returned its metadata as stored.
2297
+ */
2298
+ writeAlternateEdoc(args: {
2299
+ repositoryId: string;
2300
+ entryId: number;
2301
+ name: string | null;
2302
+ file?: FileParameter | undefined;
2303
+ mimeType?: string | undefined;
2304
+ }): Promise<AlternateEdocInfoResponse>;
2305
+ /**
2306
+ * - Deletes a named binary stream stored alongside the document's primary electronic document. The primary electronic document, the pages, and the metadata are unaffected.
2307
+ - The name is supplied as a query parameter rather than a path segment, because the legal character set includes characters that are significant to OData URI parsing.
2308
+ - Names match exactly. A name that differs only in letter case identifies a different stream on some repository configurations, so no case folding is applied.
2309
+ - A name the document has no stream for is reported as not found.
2310
+ - Names reserved for internal use are rejected.
2311
+ - Required OAuth scope: repository.Write
2312
+ * @param args.repositoryId The requested repository ID.
2313
+ * @param args.entryId The requested document ID.
2314
+ * @param args.name The name of the alternate electronic document. Matched exactly, so a name differing only in letter case is not found. Names reserved for internal use are rejected.
2315
+ * @returns Successfully deleted the alternate electronic document.
2316
+ */
2317
+ deleteAlternateEdoc(args: {
2318
+ repositoryId: string;
2319
+ entryId: number;
2320
+ name: string | null;
2321
+ }): Promise<void>;
2322
+ /**
2323
+ * - Writes a named binary stream stored alongside the document's primary electronic document from a file uploaded in chunks, for content too large to send in a single request. The stream is created when the document does not have one under that name, and its content fully replaced when it does. The primary electronic document, the pages, and the metadata are unaffected.
2324
+ - Upload the content first: call CreateMultipartUploadUrls, write each chunk to the URLs it returns, then pass the same `uploadId` and the ETags here. There is no size limit at this tier beyond the one the upload itself enforces.
2325
+ - This operation runs in the background. It returns **202 Accepted** with a task ID; poll `/Tasks?taskIds={taskId}` for progress and the result. Use the PUT operation instead for content small enough to send at once, which completes synchronously.
2326
+ - The name is supplied as a query parameter rather than a path segment, because the legal character set includes characters that are significant to OData URI parsing.
2327
+ - Names are at most 15 characters long, and each character must be an ASCII letter, an ASCII digit, or one of `!@#$%^&()-+={}[]_~`.
2328
+ - Names match exactly. A name that differs only in letter case from one the document already has is rejected with 409 rather than written, because such a pair means different things on different repository configurations.
2329
+ - Names reserved for internal use are rejected.
2330
+ - The name, the MIME type and the case rule are all checked before the operation is accepted, so those errors come back on this request rather than on the task.
2331
+ - The optional `mimeType` sets the content's MIME type, at most 127 characters. When omitted it is taken from the MIME type supplied to CreateMultipartUploadUrls. The repository stores it lower-cased and without any parameters, so `Text/Plain; charset=utf-8` is stored as `text/plain`.
2332
+ - Required OAuth scope: repository.Write
2333
+ * @param args.repositoryId The requested repository ID.
2334
+ * @param args.entryId The requested document ID.
2335
+ * @param args.name The name of the alternate electronic document. 1 to 15 characters, each an ASCII letter, an ASCII digit, or one of `!@#$%^&()-+={}[]_~`. An existing name has its content and MIME type replaced in full; a name differing from an existing one only in letter case is rejected with 409 and leaves that stream unchanged. Names reserved for internal use are rejected. The name is validated before the operation is accepted, so a name error is returned on this request rather than on the task.
2336
+ * @param args.request The upload to assemble, and the MIME type to record.
2337
+ * @returns Successfully started the write alternate electronic document from uploaded parts operation. Returns a task ID for polling progress.
2338
+ */
2339
+ writeAltEdocUploadedParts(args: {
2340
+ repositoryId: string;
2341
+ entryId: number;
2342
+ name: string | null;
2343
+ request: WriteAltEdocUploadedPartsRequest;
2344
+ }): Promise<StartTaskResponse>;
2224
2345
  /**
2225
2346
  * - Returns the raw image data for the specified page as a binary stream.
2226
2347
  - pageNumber is 1-based.
@@ -2253,6 +2374,58 @@ export interface IEntriesClient {
2253
2374
  pageNumber: number;
2254
2375
  select?: string | null | undefined;
2255
2376
  }): Promise<PageTextResponse>;
2377
+ /**
2378
+ * - Returns the offsets, in the text of the page, of the words the rectangle covers, together with that text.
2379
+ - All four rectangle parameters are required. Omitting one is a 400 rather than a coordinate of 0, because a rectangle silently moved to the edge of the page answers with a span the caller never asked about.
2380
+ - Coordinates are in raw page image pixels, with the origin at the top left of the unrotated image: X is measured in imageXResolution columns and Y in imageYResolution rows, which can differ from one another, and the image is the one described by imageWidth, imageHeight, imageXResolution, imageYResolution and imageRotationAngle on ListPageInfos. The page's own rotation is not applied, so a viewer that displays the page rotated or scaled must convert its own coordinates back to this space before calling.
2381
+ - A word counts as covered when the rectangle contains it, is contained by it, or overlaps it by at least 2 pixels and half of both its width and its height. A rectangle that lies entirely within the word on one axis - a thin stripe drawn through it - only has to clear the half threshold on the other axis. This is the same rule the Laserfiche viewers apply to a hand-drawn selection.
2382
+ - textStart is the offset of the first character of the span and textEnd is the offset one past its last character, so textEnd - textStart is the length of the span. This is the convention Web Access stores in text-linked highlight and redaction annotations, so the values can be written straight back to CreateAnnotation. Offsets are UTF-16 code unit indices into the text returned by GetPageText, including its line breaks.
2383
+ - The span runs from the first covered word to the last, so text can include characters that lie between covered words. text always equals the page text from textStart to textEnd.
2384
+ - When the rectangle covers no words, hasTextSpan is false, textStart and textEnd are both -1, text is empty and wordCount is 0. -1 is also the value the annotation surface uses for a span that is not linked to text.
2385
+ - Returns 404 when the page has no text or no word locations. A page has word locations when hasWordLocations is true on ListPageInfos; text is generated by GenerateText.
2386
+ - Returns 400 when the page carries more word locations than the server supports, which is 20,000 by default.
2387
+ - Required OAuth scope: repository.Read
2388
+ * @param args.repositoryId The requested repository ID.
2389
+ * @param args.entryId The requested document ID.
2390
+ * @param args.pageNumber The 1-based page number of the page to search.
2391
+ * @param args.x The X coordinate of the left edge of the rectangle, in page image pixels. Required, and may not be negative.
2392
+ * @param args.y The Y coordinate of the top edge of the rectangle, in page image pixels. Required, and may not be negative.
2393
+ * @param args.width The width of the rectangle, in page image pixels. Required, and must be at least 1.
2394
+ * @param args.height The height of the rectangle, in page image pixels. Required, and must be at least 1.
2395
+ * @param args.select (optional) Limits the properties returned in the result.
2396
+ * @returns Successfully retrieved the page text span covered by the specified rectangle.
2397
+ */
2398
+ getPageTextOffsets(args: {
2399
+ repositoryId: string;
2400
+ entryId: number;
2401
+ pageNumber: number;
2402
+ x: number | null;
2403
+ y: number | null;
2404
+ width: number | null;
2405
+ height: number | null;
2406
+ select?: string | null | undefined;
2407
+ }): Promise<PageTextOffsetsResponse>;
2408
+ /**
2409
+ * - Returns every word of the page, in reading order, with its text offsets and its rectangle on the page image. This is the data the hasWordLocations and locationsDataSize properties on ListPageInfos advertise.
2410
+ - The whole page is returned in one response; there is no paging, because the order of the words is itself part of the data. A page carrying more word locations than the server supports, which is 20,000 by default, is refused with a 400 rather than truncated.
2411
+ - Coordinates are in raw page image pixels, with the origin at the top left of the unrotated image: X is measured in imageXResolution columns and Y in imageYResolution rows, which can differ from one another. The envelope repeats the page image geometry so the coordinates can be interpreted without a second call, and imageRotationAngle is reported but not applied - overlay code must apply its own rotation and scaling.
2412
+ - textStart is the offset of the first character of the word and textEnd is the offset one past its last character, so textEnd - textStart is the length of the word. Offsets are UTF-16 code unit indices into the text returned by GetPageText, including its line breaks, and use the same convention as the text-linked highlight and redaction annotations.
2413
+ - To find the rectangles that render a text span [spanStart, spanEnd), such as the span stored on an existing highlight or redaction annotation, take every entry where word.textStart < spanEnd and word.textEnd > spanStart, and use those entries' rectangles. Entries that overlap vertically are on the same line of text, so horizontally adjacent boxes within such a group can be merged into one box per line.
2414
+ - width and height can both be 0 for a location OCR produced for a word it could not place. Such entries are still returned, because the order of the words is what pairs them with the page text.
2415
+ - Returns 404 when the page has no text or no word locations. Word locations are produced by GenerateText along with the page text.
2416
+ - Required OAuth scope: repository.Read
2417
+ * @param args.repositoryId The requested repository ID.
2418
+ * @param args.entryId The requested document ID.
2419
+ * @param args.pageNumber The 1-based page number of the page to retrieve the word locations for.
2420
+ * @param args.select (optional) Limits the properties returned in the result.
2421
+ * @returns Successfully retrieved the word locations for the specified page.
2422
+ */
2423
+ listPageWordLocations(args: {
2424
+ repositoryId: string;
2425
+ entryId: number;
2426
+ pageNumber: number;
2427
+ select?: string | null | undefined;
2428
+ }): Promise<PageWordLocationsResponse>;
2256
2429
  /**
2257
2430
  * - Triggers server-side text generation for the specified document.
2258
2431
  - For documents with image pages, this performs OCR to generate searchable text.
@@ -2637,7 +2810,7 @@ export declare class EntriesClient implements IEntriesClient {
2637
2810
  * @param args.repositoryId The requested repository ID.
2638
2811
  * @param args.entryId The ID of entry to export.
2639
2812
  * @param args.request The request body.
2640
- * @param args.pageRange (optional) A comma-separated range of pages to include. Ex: 1,3,4 or 1-3,5-7,9. This value is ignored when part=Edoc.
2813
+ * @param args.pageRange (optional) A comma-separated range of pages to include. Ex: 1,3,4 or 1-3,5-7,9. This value is ignored when part=Edoc or part=AlternateEdoc.
2641
2814
  * @returns Operation was started successfully. Returned a long operation task ID.
2642
2815
  */
2643
2816
  startExportEntry(args: {
@@ -2761,7 +2934,7 @@ export declare class EntriesClient implements IEntriesClient {
2761
2934
  * @param args.repositoryId The requested repository ID.
2762
2935
  * @param args.entryId The ID of entry to export.
2763
2936
  * @param args.request The request body.
2764
- * @param args.pageRange (optional) A comma-separated range of pages to include. Ex: 1,3,4 or 1-3,5-7,9. This value is ignored when exporting as Edoc.
2937
+ * @param args.pageRange (optional) A comma-separated range of pages to include. Ex: 1,3,4 or 1-3,5-7,9. This value is ignored when exporting as Edoc or AlternateEdoc.
2765
2938
  * @returns Export was successful. Returned a link to download the exported entry.
2766
2939
  */
2767
2940
  exportEntry(args: {
@@ -2876,6 +3049,7 @@ export declare class EntriesClient implements IEntriesClient {
2876
3049
  * - Update the field values assigned to an entry.
2877
3050
  - Provide the new field values to assign to the entry, and remove/reset all previously assigned field values.
2878
3051
  - This is an overwrite action. The request body must include all desired field values, including any existing field values that should remain assigned to the entry. Field values that are not included in the request will be deleted from the entry. If the field value that is not included is part of a template, it will still be assigned (as required by the template), but its value will be reset.
3052
+ - The fields property is required. A request body that does not include it is rejected with a 400; send an empty list to clear every field value.
2879
3053
  - Required OAuth scope: repository.Write
2880
3054
  * @param args.repositoryId The requested repository ID.
2881
3055
  * @param args.entryId The entry ID of the entry that will have its fields updated.
@@ -2920,6 +3094,7 @@ export declare class EntriesClient implements IEntriesClient {
2920
3094
  * - Assign tags to an entry.
2921
3095
  - Provide an entry ID and a list of tags to assign to that entry.
2922
3096
  - This is an overwrite action. The request must include all tags to assign to the entry, including existing tags that should remain assigned to the entry.
3097
+ - The tags property is required. A request body that does not include it is rejected with a 400; send an empty list to unassign every tag.
2923
3098
  - Required OAuth scope: repository.Write
2924
3099
  * @param args.repositoryId The requested repository ID.
2925
3100
  * @param args.entryId The requested entry ID.
@@ -2936,6 +3111,7 @@ export declare class EntriesClient implements IEntriesClient {
2936
3111
  * - Assign links to an entry.
2937
3112
  - Provide an entry ID and a list of links to assign to that entry.
2938
3113
  - This is an overwrite action. The request must include all links to assign to the entry, including existing links that should remain assigned to the entry.
3114
+ - The links property is required. A request body that does not include it is rejected with a 400; send an empty list to remove every link.
2939
3115
  - Required OAuth scope: repository.Write
2940
3116
  * @param args.repositoryId The request repository ID.
2941
3117
  * @param args.entryId The requested entry ID.
@@ -3216,6 +3392,119 @@ export declare class EntriesClient implements IEntriesClient {
3216
3392
  request: RotateImagePageRequest;
3217
3393
  }): Promise<Entry>;
3218
3394
  protected processRotateImagePage(response: Response): Promise<Entry>;
3395
+ /**
3396
+ * - An alternate electronic document is a named binary stream stored alongside the document's primary electronic document, such as an audio recording, a source scan, or sidecar data. It travels with the document through copy, move, versioning, and briefcase operations.
3397
+ - Returns the name, MIME type, and size of each stream. This endpoint does not return the stream content.
3398
+ - Stream names are at most 15 characters long.
3399
+ - Streams are returned in ascending name order; that order is fixed and not configurable.
3400
+ - Streams reserved for internal use are not listed.
3401
+ - Default page size: 150. Allowed OData query options: Select | Count | Skip | SkipToken | Top | Prefer.
3402
+ - Required OAuth scope: repository.Read
3403
+ * @param args.repositoryId The requested repository ID.
3404
+ * @param args.entryId The requested document ID.
3405
+ * @param args.prefer (optional) An optional OData header. Can be used to set the maximum page size using odata.maxpagesize.
3406
+ * @param args.select (optional) Limits the properties returned in the result.
3407
+ * @param args.top (optional) Limits the number of items returned from a collection. The maximum value is 150.
3408
+ * @param args.skip (optional) Excludes the specified number of items of the queried collection from the result.
3409
+ * @param args.count (optional) Indicates whether the total count of items within a collection are returned in the result.
3410
+ * @returns Successfully retrieved a paged listing of the document's alternate electronic documents.
3411
+ */
3412
+ listAlternateEdocs(args: {
3413
+ repositoryId: string;
3414
+ entryId: number;
3415
+ prefer?: string | null | undefined;
3416
+ select?: string | null | undefined;
3417
+ top?: number | undefined;
3418
+ skip?: number | undefined;
3419
+ count?: boolean | undefined;
3420
+ }): Promise<AlternateEdocInfoCollectionResponse>;
3421
+ protected processListAlternateEdocs(response: Response): Promise<AlternateEdocInfoCollectionResponse>;
3422
+ /**
3423
+ * - Returns the name, MIME type, and size of the stream. This endpoint does not return the stream content.
3424
+ - The name is supplied as a query parameter rather than a path segment, because the legal character set includes characters that are significant to OData URI parsing.
3425
+ - Names match exactly. A name that differs only in letter case identifies a different stream on some repository configurations, so no case folding is applied.
3426
+ - Streams reserved for internal use are reported as not found.
3427
+ - Required OAuth scope: repository.Read
3428
+ * @param args.repositoryId The requested repository ID.
3429
+ * @param args.entryId The requested document ID.
3430
+ * @param args.name The name of the alternate electronic document. Matched exactly, so a name differing only in letter case is not found. Names reserved for internal use are also reported as not found.
3431
+ * @param args.select (optional) Limits the properties returned in the result.
3432
+ * @returns Successfully retrieved the metadata of the specified alternate electronic document.
3433
+ */
3434
+ getAlternateEdocInfo(args: {
3435
+ repositoryId: string;
3436
+ entryId: number;
3437
+ name: string | null;
3438
+ select?: string | null | undefined;
3439
+ }): Promise<AlternateEdocInfoResponse>;
3440
+ protected processGetAlternateEdocInfo(response: Response): Promise<AlternateEdocInfoResponse>;
3441
+ /**
3442
+ * - Writes a named binary stream stored alongside the document's primary electronic document, such as an audio recording, a source scan, or sidecar data. The stream is created when the document does not have one under that name, and its content fully replaced when it does. The primary electronic document, the pages, and the metadata are unaffected.
3443
+ - Send the content as multipart/form-data under the form field `file`. A zero-byte file is rejected; use the delete operation to remove an alternate electronic document.
3444
+ - The name is supplied as a query parameter rather than a path segment, because the legal character set includes characters that are significant to OData URI parsing.
3445
+ - Names are at most 15 characters long, and each character must be an ASCII letter, an ASCII digit, or one of `!@#$%^&()-+={}[]_~`.
3446
+ - Names match exactly. A name that differs only in letter case from one the document already has is rejected with 409 rather than written, because such a pair means different things on different repository configurations; reads and deletes stay exact-match.
3447
+ - Names reserved for internal use are rejected.
3448
+ - The optional `mimeType` form field sets the content's MIME type, at most 127 characters. When omitted it is derived from the uploaded file's content type and file name, falling back to `application/octet-stream`. The repository stores it lower-cased and without any parameters, so `Text/Plain; charset=utf-8` is stored as `text/plain`; the response reports the stored value.
3449
+ - Repeating an identical request is safe: the same content replaces itself.
3450
+ - Required OAuth scope: repository.Write
3451
+ * @param args.repositoryId The requested repository ID.
3452
+ * @param args.entryId The requested document ID.
3453
+ * @param args.name The name of the alternate electronic document. 1 to 15 characters, each an ASCII letter, an ASCII digit, or one of `!@#$%^&()-+={}[]_~`. An existing name has its content and MIME type replaced in full; a name differing from an existing one only in letter case is rejected with 409 and leaves that stream unchanged. Names reserved for internal use are rejected.
3454
+ * @param args.file (optional) The content to store. Any file type is accepted. A zero-byte file is rejected with 400; use the delete operation to remove an alternate electronic document.
3455
+ * @param args.mimeType (optional) Optional. The MIME type to set for the content, at most 127 characters. When omitted it is derived from the uploaded file's content type and file name, falling back to application/octet-stream. Stored lower-cased and without parameters, so Text/Plain; charset=utf-8 is stored as text/plain. Worth setting explicitly for audio and video, where the multipart content type is frequently generic or wrong.
3456
+ * @returns Successfully wrote the alternate electronic document. Returned its metadata as stored.
3457
+ */
3458
+ writeAlternateEdoc(args: {
3459
+ repositoryId: string;
3460
+ entryId: number;
3461
+ name: string | null;
3462
+ file?: FileParameter | undefined;
3463
+ mimeType?: string | undefined;
3464
+ }): Promise<AlternateEdocInfoResponse>;
3465
+ protected processWriteAlternateEdoc(response: Response): Promise<AlternateEdocInfoResponse>;
3466
+ /**
3467
+ * - Deletes a named binary stream stored alongside the document's primary electronic document. The primary electronic document, the pages, and the metadata are unaffected.
3468
+ - The name is supplied as a query parameter rather than a path segment, because the legal character set includes characters that are significant to OData URI parsing.
3469
+ - Names match exactly. A name that differs only in letter case identifies a different stream on some repository configurations, so no case folding is applied.
3470
+ - A name the document has no stream for is reported as not found.
3471
+ - Names reserved for internal use are rejected.
3472
+ - Required OAuth scope: repository.Write
3473
+ * @param args.repositoryId The requested repository ID.
3474
+ * @param args.entryId The requested document ID.
3475
+ * @param args.name The name of the alternate electronic document. Matched exactly, so a name differing only in letter case is not found. Names reserved for internal use are rejected.
3476
+ * @returns Successfully deleted the alternate electronic document.
3477
+ */
3478
+ deleteAlternateEdoc(args: {
3479
+ repositoryId: string;
3480
+ entryId: number;
3481
+ name: string | null;
3482
+ }): Promise<void>;
3483
+ protected processDeleteAlternateEdoc(response: Response): Promise<void>;
3484
+ /**
3485
+ * - Writes a named binary stream stored alongside the document's primary electronic document from a file uploaded in chunks, for content too large to send in a single request. The stream is created when the document does not have one under that name, and its content fully replaced when it does. The primary electronic document, the pages, and the metadata are unaffected.
3486
+ - Upload the content first: call CreateMultipartUploadUrls, write each chunk to the URLs it returns, then pass the same `uploadId` and the ETags here. There is no size limit at this tier beyond the one the upload itself enforces.
3487
+ - This operation runs in the background. It returns **202 Accepted** with a task ID; poll `/Tasks?taskIds={taskId}` for progress and the result. Use the PUT operation instead for content small enough to send at once, which completes synchronously.
3488
+ - The name is supplied as a query parameter rather than a path segment, because the legal character set includes characters that are significant to OData URI parsing.
3489
+ - Names are at most 15 characters long, and each character must be an ASCII letter, an ASCII digit, or one of `!@#$%^&()-+={}[]_~`.
3490
+ - Names match exactly. A name that differs only in letter case from one the document already has is rejected with 409 rather than written, because such a pair means different things on different repository configurations.
3491
+ - Names reserved for internal use are rejected.
3492
+ - The name, the MIME type and the case rule are all checked before the operation is accepted, so those errors come back on this request rather than on the task.
3493
+ - The optional `mimeType` sets the content's MIME type, at most 127 characters. When omitted it is taken from the MIME type supplied to CreateMultipartUploadUrls. The repository stores it lower-cased and without any parameters, so `Text/Plain; charset=utf-8` is stored as `text/plain`.
3494
+ - Required OAuth scope: repository.Write
3495
+ * @param args.repositoryId The requested repository ID.
3496
+ * @param args.entryId The requested document ID.
3497
+ * @param args.name The name of the alternate electronic document. 1 to 15 characters, each an ASCII letter, an ASCII digit, or one of `!@#$%^&()-+={}[]_~`. An existing name has its content and MIME type replaced in full; a name differing from an existing one only in letter case is rejected with 409 and leaves that stream unchanged. Names reserved for internal use are rejected. The name is validated before the operation is accepted, so a name error is returned on this request rather than on the task.
3498
+ * @param args.request The upload to assemble, and the MIME type to record.
3499
+ * @returns Successfully started the write alternate electronic document from uploaded parts operation. Returns a task ID for polling progress.
3500
+ */
3501
+ writeAltEdocUploadedParts(args: {
3502
+ repositoryId: string;
3503
+ entryId: number;
3504
+ name: string | null;
3505
+ request: WriteAltEdocUploadedPartsRequest;
3506
+ }): Promise<StartTaskResponse>;
3507
+ protected processWriteAltEdocUploadedParts(response: Response): Promise<StartTaskResponse>;
3219
3508
  /**
3220
3509
  * - Returns the raw image data for the specified page as a binary stream.
3221
3510
  - pageNumber is 1-based.
@@ -3250,6 +3539,60 @@ export declare class EntriesClient implements IEntriesClient {
3250
3539
  select?: string | null | undefined;
3251
3540
  }): Promise<PageTextResponse>;
3252
3541
  protected processGetPageText(response: Response): Promise<PageTextResponse>;
3542
+ /**
3543
+ * - Returns the offsets, in the text of the page, of the words the rectangle covers, together with that text.
3544
+ - All four rectangle parameters are required. Omitting one is a 400 rather than a coordinate of 0, because a rectangle silently moved to the edge of the page answers with a span the caller never asked about.
3545
+ - Coordinates are in raw page image pixels, with the origin at the top left of the unrotated image: X is measured in imageXResolution columns and Y in imageYResolution rows, which can differ from one another, and the image is the one described by imageWidth, imageHeight, imageXResolution, imageYResolution and imageRotationAngle on ListPageInfos. The page's own rotation is not applied, so a viewer that displays the page rotated or scaled must convert its own coordinates back to this space before calling.
3546
+ - A word counts as covered when the rectangle contains it, is contained by it, or overlaps it by at least 2 pixels and half of both its width and its height. A rectangle that lies entirely within the word on one axis - a thin stripe drawn through it - only has to clear the half threshold on the other axis. This is the same rule the Laserfiche viewers apply to a hand-drawn selection.
3547
+ - textStart is the offset of the first character of the span and textEnd is the offset one past its last character, so textEnd - textStart is the length of the span. This is the convention Web Access stores in text-linked highlight and redaction annotations, so the values can be written straight back to CreateAnnotation. Offsets are UTF-16 code unit indices into the text returned by GetPageText, including its line breaks.
3548
+ - The span runs from the first covered word to the last, so text can include characters that lie between covered words. text always equals the page text from textStart to textEnd.
3549
+ - When the rectangle covers no words, hasTextSpan is false, textStart and textEnd are both -1, text is empty and wordCount is 0. -1 is also the value the annotation surface uses for a span that is not linked to text.
3550
+ - Returns 404 when the page has no text or no word locations. A page has word locations when hasWordLocations is true on ListPageInfos; text is generated by GenerateText.
3551
+ - Returns 400 when the page carries more word locations than the server supports, which is 20,000 by default.
3552
+ - Required OAuth scope: repository.Read
3553
+ * @param args.repositoryId The requested repository ID.
3554
+ * @param args.entryId The requested document ID.
3555
+ * @param args.pageNumber The 1-based page number of the page to search.
3556
+ * @param args.x The X coordinate of the left edge of the rectangle, in page image pixels. Required, and may not be negative.
3557
+ * @param args.y The Y coordinate of the top edge of the rectangle, in page image pixels. Required, and may not be negative.
3558
+ * @param args.width The width of the rectangle, in page image pixels. Required, and must be at least 1.
3559
+ * @param args.height The height of the rectangle, in page image pixels. Required, and must be at least 1.
3560
+ * @param args.select (optional) Limits the properties returned in the result.
3561
+ * @returns Successfully retrieved the page text span covered by the specified rectangle.
3562
+ */
3563
+ getPageTextOffsets(args: {
3564
+ repositoryId: string;
3565
+ entryId: number;
3566
+ pageNumber: number;
3567
+ x: number | null;
3568
+ y: number | null;
3569
+ width: number | null;
3570
+ height: number | null;
3571
+ select?: string | null | undefined;
3572
+ }): Promise<PageTextOffsetsResponse>;
3573
+ protected processGetPageTextOffsets(response: Response): Promise<PageTextOffsetsResponse>;
3574
+ /**
3575
+ * - Returns every word of the page, in reading order, with its text offsets and its rectangle on the page image. This is the data the hasWordLocations and locationsDataSize properties on ListPageInfos advertise.
3576
+ - The whole page is returned in one response; there is no paging, because the order of the words is itself part of the data. A page carrying more word locations than the server supports, which is 20,000 by default, is refused with a 400 rather than truncated.
3577
+ - Coordinates are in raw page image pixels, with the origin at the top left of the unrotated image: X is measured in imageXResolution columns and Y in imageYResolution rows, which can differ from one another. The envelope repeats the page image geometry so the coordinates can be interpreted without a second call, and imageRotationAngle is reported but not applied - overlay code must apply its own rotation and scaling.
3578
+ - textStart is the offset of the first character of the word and textEnd is the offset one past its last character, so textEnd - textStart is the length of the word. Offsets are UTF-16 code unit indices into the text returned by GetPageText, including its line breaks, and use the same convention as the text-linked highlight and redaction annotations.
3579
+ - To find the rectangles that render a text span [spanStart, spanEnd), such as the span stored on an existing highlight or redaction annotation, take every entry where word.textStart < spanEnd and word.textEnd > spanStart, and use those entries' rectangles. Entries that overlap vertically are on the same line of text, so horizontally adjacent boxes within such a group can be merged into one box per line.
3580
+ - width and height can both be 0 for a location OCR produced for a word it could not place. Such entries are still returned, because the order of the words is what pairs them with the page text.
3581
+ - Returns 404 when the page has no text or no word locations. Word locations are produced by GenerateText along with the page text.
3582
+ - Required OAuth scope: repository.Read
3583
+ * @param args.repositoryId The requested repository ID.
3584
+ * @param args.entryId The requested document ID.
3585
+ * @param args.pageNumber The 1-based page number of the page to retrieve the word locations for.
3586
+ * @param args.select (optional) Limits the properties returned in the result.
3587
+ * @returns Successfully retrieved the word locations for the specified page.
3588
+ */
3589
+ listPageWordLocations(args: {
3590
+ repositoryId: string;
3591
+ entryId: number;
3592
+ pageNumber: number;
3593
+ select?: string | null | undefined;
3594
+ }): Promise<PageWordLocationsResponse>;
3595
+ protected processListPageWordLocations(response: Response): Promise<PageWordLocationsResponse>;
3253
3596
  /**
3254
3597
  * - Triggers server-side text generation for the specified document.
3255
3598
  - For documents with image pages, this performs OCR to generate searchable text.
@@ -7064,7 +7407,10 @@ export declare enum FieldRight {
7064
7407
  }
7065
7408
  /** Request body for replacing a template field definition's access control list. The supplied entries fully replace the field's existing explicit ACL. Inherited entries are not accepted. */
7066
7409
  export declare class SetFieldAccessControlRequest implements ISetFieldAccessControlRequest {
7067
- /** The access control entries to set. Replaces the field's entire explicit ACL. */
7410
+ /** The access control entries to set. Required. Replaces the field's entire explicit
7411
+ ACL; an empty array clears it.
7412
+ Deliberately left without a default: this is a full replace, so an omitted or null
7413
+ member has to stay distinguishable from an explicitly sent empty array. */
7068
7414
  entries?: FieldAccessControlEntry[] | undefined;
7069
7415
  constructor(data?: ISetFieldAccessControlRequest);
7070
7416
  init(_data?: any): void;
@@ -7073,7 +7419,10 @@ export declare class SetFieldAccessControlRequest implements ISetFieldAccessCont
7073
7419
  }
7074
7420
  /** Request body for replacing a template field definition's access control list. The supplied entries fully replace the field's existing explicit ACL. Inherited entries are not accepted. */
7075
7421
  export interface ISetFieldAccessControlRequest {
7076
- /** The access control entries to set. Replaces the field's entire explicit ACL. */
7422
+ /** The access control entries to set. Required. Replaces the field's entire explicit
7423
+ ACL; an empty array clears it.
7424
+ Deliberately left without a default: this is a full replace, so an omitted or null
7425
+ member has to stay distinguishable from an explicitly sent empty array. */
7077
7426
  entries?: FieldAccessControlEntry[] | undefined;
7078
7427
  }
7079
7428
  /** A trustee's rights to a template field definition. Depending on the aclOnly option on the request, these are either the effective rights (the net result after group membership, allow/deny resolution, and the repository's privilege overlay) or the rights granted by the field's access control list alone. */
@@ -7390,8 +7739,14 @@ export declare class StartExportEntryRequest implements IStartExportEntryRequest
7390
7739
  auditReasonId?: number;
7391
7740
  /** The comment for this audit event. */
7392
7741
  auditReasonComment?: string | undefined;
7393
- /** Specifies the part of the document to export. */
7742
+ /** Specifies the part of the document to export. Options include: Image, Text, Edoc,
7743
+ AlternateEdoc. AlternateEdoc also requires alternateEdocName. */
7394
7744
  part: ExportEntryRequestPart;
7745
+ /** The name of the alternate electronic document to export. Required when part=AlternateEdoc,
7746
+ and rejected for every other part. 1 to 15 characters, each an ASCII letter, an ASCII
7747
+ digit, or one of `!@#$%^&()-+={}[]_~`. Matched exactly, so a name differing only in
7748
+ letter case is not found. Names reserved for internal use are also reported as not found. */
7749
+ alternateEdocName?: string | undefined;
7395
7750
  /** The options applied when exporting as Image. */
7396
7751
  imageOptions?: ExportEntryRequestImageOptions | undefined;
7397
7752
  /** The options applied when exporting as Text. */
@@ -7407,8 +7762,14 @@ export interface IStartExportEntryRequest {
7407
7762
  auditReasonId?: number;
7408
7763
  /** The comment for this audit event. */
7409
7764
  auditReasonComment?: string | undefined;
7410
- /** Specifies the part of the document to export. */
7765
+ /** Specifies the part of the document to export. Options include: Image, Text, Edoc,
7766
+ AlternateEdoc. AlternateEdoc also requires alternateEdocName. */
7411
7767
  part: ExportEntryRequestPart;
7768
+ /** The name of the alternate electronic document to export. Required when part=AlternateEdoc,
7769
+ and rejected for every other part. 1 to 15 characters, each an ASCII letter, an ASCII
7770
+ digit, or one of `!@#$%^&()-+={}[]_~`. Matched exactly, so a name differing only in
7771
+ letter case is not found. Names reserved for internal use are also reported as not found. */
7772
+ alternateEdocName?: string | undefined;
7412
7773
  /** The options applied when exporting as Image. */
7413
7774
  imageOptions?: ExportEntryRequestImageOptions | undefined;
7414
7775
  /** The options applied when exporting as Text. */
@@ -7418,7 +7779,8 @@ export interface IStartExportEntryRequest {
7418
7779
  export declare enum ExportEntryRequestPart {
7419
7780
  Image = "Image",
7420
7781
  Text = "Text",
7421
- Edoc = "Edoc"
7782
+ Edoc = "Edoc",
7783
+ AlternateEdoc = "AlternateEdoc"
7422
7784
  }
7423
7785
  /** Represents the options when exporting the image part of an entry. */
7424
7786
  export declare class ExportEntryRequestImageOptions implements IExportEntryRequestImageOptions {
@@ -7716,6 +8078,10 @@ it aggregates across all of the document's pages. */
7716
8078
  extension?: string | undefined;
7717
8079
  /** A boolean indicating if there is an electronic document attached to the represented document. */
7718
8080
  isElectronicDocument?: boolean;
8081
+ /** Whether the document has any alternate electronic documents — named binary streams
8082
+ stored alongside the primary electronic document, such as an audio recording, a source
8083
+ scan, or sidecar data. Use GET .../Document/AlternateEdocs to enumerate them. */
8084
+ hasAlternateEdocs?: boolean | undefined;
7719
8085
  /** A boolean indicating if the represented document is a record. */
7720
8086
  isRecord?: boolean;
7721
8087
  /** The MIME type of the electronic document. */
@@ -7767,6 +8133,10 @@ it aggregates across all of the document's pages. */
7767
8133
  extension?: string | undefined;
7768
8134
  /** A boolean indicating if there is an electronic document attached to the represented document. */
7769
8135
  isElectronicDocument?: boolean;
8136
+ /** Whether the document has any alternate electronic documents — named binary streams
8137
+ stored alongside the primary electronic document, such as an audio recording, a source
8138
+ scan, or sidecar data. Use GET .../Document/AlternateEdocs to enumerate them. */
8139
+ hasAlternateEdocs?: boolean | undefined;
7770
8140
  /** A boolean indicating if the represented document is a record. */
7771
8141
  isRecord?: boolean;
7772
8142
  /** The MIME type of the electronic document. */
@@ -7950,8 +8320,14 @@ export declare class ExportEntryRequest implements IExportEntryRequest {
7950
8320
  auditReasonId?: number;
7951
8321
  /** The comment for this audit event. */
7952
8322
  auditReasonComment?: string | undefined;
7953
- /** The part of the document to export. Options include: Image, Text, Edoc. */
8323
+ /** The part of the document to export. Options include: Image, Text, Edoc,
8324
+ AlternateEdoc. AlternateEdoc also requires alternateEdocName. */
7954
8325
  part: ExportEntryRequestPart;
8326
+ /** The name of the alternate electronic document to export. Required when part=AlternateEdoc,
8327
+ and rejected for every other part. 1 to 15 characters, each an ASCII letter, an ASCII
8328
+ digit, or one of `!@#$%^&()-+={}[]_~`. Matched exactly, so a name differing only in
8329
+ letter case is not found. Names reserved for internal use are also reported as not found. */
8330
+ alternateEdocName?: string | undefined;
7955
8331
  /** The options applied when exporting as Image. */
7956
8332
  imageOptions?: ExportEntryRequestImageOptions | undefined;
7957
8333
  /** The options applied when exporting as Text. */
@@ -7967,8 +8343,14 @@ export interface IExportEntryRequest {
7967
8343
  auditReasonId?: number;
7968
8344
  /** The comment for this audit event. */
7969
8345
  auditReasonComment?: string | undefined;
7970
- /** The part of the document to export. Options include: Image, Text, Edoc. */
8346
+ /** The part of the document to export. Options include: Image, Text, Edoc,
8347
+ AlternateEdoc. AlternateEdoc also requires alternateEdocName. */
7971
8348
  part: ExportEntryRequestPart;
8349
+ /** The name of the alternate electronic document to export. Required when part=AlternateEdoc,
8350
+ and rejected for every other part. 1 to 15 characters, each an ASCII letter, an ASCII
8351
+ digit, or one of `!@#$%^&()-+={}[]_~`. Matched exactly, so a name differing only in
8352
+ letter case is not found. Names reserved for internal use are also reported as not found. */
8353
+ alternateEdocName?: string | undefined;
7972
8354
  /** The options applied when exporting as Image. */
7973
8355
  imageOptions?: ExportEntryRequestImageOptions | undefined;
7974
8356
  /** The options applied when exporting as Text. */
@@ -8060,7 +8442,10 @@ export interface IFieldCollectionResponse {
8060
8442
  }
8061
8443
  /** Request body for assigning fields to an entry. */
8062
8444
  export declare class SetFieldsRequest implements ISetFieldsRequest {
8063
- /** The fields that will be assigned to the entry. */
8445
+ /** The fields that will be assigned to the entry. Required.
8446
+ Deliberately left without a default: this is an overwrite action, so an omitted
8447
+ or null member has to stay distinguishable from an explicitly sent empty list,
8448
+ which clears every field value. */
8064
8449
  fields?: FieldToUpdate[] | undefined;
8065
8450
  constructor(data?: ISetFieldsRequest);
8066
8451
  init(_data?: any): void;
@@ -8069,7 +8454,10 @@ export declare class SetFieldsRequest implements ISetFieldsRequest {
8069
8454
  }
8070
8455
  /** Request body for assigning fields to an entry. */
8071
8456
  export interface ISetFieldsRequest {
8072
- /** The fields that will be assigned to the entry. */
8457
+ /** The fields that will be assigned to the entry. Required.
8458
+ Deliberately left without a default: this is an overwrite action, so an omitted
8459
+ or null member has to stay distinguishable from an explicitly sent empty list,
8460
+ which clears every field value. */
8073
8461
  fields?: FieldToUpdate[] | undefined;
8074
8462
  }
8075
8463
  /** Response containing a collection of Tag. */
@@ -8164,7 +8552,10 @@ export interface ITagDefinitionWatermark {
8164
8552
  }
8165
8553
  /** Request body for assigning tags to an entry. */
8166
8554
  export declare class SetTagsRequest implements ISetTagsRequest {
8167
- /** The tag names to assign to the entry. */
8555
+ /** The tag names to assign to the entry. Required.
8556
+ Deliberately left without a default: this is an overwrite action, so an omitted
8557
+ or null member has to stay distinguishable from an explicitly sent empty list,
8558
+ which unassigns every tag. */
8168
8559
  tags?: string[] | undefined;
8169
8560
  constructor(data?: ISetTagsRequest);
8170
8561
  init(_data?: any): void;
@@ -8173,7 +8564,10 @@ export declare class SetTagsRequest implements ISetTagsRequest {
8173
8564
  }
8174
8565
  /** Request body for assigning tags to an entry. */
8175
8566
  export interface ISetTagsRequest {
8176
- /** The tag names to assign to the entry. */
8567
+ /** The tag names to assign to the entry. Required.
8568
+ Deliberately left without a default: this is an overwrite action, so an omitted
8569
+ or null member has to stay distinguishable from an explicitly sent empty list,
8570
+ which unassigns every tag. */
8177
8571
  tags?: string[] | undefined;
8178
8572
  }
8179
8573
  /** Response containing a collection of Link. */
@@ -8266,7 +8660,10 @@ export interface ILink {
8266
8660
  }
8267
8661
  /** Request body for assigning links to an entry. */
8268
8662
  export declare class SetLinksRequest implements ISetLinksRequest {
8269
- /** The links that will be assigned to the entry. */
8663
+ /** The links that will be assigned to the entry. Required.
8664
+ Deliberately left without a default: this is an overwrite action, so an omitted
8665
+ or null member has to stay distinguishable from an explicitly sent empty list,
8666
+ which removes every link. */
8270
8667
  links?: LinkToUpdate[] | undefined;
8271
8668
  constructor(data?: ISetLinksRequest);
8272
8669
  init(_data?: any): void;
@@ -8275,7 +8672,10 @@ export declare class SetLinksRequest implements ISetLinksRequest {
8275
8672
  }
8276
8673
  /** Request body for assigning links to an entry. */
8277
8674
  export interface ISetLinksRequest {
8278
- /** The links that will be assigned to the entry. */
8675
+ /** The links that will be assigned to the entry. Required.
8676
+ Deliberately left without a default: this is an overwrite action, so an omitted
8677
+ or null member has to stay distinguishable from an explicitly sent empty list,
8678
+ which removes every link. */
8279
8679
  links?: LinkToUpdate[] | undefined;
8280
8680
  }
8281
8681
  /** Request body for copying an entry. */
@@ -8559,6 +8959,74 @@ export interface IPageInfoResponse {
8559
8959
  imageXResolution?: number;
8560
8960
  imageYResolution?: number;
8561
8961
  }
8962
+ /** Response containing a collection of AlternateEdocInfoResponse. */
8963
+ export declare class AlternateEdocInfoCollectionResponse implements IAlternateEdocInfoCollectionResponse {
8964
+ /** A URL to retrieve the next page of the requested collection. */
8965
+ odataNextLink?: string | undefined;
8966
+ /** The total count of items within a collection. */
8967
+ odataCount?: number | undefined;
8968
+ /** Gets or sets the OData response content in the "value". */
8969
+ value?: AlternateEdocInfoResponse[] | undefined;
8970
+ constructor(data?: IAlternateEdocInfoCollectionResponse);
8971
+ init(_data?: any): void;
8972
+ static fromJS(data: any): AlternateEdocInfoCollectionResponse;
8973
+ toJSON(data?: any): any;
8974
+ }
8975
+ /** Response containing a collection of AlternateEdocInfoResponse. */
8976
+ export interface IAlternateEdocInfoCollectionResponse {
8977
+ /** A URL to retrieve the next page of the requested collection. */
8978
+ odataNextLink?: string | undefined;
8979
+ /** The total count of items within a collection. */
8980
+ odataCount?: number | undefined;
8981
+ /** Gets or sets the OData response content in the "value". */
8982
+ value?: AlternateEdocInfoResponse[] | undefined;
8983
+ }
8984
+ /** Describes one alternate electronic document stream attached to a document. */
8985
+ export declare class AlternateEdocInfoResponse implements IAlternateEdocInfoResponse {
8986
+ /** The name of the alternate electronic document stream, unique within the document. */
8987
+ name?: string | undefined;
8988
+ /** The MIME type recorded for the stream's content, or an empty string when the
8989
+ repository holds none. */
8990
+ mimeType?: string | undefined;
8991
+ /** The size of the stream's content in bytes. */
8992
+ size?: number;
8993
+ constructor(data?: IAlternateEdocInfoResponse);
8994
+ init(_data?: any): void;
8995
+ static fromJS(data: any): AlternateEdocInfoResponse;
8996
+ toJSON(data?: any): any;
8997
+ }
8998
+ /** Describes one alternate electronic document stream attached to a document. */
8999
+ export interface IAlternateEdocInfoResponse {
9000
+ /** The name of the alternate electronic document stream, unique within the document. */
9001
+ name?: string | undefined;
9002
+ /** The MIME type recorded for the stream's content, or an empty string when the
9003
+ repository holds none. */
9004
+ mimeType?: string | undefined;
9005
+ /** The size of the stream's content in bytes. */
9006
+ size?: number;
9007
+ }
9008
+ /** Request body for writing an alternate electronic document from previously uploaded parts. */
9009
+ export declare class WriteAltEdocUploadedPartsRequest implements IWriteAltEdocUploadedPartsRequest {
9010
+ /** The UploadId received when calling the CreateMultipartUploadUrls API to request upload URLs. */
9011
+ uploadId: string;
9012
+ /** The array of the ETag values received when writing the file chunks into the upload URLs. The ETag values should be in the order of their associated upload URLs. */
9013
+ partETags: string[];
9014
+ /** The MIME type to record for the content, at most 127 characters. When omitted, the MIME type supplied to CreateMultipartUploadUrls is recorded instead. The repository stores the value lower-cased and without any parameters, so "Text/Plain; charset=utf-8" is stored as "text/plain". */
9015
+ mimeType?: string | undefined;
9016
+ constructor(data?: IWriteAltEdocUploadedPartsRequest);
9017
+ init(_data?: any): void;
9018
+ static fromJS(data: any): WriteAltEdocUploadedPartsRequest;
9019
+ toJSON(data?: any): any;
9020
+ }
9021
+ /** Request body for writing an alternate electronic document from previously uploaded parts. */
9022
+ export interface IWriteAltEdocUploadedPartsRequest {
9023
+ /** The UploadId received when calling the CreateMultipartUploadUrls API to request upload URLs. */
9024
+ uploadId: string;
9025
+ /** The array of the ETag values received when writing the file chunks into the upload URLs. The ETag values should be in the order of their associated upload URLs. */
9026
+ partETags: string[];
9027
+ /** The MIME type to record for the content, at most 127 characters. When omitted, the MIME type supplied to CreateMultipartUploadUrls is recorded instead. The repository stores the value lower-cased and without any parameters, so "Text/Plain; charset=utf-8" is stored as "text/plain". */
9028
+ mimeType?: string | undefined;
9029
+ }
8562
9030
  export declare class PageTextResponse implements IPageTextResponse {
8563
9031
  text?: string | undefined;
8564
9032
  constructor(data?: IPageTextResponse);
@@ -8569,6 +9037,128 @@ export declare class PageTextResponse implements IPageTextResponse {
8569
9037
  export interface IPageTextResponse {
8570
9038
  text?: string | undefined;
8571
9039
  }
9040
+ /** The page text span covered by a rectangle drawn on a page image. */
9041
+ export declare class PageTextOffsetsResponse implements IPageTextOffsetsResponse {
9042
+ /** True when at least one word on the page intersects the requested rectangle.
9043
+ False when the rectangle covers no words, in which case textStart and textEnd are both -1. */
9044
+ hasTextSpan?: boolean;
9045
+ /** The offset of the first character of the covered span, or -1 when no word is covered. */
9046
+ textStart?: number;
9047
+ /** The offset one past the last character of the covered span (textEnd - textStart is the
9048
+ span length), or -1 when no word is covered. */
9049
+ textEnd?: number;
9050
+ /** The page text between textStart and textEnd, or an empty string when no word is covered. */
9051
+ text?: string | undefined;
9052
+ /** The number of words the rectangle covers. */
9053
+ wordCount?: number;
9054
+ constructor(data?: IPageTextOffsetsResponse);
9055
+ init(_data?: any): void;
9056
+ static fromJS(data: any): PageTextOffsetsResponse;
9057
+ toJSON(data?: any): any;
9058
+ }
9059
+ /** The page text span covered by a rectangle drawn on a page image. */
9060
+ export interface IPageTextOffsetsResponse {
9061
+ /** True when at least one word on the page intersects the requested rectangle.
9062
+ False when the rectangle covers no words, in which case textStart and textEnd are both -1. */
9063
+ hasTextSpan?: boolean;
9064
+ /** The offset of the first character of the covered span, or -1 when no word is covered. */
9065
+ textStart?: number;
9066
+ /** The offset one past the last character of the covered span (textEnd - textStart is the
9067
+ span length), or -1 when no word is covered. */
9068
+ textEnd?: number;
9069
+ /** The page text between textStart and textEnd, or an empty string when no word is covered. */
9070
+ text?: string | undefined;
9071
+ /** The number of words the rectangle covers. */
9072
+ wordCount?: number;
9073
+ }
9074
+ /** The word locations of a page, together with the page image geometry the coordinates are expressed in. */
9075
+ export declare class PageWordLocationsResponse implements IPageWordLocationsResponse {
9076
+ /** The 1-based page number. */
9077
+ pageNumber?: number;
9078
+ /** The width of the page image, in pixels. */
9079
+ imageWidth?: number;
9080
+ /** The height of the page image, in pixels. */
9081
+ imageHeight?: number;
9082
+ /** The horizontal resolution of the page image, in pixels per inch. */
9083
+ imageXResolution?: number;
9084
+ /** The vertical resolution of the page image, in pixels per inch. This can differ from
9085
+ imageXResolution, in which case the coordinate space is anisotropic. */
9086
+ imageYResolution?: number;
9087
+ /** The rotation the viewer applies to the page image, in degrees. Word location
9088
+ coordinates are relative to the unrotated image and do not include this rotation. */
9089
+ imageRotationAngle?: number;
9090
+ /** The words of the page, in reading order, each with its text offsets and its location
9091
+ on the page image. */
9092
+ wordLocations?: PageWordLocation[] | undefined;
9093
+ constructor(data?: IPageWordLocationsResponse);
9094
+ init(_data?: any): void;
9095
+ static fromJS(data: any): PageWordLocationsResponse;
9096
+ toJSON(data?: any): any;
9097
+ }
9098
+ /** The word locations of a page, together with the page image geometry the coordinates are expressed in. */
9099
+ export interface IPageWordLocationsResponse {
9100
+ /** The 1-based page number. */
9101
+ pageNumber?: number;
9102
+ /** The width of the page image, in pixels. */
9103
+ imageWidth?: number;
9104
+ /** The height of the page image, in pixels. */
9105
+ imageHeight?: number;
9106
+ /** The horizontal resolution of the page image, in pixels per inch. */
9107
+ imageXResolution?: number;
9108
+ /** The vertical resolution of the page image, in pixels per inch. This can differ from
9109
+ imageXResolution, in which case the coordinate space is anisotropic. */
9110
+ imageYResolution?: number;
9111
+ /** The rotation the viewer applies to the page image, in degrees. Word location
9112
+ coordinates are relative to the unrotated image and do not include this rotation. */
9113
+ imageRotationAngle?: number;
9114
+ /** The words of the page, in reading order, each with its text offsets and its location
9115
+ on the page image. */
9116
+ wordLocations?: PageWordLocation[] | undefined;
9117
+ }
9118
+ /** One word of a page, with its position in the page text and its rectangle on the page image. */
9119
+ export declare class PageWordLocation implements IPageWordLocation {
9120
+ /** The text of the word. */
9121
+ word?: string | undefined;
9122
+ /** The offset of the first character of the word in the page text. */
9123
+ textStart?: number;
9124
+ /** The offset one past the last character of the word in the page text
9125
+ (textEnd - textStart is the word length). */
9126
+ textEnd?: number;
9127
+ /** The X coordinate of the left edge of the word, in page image pixels. */
9128
+ x?: number;
9129
+ /** The Y coordinate of the top edge of the word, in page image pixels. */
9130
+ y?: number;
9131
+ /** The width of the word, in page image pixels. This can be 0 for a degenerate location
9132
+ produced by OCR. */
9133
+ width?: number;
9134
+ /** The height of the word, in page image pixels. This can be 0 for a degenerate location
9135
+ produced by OCR. */
9136
+ height?: number;
9137
+ constructor(data?: IPageWordLocation);
9138
+ init(_data?: any): void;
9139
+ static fromJS(data: any): PageWordLocation;
9140
+ toJSON(data?: any): any;
9141
+ }
9142
+ /** One word of a page, with its position in the page text and its rectangle on the page image. */
9143
+ export interface IPageWordLocation {
9144
+ /** The text of the word. */
9145
+ word?: string | undefined;
9146
+ /** The offset of the first character of the word in the page text. */
9147
+ textStart?: number;
9148
+ /** The offset one past the last character of the word in the page text
9149
+ (textEnd - textStart is the word length). */
9150
+ textEnd?: number;
9151
+ /** The X coordinate of the left edge of the word, in page image pixels. */
9152
+ x?: number;
9153
+ /** The Y coordinate of the top edge of the word, in page image pixels. */
9154
+ y?: number;
9155
+ /** The width of the word, in page image pixels. This can be 0 for a degenerate location
9156
+ produced by OCR. */
9157
+ width?: number;
9158
+ /** The height of the word, in page image pixels. This can be 0 for a degenerate location
9159
+ produced by OCR. */
9160
+ height?: number;
9161
+ }
8572
9162
  /** Request body for listing dynamic field values for an entry. */
8573
9163
  export declare class ListDynamicFieldValuesRequest implements IListDynamicFieldValuesRequest {
8574
9164
  /** The template id. */
@@ -8796,8 +9386,10 @@ export declare enum EntryAccessScope {
8796
9386
  }
8797
9387
  /** Request body to replace an entry's explicit access control list. This is a full replace: the supplied entries become the entry's complete set of explicit ACEs (any explicit ACE not included is removed). Inherited ACEs cannot be supplied and are managed via inheritParents. */
8798
9388
  export declare class SetAccessControlRequest implements ISetAccessControlRequest {
8799
- /** The explicit access control entries to apply. An empty array clears all explicit ACEs.
8800
- Entries flagged isInherited = true are rejected. */
9389
+ /** The explicit access control entries to apply. Required. An empty array clears all
9390
+ explicit ACEs. Entries flagged isInherited = true are rejected.
9391
+ Deliberately left without a default: this is a full replace, so an omitted or null
9392
+ member has to stay distinguishable from an explicitly sent empty array. */
8801
9393
  entries?: AccessControlEntry[] | undefined;
8802
9394
  /** Whether the entry should inherit access rights from its parent(s). When omitted, the
8803
9395
  entry's current inheritance setting is preserved. When false, the ACL is protected
@@ -8810,8 +9402,10 @@ from parent inheritance; when true, parent rights are inherited. */
8810
9402
  }
8811
9403
  /** Request body to replace an entry's explicit access control list. This is a full replace: the supplied entries become the entry's complete set of explicit ACEs (any explicit ACE not included is removed). Inherited ACEs cannot be supplied and are managed via inheritParents. */
8812
9404
  export interface ISetAccessControlRequest {
8813
- /** The explicit access control entries to apply. An empty array clears all explicit ACEs.
8814
- Entries flagged isInherited = true are rejected. */
9405
+ /** The explicit access control entries to apply. Required. An empty array clears all
9406
+ explicit ACEs. Entries flagged isInherited = true are rejected.
9407
+ Deliberately left without a default: this is a full replace, so an omitted or null
9408
+ member has to stay distinguishable from an explicitly sent empty array. */
8815
9409
  entries?: AccessControlEntry[] | undefined;
8816
9410
  /** Whether the entry should inherit access rights from its parent(s). When omitted, the
8817
9411
  entry's current inheritance setting is preserved. When false, the ACL is protected
@@ -9713,7 +10307,8 @@ export declare enum TaskType {
9713
10307
  DeleteEntry = "DeleteEntry",
9714
10308
  ExportEntry = "ExportEntry",
9715
10309
  ImportUploadedParts = "ImportUploadedParts",
9716
- SearchEntry = "SearchEntry"
10310
+ SearchEntry = "SearchEntry",
10311
+ WriteAltEdocUploadedParts = "WriteAltEdocUploadedParts"
9717
10312
  }
9718
10313
  /** An enumeration of possible statuses for a long operation task. */
9719
10314
  export declare enum TaskStatus {
@@ -10138,7 +10733,10 @@ export declare enum TemplateRight {
10138
10733
  }
10139
10734
  /** Request body for replacing a template definition's access control list. The supplied entries fully replace the template's existing explicit ACL. Inherited entries are not accepted. */
10140
10735
  export declare class SetTemplateAccessControlRequest implements ISetTemplateAccessControlRequest {
10141
- /** The access control entries to set. Replaces the template's entire explicit ACL. */
10736
+ /** The access control entries to set. Required. Replaces the template's entire explicit
10737
+ ACL; an empty array clears it.
10738
+ Deliberately left without a default: this is a full replace, so an omitted or null
10739
+ member has to stay distinguishable from an explicitly sent empty array. */
10142
10740
  entries?: TemplateAccessControlEntry[] | undefined;
10143
10741
  constructor(data?: ISetTemplateAccessControlRequest);
10144
10742
  init(_data?: any): void;
@@ -10147,7 +10745,10 @@ export declare class SetTemplateAccessControlRequest implements ISetTemplateAcce
10147
10745
  }
10148
10746
  /** Request body for replacing a template definition's access control list. The supplied entries fully replace the template's existing explicit ACL. Inherited entries are not accepted. */
10149
10747
  export interface ISetTemplateAccessControlRequest {
10150
- /** The access control entries to set. Replaces the template's entire explicit ACL. */
10748
+ /** The access control entries to set. Required. Replaces the template's entire explicit
10749
+ ACL; an empty array clears it.
10750
+ Deliberately left without a default: this is a full replace, so an omitted or null
10751
+ member has to stay distinguishable from an explicitly sent empty array. */
10151
10752
  entries?: TemplateAccessControlEntry[] | undefined;
10152
10753
  }
10153
10754
  /** A trustee's rights to a template definition. Depending on the aclOnly option on the request, these are either the effective rights (the net result after group membership, allow/deny resolution, and the repository's privilege overlay) or the rights granted by the template's access control list alone. */