From 7c8e6093eb1e91f79c4cb86c2aeb0825faddaa50 Mon Sep 17 00:00:00 2001 From: XingY Date: Thu, 23 Oct 2025 21:48:12 -0700 Subject: [PATCH 1/5] Add auditing of what method was used for data imports, updates, deletes --- CHANGELOG.md | 3 +++ package-lock.json | 4 ++-- package.json | 2 +- src/labkey/query/Rows.ts | 8 ++++++++ 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fc43abd..02d56cb6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +### 1.43.1 - 2025-X +- Command and QueryRequestOptions: add auditDetails parameter + ### 1.43.0 - 2025-08-29 - Support `File` values directly in `Assay.importRun()` for `batchProperties` and (run) `properties` - Can only be run with corresponding server-side changes in LabKey v25.09 diff --git a/package-lock.json b/package-lock.json index 8b472032..e51bc3e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@labkey/api", - "version": "1.43.0", + "version": "1.43.1-fb-transactionAuditDetails.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@labkey/api", - "version": "1.43.0", + "version": "1.43.1-fb-transactionAuditDetails.1", "license": "Apache-2.0", "devDependencies": { "@babel/core": "7.27.4", diff --git a/package.json b/package.json index 36bf33fd..e3db336a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@labkey/api", - "version": "1.43.0", + "version": "1.43.1-fb-transactionAuditDetails.1", "description": "JavaScript client API for LabKey Server", "scripts": { "build": "npm run build:dist && npm run build:docs", diff --git a/src/labkey/query/Rows.ts b/src/labkey/query/Rows.ts index b0d16d0b..3a740569 100644 --- a/src/labkey/query/Rows.ts +++ b/src/labkey/query/Rows.ts @@ -22,6 +22,8 @@ export interface QueryRequestOptions extends RequestCallbackOptions { apiVersion?: number | string; /** Can be used to override the audit behavior for the table the query is acting on. See {@link AuditBehaviorTypes}. */ auditBehavior?: AuditBehaviorTypes; + /** Optional audit details to record in the transaction audit log for this command. */ + auditDetails?: any; /** Can be used to provide a comment from the user that will be attached to certain detailed audit log records. */ auditUserComment?: string; /** @@ -213,6 +215,10 @@ export interface ModifyRowsResults { export interface Command { /** Can be used to override the audit behavior for the table the Command is acting on. See{@link AuditBehaviorTypes}. */ auditBehavior?: AuditBehaviorTypes; + + /** Optional audit details to record in the transaction audit log for this command. */ + auditDetails?: any; + /** Can be used to provide a comment from the user that will be attached to certain detailed audit log records. */ auditUserComment?: string; /** Name of the command to be performed. Must be one of "insert", "update", or "delete". */ @@ -449,6 +455,7 @@ function sendRequest(options: SendRequestOptions, supportsFiles?: boolean): XMLH transacted: options.transacted, extraContext: options.extraContext, auditBehavior: options.auditBehavior, + auditDetails: options.auditDetails, auditUserComment: options.auditUserComment, skipReselectRows: options.skipReselectRows, }; @@ -517,6 +524,7 @@ export function moveRows(options: MoveRowsOptions): XMLHttpRequest { queryName: options.queryName, rows: options.rows, auditBehavior: options.auditBehavior, + auditDetails: options.auditDetails, auditUserComment: options.auditUserComment, dataRegionSelectionKey: options.dataRegionSelectionKey, useSnapshotSelection: options.useSnapshotSelection, From 068e7ff5081490fe8e5b2fee3573a818b14eaaef Mon Sep 17 00:00:00 2001 From: XingY Date: Sun, 26 Oct 2025 15:03:43 -0700 Subject: [PATCH 2/5] Add test --- package.json | 2 +- src/labkey/query/Rows.ts | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index e3db336a..dc6908f6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@labkey/api", - "version": "1.43.1-fb-transactionAuditDetails.1", + "version": "1.43.1-fb-transactionAuditDetails.2", "description": "JavaScript client API for LabKey Server", "scripts": { "build": "npm run build:dist && npm run build:docs", diff --git a/src/labkey/query/Rows.ts b/src/labkey/query/Rows.ts index 3a740569..9791bef3 100644 --- a/src/labkey/query/Rows.ts +++ b/src/labkey/query/Rows.ts @@ -273,6 +273,11 @@ export interface SaveRowsResponse { } export interface SaveRowsOptions extends RequestCallbackOptions { + + /** + * Optional audit details to record in the transaction audit log for this command. + */ + auditDetails?: any; /** * Version of the API. If this is 13.2 or higher, a request that fails * validation will be returned as a successful response. Use the 'errorCount' and 'committed' properties in the @@ -370,6 +375,7 @@ export function saveRows(options: SaveRowsOptions): XMLHttpRequest { // options = queryArguments(arguments); // } const jsonData = { + auditDetails: options.auditDetails, apiVersion: options.apiVersion, commands: options.commands, containerPath: options.containerPath, From 8ede951ac7e6d927f0d9310bfdd72dd074dac1b1 Mon Sep 17 00:00:00 2001 From: XingY Date: Fri, 31 Oct 2025 11:45:28 -0700 Subject: [PATCH 3/5] Bug fixes --- package.json | 2 +- src/labkey/dom/Assay.ts | 4 ++++ src/labkey/dom/Query.ts | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index dc6908f6..088e559b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@labkey/api", - "version": "1.43.1-fb-transactionAuditDetails.2", + "version": "1.43.1-fb-transactionAuditDetails.5", "description": "JavaScript client API for LabKey Server", "scripts": { "build": "npm run build:dist && npm run build:docs", diff --git a/src/labkey/dom/Assay.ts b/src/labkey/dom/Assay.ts index d7d26122..f1e2515c 100644 --- a/src/labkey/dom/Assay.ts +++ b/src/labkey/dom/Assay.ts @@ -43,6 +43,7 @@ export interface ImportRunOptions extends RequestCallbackOptions { allowLookupByAlternateKey?: boolean; assayId?: number | string; auditUserComment?: string; + auditDetails?: any; batchId?: number | string; batchProperties?: Record; comment?: string; @@ -136,6 +137,9 @@ export function importRun(options: ImportRunOptions): XMLHttpRequest { if (options.auditUserComment !== undefined) { formData.append('auditUserComment', options.auditUserComment); } + if (options.auditDetails !== undefined) { + formData.append('auditDetails', JSON.stringify(options.auditDetails)); + } appendProperties('batchProperties', formData, options.batchProperties); appendProperties('properties', formData, options.properties); diff --git a/src/labkey/dom/Query.ts b/src/labkey/dom/Query.ts index 534db722..fba58848 100644 --- a/src/labkey/dom/Query.ts +++ b/src/labkey/dom/Query.ts @@ -95,6 +95,7 @@ export function exportTables(options: IExportTablesOptions): void { } export interface IImportDataOptions { + auditDetails?: any; auditUserComment?: string; containerPath?: string; failure?: Function; @@ -161,6 +162,9 @@ export function importData(options: IImportDataOptions): XMLHttpRequest { if (options.auditUserComment !== undefined) { form.append('auditUserComment', options.auditUserComment); } + if (options.auditDetails !== undefined) { + form.append('auditDetails', JSON.stringify(options.auditDetails)); + } if (options.file) { if (options.file instanceof File) { From b3430f2d635219660259a3b17c3ae502a3f64c0e Mon Sep 17 00:00:00 2001 From: XingY Date: Fri, 31 Oct 2025 11:57:16 -0700 Subject: [PATCH 4/5] code review --- package-lock.json | 4 ++-- package.json | 2 +- src/labkey/dom/Assay.ts | 2 +- src/labkey/dom/Query.ts | 2 +- src/labkey/query/Rows.ts | 6 +++--- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index e51bc3e4..c949627d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@labkey/api", - "version": "1.43.1-fb-transactionAuditDetails.1", + "version": "1.43.1-fb-transactionAuditDetails.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@labkey/api", - "version": "1.43.1-fb-transactionAuditDetails.1", + "version": "1.43.1-fb-transactionAuditDetails.6", "license": "Apache-2.0", "devDependencies": { "@babel/core": "7.27.4", diff --git a/package.json b/package.json index 088e559b..5481f3d3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@labkey/api", - "version": "1.43.1-fb-transactionAuditDetails.5", + "version": "1.43.1-fb-transactionAuditDetails.6", "description": "JavaScript client API for LabKey Server", "scripts": { "build": "npm run build:dist && npm run build:docs", diff --git a/src/labkey/dom/Assay.ts b/src/labkey/dom/Assay.ts index f1e2515c..6bed7faf 100644 --- a/src/labkey/dom/Assay.ts +++ b/src/labkey/dom/Assay.ts @@ -43,7 +43,7 @@ export interface ImportRunOptions extends RequestCallbackOptions { allowLookupByAlternateKey?: boolean; assayId?: number | string; auditUserComment?: string; - auditDetails?: any; + auditDetails?: Record; batchId?: number | string; batchProperties?: Record; comment?: string; diff --git a/src/labkey/dom/Query.ts b/src/labkey/dom/Query.ts index fba58848..7d131f7f 100644 --- a/src/labkey/dom/Query.ts +++ b/src/labkey/dom/Query.ts @@ -95,7 +95,7 @@ export function exportTables(options: IExportTablesOptions): void { } export interface IImportDataOptions { - auditDetails?: any; + auditDetails?: Record; auditUserComment?: string; containerPath?: string; failure?: Function; diff --git a/src/labkey/query/Rows.ts b/src/labkey/query/Rows.ts index 9791bef3..e5465685 100644 --- a/src/labkey/query/Rows.ts +++ b/src/labkey/query/Rows.ts @@ -23,7 +23,7 @@ export interface QueryRequestOptions extends RequestCallbackOptions { /** Can be used to override the audit behavior for the table the query is acting on. See {@link AuditBehaviorTypes}. */ auditBehavior?: AuditBehaviorTypes; /** Optional audit details to record in the transaction audit log for this command. */ - auditDetails?: any; + auditDetails?: Record; /** Can be used to provide a comment from the user that will be attached to certain detailed audit log records. */ auditUserComment?: string; /** @@ -217,7 +217,7 @@ export interface Command { auditBehavior?: AuditBehaviorTypes; /** Optional audit details to record in the transaction audit log for this command. */ - auditDetails?: any; + auditDetails?: Record; /** Can be used to provide a comment from the user that will be attached to certain detailed audit log records. */ auditUserComment?: string; @@ -277,7 +277,7 @@ export interface SaveRowsOptions extends RequestCallbackOptions; /** * Version of the API. If this is 13.2 or higher, a request that fails * validation will be returned as a successful response. Use the 'errorCount' and 'committed' properties in the From a7d3895094fcc99fcb66c4b128f44dd1247a062a Mon Sep 17 00:00:00 2001 From: XingY Date: Sun, 2 Nov 2025 07:08:20 -0800 Subject: [PATCH 5/5] publish --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5347d178..c2c5f3f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -### 1.43.1 - 2025-X +### 1.43.2 - 2025-11-02 - Command and QueryRequestOptions: add auditDetails parameter ### 1.43.1 - 2025-10-31 diff --git a/package-lock.json b/package-lock.json index 8fe930fa..169ef1b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@labkey/api", - "version": "1.43.2-fb-transactionAuditDetails.1", + "version": "1.43.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@labkey/api", - "version": "1.43.2-fb-transactionAuditDetails.1", + "version": "1.43.2", "license": "Apache-2.0", "devDependencies": { "@babel/core": "7.27.4", diff --git a/package.json b/package.json index 38b87989..f3cf582c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@labkey/api", - "version": "1.43.2-fb-transactionAuditDetails.1", + "version": "1.43.2", "description": "JavaScript client API for LabKey Server", "scripts": { "build": "npm run build:dist && npm run build:docs",