@objectstack/plugin-approvals 9.2.0 → 9.3.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.
- package/.turbo/turbo-build.log +10 -10
- package/CHANGELOG.md +27 -0
- package/dist/index.d.mts +2343 -177
- package/dist/index.d.ts +2343 -177
- package/dist/index.js +1293 -34
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1292 -34
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -7
- package/src/action-link-pages.ts +102 -0
- package/src/approval-revise.test.ts +411 -0
- package/src/approval-service.test.ts +452 -4
- package/src/approval-service.ts +1128 -34
- package/src/approvals-plugin.ts +124 -3
- package/src/index.ts +1 -0
- package/src/nav-contribution.test.ts +3 -1
- package/src/sys-approval-action.object.ts +5 -1
- package/src/sys-approval-approver.object.ts +78 -0
- package/src/sys-approval-request.object.ts +8 -4
- package/src/sys-approval-token.object.ts +94 -0
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as _objectstack_spec_data from '@objectstack/spec/data';
|
|
2
2
|
import { ApprovalNodeConfig } from '@objectstack/spec/automation';
|
|
3
|
-
import { IApprovalService, SharingExecutionContext, ApprovalRequestRow, ApprovalDecisionInput, ApprovalDecisionResult, ApprovalRecallInput, ApprovalRecallResult, ApprovalStatus, ApprovalActionRow } from '@objectstack/spec/contracts';
|
|
3
|
+
import { IApprovalService, SharingExecutionContext, ApprovalRequestRow, ApprovalDecisionInput, ApprovalDecisionResult, ApprovalRecallInput, ApprovalRecallResult, ApprovalSendBackInput, ApprovalSendBackResult, ApprovalResubmitInput, ApprovalResubmitResult, ApprovalStatus, ApprovalActionRow } from '@objectstack/spec/contracts';
|
|
4
4
|
export { ApprovalActionRow, ApprovalDecisionInput, ApprovalDecisionResult, ApprovalRequestRow, ApprovalStatus, IApprovalService } from '@objectstack/spec/contracts';
|
|
5
5
|
import { Plugin, PluginContext } from '@objectstack/core';
|
|
6
6
|
|
|
@@ -454,6 +454,37 @@ declare const SysApprovalRequest: Omit<{
|
|
|
454
454
|
}[] | undefined;
|
|
455
455
|
searchableFields?: string[] | undefined;
|
|
456
456
|
filterableFields?: string[] | undefined;
|
|
457
|
+
userFilters?: {
|
|
458
|
+
element: "toggle" | "tabs" | "dropdown";
|
|
459
|
+
fields?: {
|
|
460
|
+
field: string;
|
|
461
|
+
label?: string | undefined;
|
|
462
|
+
type?: "boolean" | "text" | "select" | "multi-select" | "date-range" | undefined;
|
|
463
|
+
options?: {
|
|
464
|
+
value: string | number | boolean;
|
|
465
|
+
label: string;
|
|
466
|
+
color?: string | undefined;
|
|
467
|
+
}[] | undefined;
|
|
468
|
+
showCount?: boolean | undefined;
|
|
469
|
+
defaultValues?: (string | number | boolean)[] | undefined;
|
|
470
|
+
}[] | undefined;
|
|
471
|
+
tabs?: {
|
|
472
|
+
name: string;
|
|
473
|
+
pinned: boolean;
|
|
474
|
+
isDefault: boolean;
|
|
475
|
+
visible: boolean;
|
|
476
|
+
label?: string | undefined;
|
|
477
|
+
icon?: string | undefined;
|
|
478
|
+
view?: string | undefined;
|
|
479
|
+
filter?: {
|
|
480
|
+
field: string;
|
|
481
|
+
operator: string;
|
|
482
|
+
value?: string | number | boolean | (string | number)[] | null | undefined;
|
|
483
|
+
}[] | undefined;
|
|
484
|
+
order?: number | undefined;
|
|
485
|
+
}[] | undefined;
|
|
486
|
+
showAllRecords?: boolean | undefined;
|
|
487
|
+
} | undefined;
|
|
457
488
|
resizable?: boolean | undefined;
|
|
458
489
|
striped?: boolean | undefined;
|
|
459
490
|
bordered?: boolean | undefined;
|
|
@@ -566,7 +597,7 @@ declare const SysApprovalRequest: Omit<{
|
|
|
566
597
|
} | undefined;
|
|
567
598
|
appearance?: {
|
|
568
599
|
showDescription: boolean;
|
|
569
|
-
allowedVisualizations?: ("grid" | "kanban" | "calendar" | "gantt" | "gallery" | "timeline" | "map")[] | undefined;
|
|
600
|
+
allowedVisualizations?: ("grid" | "kanban" | "calendar" | "gantt" | "gallery" | "timeline" | "chart" | "map")[] | undefined;
|
|
570
601
|
} | undefined;
|
|
571
602
|
tabs?: {
|
|
572
603
|
name: string;
|
|
@@ -760,6 +791,8 @@ declare const SysApprovalRequest: Omit<{
|
|
|
760
791
|
method?: "POST" | "PATCH" | "PUT" | "DELETE" | undefined;
|
|
761
792
|
bodyExtra?: Record<string, unknown> | undefined;
|
|
762
793
|
mode?: "custom" | "delete" | "edit" | "create" | undefined;
|
|
794
|
+
opensInNewTab?: boolean | undefined;
|
|
795
|
+
newTabUrl?: string | undefined;
|
|
763
796
|
timeout?: number | undefined;
|
|
764
797
|
aria?: {
|
|
765
798
|
ariaLabel?: string | undefined;
|
|
@@ -5110,6 +5143,37 @@ declare const SysApprovalAction: Omit<{
|
|
|
5110
5143
|
}[] | undefined;
|
|
5111
5144
|
searchableFields?: string[] | undefined;
|
|
5112
5145
|
filterableFields?: string[] | undefined;
|
|
5146
|
+
userFilters?: {
|
|
5147
|
+
element: "toggle" | "tabs" | "dropdown";
|
|
5148
|
+
fields?: {
|
|
5149
|
+
field: string;
|
|
5150
|
+
label?: string | undefined;
|
|
5151
|
+
type?: "boolean" | "text" | "select" | "multi-select" | "date-range" | undefined;
|
|
5152
|
+
options?: {
|
|
5153
|
+
value: string | number | boolean;
|
|
5154
|
+
label: string;
|
|
5155
|
+
color?: string | undefined;
|
|
5156
|
+
}[] | undefined;
|
|
5157
|
+
showCount?: boolean | undefined;
|
|
5158
|
+
defaultValues?: (string | number | boolean)[] | undefined;
|
|
5159
|
+
}[] | undefined;
|
|
5160
|
+
tabs?: {
|
|
5161
|
+
name: string;
|
|
5162
|
+
pinned: boolean;
|
|
5163
|
+
isDefault: boolean;
|
|
5164
|
+
visible: boolean;
|
|
5165
|
+
label?: string | undefined;
|
|
5166
|
+
icon?: string | undefined;
|
|
5167
|
+
view?: string | undefined;
|
|
5168
|
+
filter?: {
|
|
5169
|
+
field: string;
|
|
5170
|
+
operator: string;
|
|
5171
|
+
value?: string | number | boolean | (string | number)[] | null | undefined;
|
|
5172
|
+
}[] | undefined;
|
|
5173
|
+
order?: number | undefined;
|
|
5174
|
+
}[] | undefined;
|
|
5175
|
+
showAllRecords?: boolean | undefined;
|
|
5176
|
+
} | undefined;
|
|
5113
5177
|
resizable?: boolean | undefined;
|
|
5114
5178
|
striped?: boolean | undefined;
|
|
5115
5179
|
bordered?: boolean | undefined;
|
|
@@ -5222,7 +5286,7 @@ declare const SysApprovalAction: Omit<{
|
|
|
5222
5286
|
} | undefined;
|
|
5223
5287
|
appearance?: {
|
|
5224
5288
|
showDescription: boolean;
|
|
5225
|
-
allowedVisualizations?: ("grid" | "kanban" | "calendar" | "gantt" | "gallery" | "timeline" | "map")[] | undefined;
|
|
5289
|
+
allowedVisualizations?: ("grid" | "kanban" | "calendar" | "gantt" | "gallery" | "timeline" | "chart" | "map")[] | undefined;
|
|
5226
5290
|
} | undefined;
|
|
5227
5291
|
tabs?: {
|
|
5228
5292
|
name: string;
|
|
@@ -5416,6 +5480,8 @@ declare const SysApprovalAction: Omit<{
|
|
|
5416
5480
|
method?: "POST" | "PATCH" | "PUT" | "DELETE" | undefined;
|
|
5417
5481
|
bodyExtra?: Record<string, unknown> | undefined;
|
|
5418
5482
|
mode?: "custom" | "delete" | "edit" | "create" | undefined;
|
|
5483
|
+
opensInNewTab?: boolean | undefined;
|
|
5484
|
+
newTabUrl?: string | undefined;
|
|
5419
5485
|
timeout?: number | undefined;
|
|
5420
5486
|
aria?: {
|
|
5421
5487
|
ariaLabel?: string | undefined;
|
|
@@ -7406,181 +7472,2280 @@ declare const SysApprovalAction: Omit<{
|
|
|
7406
7472
|
}, "fields">;
|
|
7407
7473
|
|
|
7408
7474
|
/**
|
|
7409
|
-
*
|
|
7475
|
+
* sys_approval_approver — Pending-approver index (issue #1745).
|
|
7410
7476
|
*
|
|
7411
|
-
*
|
|
7412
|
-
*
|
|
7413
|
-
*
|
|
7414
|
-
*
|
|
7415
|
-
*
|
|
7477
|
+
* One row per (request, approver identity) while the request is **pending**.
|
|
7478
|
+
* `sys_approval_request.pending_approvers` stays the human-readable source of
|
|
7479
|
+
* truth (a CSV column), but CSV substring matching can neither be indexed nor
|
|
7480
|
+
* pushed into an engine query — which made "my pending" a post-filter in
|
|
7481
|
+
* memory and broke pagination beyond the scan window.
|
|
7416
7482
|
*
|
|
7417
|
-
* This
|
|
7418
|
-
* `
|
|
7419
|
-
*
|
|
7420
|
-
*
|
|
7421
|
-
*
|
|
7422
|
-
|
|
7423
|
-
|
|
7424
|
-
|
|
7425
|
-
|
|
7426
|
-
|
|
7427
|
-
|
|
7428
|
-
|
|
7429
|
-
interface ApprovalClock {
|
|
7430
|
-
now(): Date;
|
|
7431
|
-
}
|
|
7432
|
-
/**
|
|
7433
|
-
* Minimal automation surface the service uses to resume a suspended flow run
|
|
7434
|
-
* once a decision finalises a node-driven request. Optional — attached by the
|
|
7435
|
-
* plugin when an automation engine is present (see `approval-node.ts`).
|
|
7483
|
+
* This table is that CSV, normalized: the service mirrors every change to
|
|
7484
|
+
* `pending_approvers` here (open / decide / recall / send-back / reassign /
|
|
7485
|
+
* escalate), and clears the rows when the request leaves `pending`. So the
|
|
7486
|
+
* table only ever holds the live work queue — its size tracks the number of
|
|
7487
|
+
* open approvals, not the append-only request history.
|
|
7488
|
+
*
|
|
7489
|
+
* `approver` holds one identity literal exactly as it appears in the CSV:
|
|
7490
|
+
* a user id, an email, or a `role:<name>` / `team:<name>` style literal.
|
|
7491
|
+
* Equality (or `$in`) on this column is the indexed replacement for the old
|
|
7492
|
+
* per-row substring match.
|
|
7493
|
+
*
|
|
7494
|
+
* @namespace sys
|
|
7436
7495
|
*/
|
|
7437
|
-
|
|
7438
|
-
|
|
7439
|
-
|
|
7440
|
-
|
|
7441
|
-
|
|
7442
|
-
|
|
7443
|
-
|
|
7444
|
-
|
|
7445
|
-
|
|
7446
|
-
|
|
7447
|
-
|
|
7448
|
-
|
|
7449
|
-
|
|
7450
|
-
|
|
7451
|
-
|
|
7452
|
-
|
|
7453
|
-
|
|
7454
|
-
|
|
7455
|
-
|
|
7456
|
-
|
|
7457
|
-
|
|
7458
|
-
|
|
7459
|
-
|
|
7460
|
-
|
|
7461
|
-
|
|
7462
|
-
|
|
7463
|
-
|
|
7464
|
-
|
|
7465
|
-
|
|
7466
|
-
|
|
7467
|
-
|
|
7468
|
-
|
|
7469
|
-
|
|
7470
|
-
|
|
7471
|
-
|
|
7472
|
-
|
|
7473
|
-
|
|
7474
|
-
|
|
7475
|
-
|
|
7476
|
-
|
|
7477
|
-
|
|
7478
|
-
|
|
7479
|
-
|
|
7480
|
-
|
|
7481
|
-
|
|
7482
|
-
|
|
7483
|
-
|
|
7484
|
-
|
|
7485
|
-
|
|
7486
|
-
|
|
7487
|
-
|
|
7488
|
-
|
|
7489
|
-
|
|
7490
|
-
|
|
7491
|
-
|
|
7492
|
-
|
|
7493
|
-
|
|
7494
|
-
|
|
7495
|
-
|
|
7496
|
-
|
|
7497
|
-
|
|
7498
|
-
|
|
7499
|
-
|
|
7500
|
-
|
|
7501
|
-
|
|
7502
|
-
|
|
7503
|
-
|
|
7504
|
-
|
|
7505
|
-
|
|
7506
|
-
|
|
7507
|
-
|
|
7508
|
-
|
|
7509
|
-
|
|
7510
|
-
|
|
7511
|
-
|
|
7512
|
-
|
|
7513
|
-
|
|
7514
|
-
|
|
7515
|
-
|
|
7516
|
-
|
|
7517
|
-
|
|
7518
|
-
|
|
7519
|
-
|
|
7520
|
-
|
|
7521
|
-
|
|
7522
|
-
|
|
7523
|
-
|
|
7524
|
-
|
|
7525
|
-
|
|
7526
|
-
|
|
7527
|
-
|
|
7528
|
-
|
|
7529
|
-
|
|
7530
|
-
|
|
7531
|
-
|
|
7532
|
-
|
|
7533
|
-
|
|
7534
|
-
|
|
7535
|
-
|
|
7536
|
-
|
|
7537
|
-
|
|
7538
|
-
|
|
7539
|
-
|
|
7540
|
-
|
|
7541
|
-
|
|
7542
|
-
|
|
7543
|
-
|
|
7544
|
-
|
|
7545
|
-
|
|
7546
|
-
|
|
7547
|
-
|
|
7548
|
-
|
|
7549
|
-
|
|
7550
|
-
|
|
7551
|
-
|
|
7552
|
-
|
|
7553
|
-
|
|
7554
|
-
|
|
7555
|
-
|
|
7556
|
-
|
|
7557
|
-
|
|
7558
|
-
|
|
7559
|
-
|
|
7560
|
-
|
|
7561
|
-
|
|
7562
|
-
|
|
7563
|
-
|
|
7564
|
-
|
|
7565
|
-
|
|
7566
|
-
|
|
7567
|
-
|
|
7568
|
-
|
|
7569
|
-
|
|
7570
|
-
|
|
7571
|
-
|
|
7572
|
-
|
|
7573
|
-
|
|
7574
|
-
|
|
7575
|
-
|
|
7576
|
-
|
|
7577
|
-
|
|
7578
|
-
|
|
7579
|
-
|
|
7580
|
-
|
|
7581
|
-
|
|
7582
|
-
|
|
7583
|
-
|
|
7496
|
+
declare const SysApprovalApprover: Omit<{
|
|
7497
|
+
name: string;
|
|
7498
|
+
active: boolean;
|
|
7499
|
+
isSystem: boolean;
|
|
7500
|
+
abstract: boolean;
|
|
7501
|
+
datasource: string;
|
|
7502
|
+
fields: Record<string, {
|
|
7503
|
+
type: "number" | "boolean" | "tags" | "date" | "record" | "file" | "code" | "datetime" | "signature" | "progress" | "url" | "lookup" | "master_detail" | "currency" | "percent" | "password" | "secret" | "email" | "time" | "text" | "textarea" | "phone" | "markdown" | "html" | "richtext" | "toggle" | "select" | "multiselect" | "radio" | "checkboxes" | "tree" | "image" | "avatar" | "video" | "audio" | "formula" | "summary" | "autonumber" | "composite" | "repeater" | "location" | "address" | "json" | "color" | "rating" | "slider" | "qrcode" | "vector";
|
|
7504
|
+
required: boolean;
|
|
7505
|
+
searchable: boolean;
|
|
7506
|
+
multiple: boolean;
|
|
7507
|
+
unique: boolean;
|
|
7508
|
+
deleteBehavior: "set_null" | "cascade" | "restrict";
|
|
7509
|
+
auditTrail: boolean;
|
|
7510
|
+
hidden: boolean;
|
|
7511
|
+
readonly: boolean;
|
|
7512
|
+
sortable: boolean;
|
|
7513
|
+
index: boolean;
|
|
7514
|
+
externalId: boolean;
|
|
7515
|
+
name?: string | undefined;
|
|
7516
|
+
label?: string | undefined;
|
|
7517
|
+
description?: string | undefined;
|
|
7518
|
+
format?: string | undefined;
|
|
7519
|
+
columnName?: string | undefined;
|
|
7520
|
+
defaultValue?: unknown;
|
|
7521
|
+
maxLength?: number | undefined;
|
|
7522
|
+
minLength?: number | undefined;
|
|
7523
|
+
precision?: number | undefined;
|
|
7524
|
+
scale?: number | undefined;
|
|
7525
|
+
min?: number | undefined;
|
|
7526
|
+
max?: number | undefined;
|
|
7527
|
+
options?: {
|
|
7528
|
+
label: string;
|
|
7529
|
+
value: string;
|
|
7530
|
+
color?: string | undefined;
|
|
7531
|
+
default?: boolean | undefined;
|
|
7532
|
+
}[] | undefined;
|
|
7533
|
+
reference?: string | undefined;
|
|
7534
|
+
referenceFilters?: string[] | undefined;
|
|
7535
|
+
writeRequiresMasterRead?: boolean | undefined;
|
|
7536
|
+
inlineEdit?: boolean | "grid" | "form" | undefined;
|
|
7537
|
+
inlineTitle?: string | undefined;
|
|
7538
|
+
inlineColumns?: any[] | undefined;
|
|
7539
|
+
inlineAmountField?: string | undefined;
|
|
7540
|
+
relatedList?: boolean | undefined;
|
|
7541
|
+
relatedListTitle?: string | undefined;
|
|
7542
|
+
relatedListColumns?: any[] | undefined;
|
|
7543
|
+
expression?: {
|
|
7544
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
7545
|
+
source?: string | undefined;
|
|
7546
|
+
ast?: unknown;
|
|
7547
|
+
meta?: {
|
|
7548
|
+
rationale?: string | undefined;
|
|
7549
|
+
generatedBy?: string | undefined;
|
|
7550
|
+
} | undefined;
|
|
7551
|
+
} | {
|
|
7552
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
7553
|
+
source?: string | undefined;
|
|
7554
|
+
ast?: unknown;
|
|
7555
|
+
meta?: {
|
|
7556
|
+
rationale?: string | undefined;
|
|
7557
|
+
generatedBy?: string | undefined;
|
|
7558
|
+
} | undefined;
|
|
7559
|
+
} | undefined;
|
|
7560
|
+
summaryOperations?: {
|
|
7561
|
+
object: string;
|
|
7562
|
+
field: string;
|
|
7563
|
+
function: "min" | "max" | "count" | "sum" | "avg";
|
|
7564
|
+
relationshipField?: string | undefined;
|
|
7565
|
+
} | undefined;
|
|
7566
|
+
language?: string | undefined;
|
|
7567
|
+
theme?: string | undefined;
|
|
7568
|
+
lineNumbers?: boolean | undefined;
|
|
7569
|
+
maxRating?: number | undefined;
|
|
7570
|
+
allowHalf?: boolean | undefined;
|
|
7571
|
+
displayMap?: boolean | undefined;
|
|
7572
|
+
allowGeocoding?: boolean | undefined;
|
|
7573
|
+
addressFormat?: "us" | "uk" | "international" | undefined;
|
|
7574
|
+
colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
|
|
7575
|
+
allowAlpha?: boolean | undefined;
|
|
7576
|
+
presetColors?: string[] | undefined;
|
|
7577
|
+
step?: number | undefined;
|
|
7578
|
+
showValue?: boolean | undefined;
|
|
7579
|
+
marks?: Record<string, string> | undefined;
|
|
7580
|
+
barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
|
|
7581
|
+
qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
|
|
7582
|
+
displayValue?: boolean | undefined;
|
|
7583
|
+
allowScanning?: boolean | undefined;
|
|
7584
|
+
currencyConfig?: {
|
|
7585
|
+
precision: number;
|
|
7586
|
+
currencyMode: "fixed" | "dynamic";
|
|
7587
|
+
defaultCurrency: string;
|
|
7588
|
+
} | undefined;
|
|
7589
|
+
vectorConfig?: {
|
|
7590
|
+
dimensions: number;
|
|
7591
|
+
distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
|
|
7592
|
+
normalized: boolean;
|
|
7593
|
+
indexed: boolean;
|
|
7594
|
+
indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
|
|
7595
|
+
} | undefined;
|
|
7596
|
+
fileAttachmentConfig?: {
|
|
7597
|
+
virusScan: boolean;
|
|
7598
|
+
virusScanOnUpload: boolean;
|
|
7599
|
+
quarantineOnThreat: boolean;
|
|
7600
|
+
allowMultiple: boolean;
|
|
7601
|
+
allowReplace: boolean;
|
|
7602
|
+
allowDelete: boolean;
|
|
7603
|
+
requireUpload: boolean;
|
|
7604
|
+
extractMetadata: boolean;
|
|
7605
|
+
extractText: boolean;
|
|
7606
|
+
versioningEnabled: boolean;
|
|
7607
|
+
publicRead: boolean;
|
|
7608
|
+
presignedUrlExpiry: number;
|
|
7609
|
+
minSize?: number | undefined;
|
|
7610
|
+
maxSize?: number | undefined;
|
|
7611
|
+
allowedTypes?: string[] | undefined;
|
|
7612
|
+
blockedTypes?: string[] | undefined;
|
|
7613
|
+
allowedMimeTypes?: string[] | undefined;
|
|
7614
|
+
blockedMimeTypes?: string[] | undefined;
|
|
7615
|
+
virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
|
|
7616
|
+
storageProvider?: string | undefined;
|
|
7617
|
+
storageBucket?: string | undefined;
|
|
7618
|
+
storagePrefix?: string | undefined;
|
|
7619
|
+
imageValidation?: {
|
|
7620
|
+
generateThumbnails: boolean;
|
|
7621
|
+
preserveMetadata: boolean;
|
|
7622
|
+
autoRotate: boolean;
|
|
7623
|
+
minWidth?: number | undefined;
|
|
7624
|
+
maxWidth?: number | undefined;
|
|
7625
|
+
minHeight?: number | undefined;
|
|
7626
|
+
maxHeight?: number | undefined;
|
|
7627
|
+
aspectRatio?: string | undefined;
|
|
7628
|
+
thumbnailSizes?: {
|
|
7629
|
+
name: string;
|
|
7630
|
+
width: number;
|
|
7631
|
+
height: number;
|
|
7632
|
+
crop: boolean;
|
|
7633
|
+
}[] | undefined;
|
|
7634
|
+
} | undefined;
|
|
7635
|
+
maxVersions?: number | undefined;
|
|
7636
|
+
} | undefined;
|
|
7637
|
+
encryptionConfig?: {
|
|
7638
|
+
enabled: boolean;
|
|
7639
|
+
algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
|
|
7640
|
+
keyManagement: {
|
|
7641
|
+
provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
|
|
7642
|
+
keyId?: string | undefined;
|
|
7643
|
+
rotationPolicy?: {
|
|
7644
|
+
enabled: boolean;
|
|
7645
|
+
frequencyDays: number;
|
|
7646
|
+
retainOldVersions: number;
|
|
7647
|
+
autoRotate: boolean;
|
|
7648
|
+
} | undefined;
|
|
7649
|
+
};
|
|
7650
|
+
scope: "record" | "field" | "table" | "database";
|
|
7651
|
+
deterministicEncryption: boolean;
|
|
7652
|
+
searchableEncryption: boolean;
|
|
7653
|
+
} | undefined;
|
|
7654
|
+
maskingRule?: {
|
|
7655
|
+
field: string;
|
|
7656
|
+
strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
|
|
7657
|
+
preserveFormat: boolean;
|
|
7658
|
+
preserveLength: boolean;
|
|
7659
|
+
pattern?: string | undefined;
|
|
7660
|
+
roles?: string[] | undefined;
|
|
7661
|
+
exemptRoles?: string[] | undefined;
|
|
7662
|
+
} | undefined;
|
|
7663
|
+
dependencies?: string[] | undefined;
|
|
7664
|
+
cached?: {
|
|
7665
|
+
enabled: boolean;
|
|
7666
|
+
ttl: number;
|
|
7667
|
+
invalidateOn: string[];
|
|
7668
|
+
} | undefined;
|
|
7669
|
+
dataQuality?: {
|
|
7670
|
+
uniqueness: boolean;
|
|
7671
|
+
completeness: number;
|
|
7672
|
+
accuracy?: {
|
|
7673
|
+
source: string;
|
|
7674
|
+
threshold: number;
|
|
7675
|
+
} | undefined;
|
|
7676
|
+
} | undefined;
|
|
7677
|
+
group?: string | undefined;
|
|
7678
|
+
visibleWhen?: {
|
|
7679
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
7680
|
+
source?: string | undefined;
|
|
7681
|
+
ast?: unknown;
|
|
7682
|
+
meta?: {
|
|
7683
|
+
rationale?: string | undefined;
|
|
7684
|
+
generatedBy?: string | undefined;
|
|
7685
|
+
} | undefined;
|
|
7686
|
+
} | {
|
|
7687
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
7688
|
+
source?: string | undefined;
|
|
7689
|
+
ast?: unknown;
|
|
7690
|
+
meta?: {
|
|
7691
|
+
rationale?: string | undefined;
|
|
7692
|
+
generatedBy?: string | undefined;
|
|
7693
|
+
} | undefined;
|
|
7694
|
+
} | undefined;
|
|
7695
|
+
readonlyWhen?: {
|
|
7696
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
7697
|
+
source?: string | undefined;
|
|
7698
|
+
ast?: unknown;
|
|
7699
|
+
meta?: {
|
|
7700
|
+
rationale?: string | undefined;
|
|
7701
|
+
generatedBy?: string | undefined;
|
|
7702
|
+
} | undefined;
|
|
7703
|
+
} | {
|
|
7704
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
7705
|
+
source?: string | undefined;
|
|
7706
|
+
ast?: unknown;
|
|
7707
|
+
meta?: {
|
|
7708
|
+
rationale?: string | undefined;
|
|
7709
|
+
generatedBy?: string | undefined;
|
|
7710
|
+
} | undefined;
|
|
7711
|
+
} | undefined;
|
|
7712
|
+
requiredWhen?: {
|
|
7713
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
7714
|
+
source?: string | undefined;
|
|
7715
|
+
ast?: unknown;
|
|
7716
|
+
meta?: {
|
|
7717
|
+
rationale?: string | undefined;
|
|
7718
|
+
generatedBy?: string | undefined;
|
|
7719
|
+
} | undefined;
|
|
7720
|
+
} | {
|
|
7721
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
7722
|
+
source?: string | undefined;
|
|
7723
|
+
ast?: unknown;
|
|
7724
|
+
meta?: {
|
|
7725
|
+
rationale?: string | undefined;
|
|
7726
|
+
generatedBy?: string | undefined;
|
|
7727
|
+
} | undefined;
|
|
7728
|
+
} | undefined;
|
|
7729
|
+
conditionalRequired?: {
|
|
7730
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
7731
|
+
source?: string | undefined;
|
|
7732
|
+
ast?: unknown;
|
|
7733
|
+
meta?: {
|
|
7734
|
+
rationale?: string | undefined;
|
|
7735
|
+
generatedBy?: string | undefined;
|
|
7736
|
+
} | undefined;
|
|
7737
|
+
} | {
|
|
7738
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
7739
|
+
source?: string | undefined;
|
|
7740
|
+
ast?: unknown;
|
|
7741
|
+
meta?: {
|
|
7742
|
+
rationale?: string | undefined;
|
|
7743
|
+
generatedBy?: string | undefined;
|
|
7744
|
+
} | undefined;
|
|
7745
|
+
} | undefined;
|
|
7746
|
+
system?: boolean | undefined;
|
|
7747
|
+
inlineHelpText?: string | undefined;
|
|
7748
|
+
trackFeedHistory?: boolean | undefined;
|
|
7749
|
+
caseSensitive?: boolean | undefined;
|
|
7750
|
+
autonumberFormat?: string | undefined;
|
|
7751
|
+
}>;
|
|
7752
|
+
_lock?: "full" | "none" | "no-overlay" | "no-delete" | undefined;
|
|
7753
|
+
_lockReason?: string | undefined;
|
|
7754
|
+
_lockSource?: "artifact" | "package" | "env-forced" | undefined;
|
|
7755
|
+
_provenance?: "package" | "env-forced" | "org" | undefined;
|
|
7756
|
+
_packageId?: string | undefined;
|
|
7757
|
+
_packageVersion?: string | undefined;
|
|
7758
|
+
_lockDocsUrl?: string | undefined;
|
|
7759
|
+
label?: string | undefined;
|
|
7760
|
+
pluralLabel?: string | undefined;
|
|
7761
|
+
description?: string | undefined;
|
|
7762
|
+
icon?: string | undefined;
|
|
7763
|
+
tags?: string[] | undefined;
|
|
7764
|
+
managedBy?: "platform" | "system" | "config" | "append-only" | "better-auth" | undefined;
|
|
7765
|
+
userActions?: {
|
|
7766
|
+
create?: boolean | undefined;
|
|
7767
|
+
import?: boolean | undefined;
|
|
7768
|
+
edit?: boolean | undefined;
|
|
7769
|
+
delete?: boolean | undefined;
|
|
7770
|
+
exportCsv?: boolean | undefined;
|
|
7771
|
+
} | undefined;
|
|
7772
|
+
systemFields?: false | {
|
|
7773
|
+
tenant?: boolean | undefined;
|
|
7774
|
+
owner?: boolean | undefined;
|
|
7775
|
+
audit?: boolean | undefined;
|
|
7776
|
+
} | undefined;
|
|
7777
|
+
external?: {
|
|
7778
|
+
writable: boolean;
|
|
7779
|
+
remoteName?: string | undefined;
|
|
7780
|
+
remoteSchema?: string | undefined;
|
|
7781
|
+
columnMap?: Record<string, string> | undefined;
|
|
7782
|
+
introspectedAt?: string | undefined;
|
|
7783
|
+
ignoreColumns?: string[] | undefined;
|
|
7784
|
+
} | undefined;
|
|
7785
|
+
indexes?: {
|
|
7786
|
+
fields: string[];
|
|
7787
|
+
type: "hash" | "btree" | "gin" | "gist" | "fulltext";
|
|
7788
|
+
unique: boolean;
|
|
7789
|
+
name?: string | undefined;
|
|
7790
|
+
partial?: string | undefined;
|
|
7791
|
+
}[] | undefined;
|
|
7792
|
+
fieldGroups?: {
|
|
7793
|
+
key: string;
|
|
7794
|
+
label: string;
|
|
7795
|
+
defaultExpanded: boolean;
|
|
7796
|
+
icon?: string | undefined;
|
|
7797
|
+
description?: string | undefined;
|
|
7798
|
+
visibleOn?: {
|
|
7799
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
7800
|
+
source?: string | undefined;
|
|
7801
|
+
ast?: unknown;
|
|
7802
|
+
meta?: {
|
|
7803
|
+
rationale?: string | undefined;
|
|
7804
|
+
generatedBy?: string | undefined;
|
|
7805
|
+
} | undefined;
|
|
7806
|
+
} | {
|
|
7807
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
7808
|
+
source?: string | undefined;
|
|
7809
|
+
ast?: unknown;
|
|
7810
|
+
meta?: {
|
|
7811
|
+
rationale?: string | undefined;
|
|
7812
|
+
generatedBy?: string | undefined;
|
|
7813
|
+
} | undefined;
|
|
7814
|
+
} | undefined;
|
|
7815
|
+
}[] | undefined;
|
|
7816
|
+
tenancy?: {
|
|
7817
|
+
enabled: boolean;
|
|
7818
|
+
strategy: "hybrid" | "shared" | "isolated";
|
|
7819
|
+
tenantField: string;
|
|
7820
|
+
crossTenantAccess: boolean;
|
|
7821
|
+
} | undefined;
|
|
7822
|
+
softDelete?: {
|
|
7823
|
+
enabled: boolean;
|
|
7824
|
+
field: string;
|
|
7825
|
+
cascadeDelete: boolean;
|
|
7826
|
+
} | undefined;
|
|
7827
|
+
versioning?: {
|
|
7828
|
+
enabled: boolean;
|
|
7829
|
+
strategy: "snapshot" | "delta" | "event-sourcing";
|
|
7830
|
+
versionField: string;
|
|
7831
|
+
retentionDays?: number | undefined;
|
|
7832
|
+
} | undefined;
|
|
7833
|
+
partitioning?: {
|
|
7834
|
+
enabled: boolean;
|
|
7835
|
+
strategy: "hash" | "list" | "range";
|
|
7836
|
+
key: string;
|
|
7837
|
+
interval?: string | undefined;
|
|
7838
|
+
} | undefined;
|
|
7839
|
+
cdc?: {
|
|
7840
|
+
enabled: boolean;
|
|
7841
|
+
events: ("delete" | "update" | "insert")[];
|
|
7842
|
+
destination: string;
|
|
7843
|
+
} | undefined;
|
|
7844
|
+
validations?: _objectstack_spec_data.BaseValidationRuleShape[] | undefined;
|
|
7845
|
+
displayNameField?: string | undefined;
|
|
7846
|
+
recordName?: {
|
|
7847
|
+
type: "text" | "autonumber";
|
|
7848
|
+
displayFormat?: string | undefined;
|
|
7849
|
+
startNumber?: number | undefined;
|
|
7850
|
+
} | undefined;
|
|
7851
|
+
titleFormat?: {
|
|
7852
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
7853
|
+
source?: string | undefined;
|
|
7854
|
+
ast?: unknown;
|
|
7855
|
+
meta?: {
|
|
7856
|
+
rationale?: string | undefined;
|
|
7857
|
+
generatedBy?: string | undefined;
|
|
7858
|
+
} | undefined;
|
|
7859
|
+
} | {
|
|
7860
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
7861
|
+
source?: string | undefined;
|
|
7862
|
+
ast?: unknown;
|
|
7863
|
+
meta?: {
|
|
7864
|
+
rationale?: string | undefined;
|
|
7865
|
+
generatedBy?: string | undefined;
|
|
7866
|
+
} | undefined;
|
|
7867
|
+
} | undefined;
|
|
7868
|
+
compactLayout?: string[] | undefined;
|
|
7869
|
+
listViews?: Record<string, {
|
|
7870
|
+
type: "grid" | "kanban" | "calendar" | "gantt" | "gallery" | "timeline" | "chart" | "map";
|
|
7871
|
+
columns: string[] | {
|
|
7872
|
+
field: string;
|
|
7873
|
+
label?: string | undefined;
|
|
7874
|
+
width?: number | undefined;
|
|
7875
|
+
align?: "left" | "center" | "right" | undefined;
|
|
7876
|
+
hidden?: boolean | undefined;
|
|
7877
|
+
sortable?: boolean | undefined;
|
|
7878
|
+
resizable?: boolean | undefined;
|
|
7879
|
+
wrap?: boolean | undefined;
|
|
7880
|
+
type?: string | undefined;
|
|
7881
|
+
pinned?: "left" | "right" | undefined;
|
|
7882
|
+
summary?: "none" | "min" | "max" | "count" | "sum" | "avg" | "count_empty" | "count_filled" | "count_unique" | "percent_empty" | "percent_filled" | undefined;
|
|
7883
|
+
link?: boolean | undefined;
|
|
7884
|
+
action?: string | undefined;
|
|
7885
|
+
}[];
|
|
7886
|
+
name?: string | undefined;
|
|
7887
|
+
label?: string | undefined;
|
|
7888
|
+
data?: {
|
|
7889
|
+
provider: "object";
|
|
7890
|
+
object: string;
|
|
7891
|
+
} | {
|
|
7892
|
+
provider: "api";
|
|
7893
|
+
read?: {
|
|
7894
|
+
url: string;
|
|
7895
|
+
method: "POST" | "PATCH" | "PUT" | "DELETE" | "GET";
|
|
7896
|
+
headers?: Record<string, string> | undefined;
|
|
7897
|
+
params?: Record<string, unknown> | undefined;
|
|
7898
|
+
body?: unknown;
|
|
7899
|
+
} | undefined;
|
|
7900
|
+
write?: {
|
|
7901
|
+
url: string;
|
|
7902
|
+
method: "POST" | "PATCH" | "PUT" | "DELETE" | "GET";
|
|
7903
|
+
headers?: Record<string, string> | undefined;
|
|
7904
|
+
params?: Record<string, unknown> | undefined;
|
|
7905
|
+
body?: unknown;
|
|
7906
|
+
} | undefined;
|
|
7907
|
+
} | {
|
|
7908
|
+
provider: "value";
|
|
7909
|
+
items: unknown[];
|
|
7910
|
+
} | {
|
|
7911
|
+
provider: "schema";
|
|
7912
|
+
schemaId: string;
|
|
7913
|
+
schema?: Record<string, unknown> | undefined;
|
|
7914
|
+
} | undefined;
|
|
7915
|
+
filter?: {
|
|
7916
|
+
field: string;
|
|
7917
|
+
operator: string;
|
|
7918
|
+
value?: string | number | boolean | (string | number)[] | null | undefined;
|
|
7919
|
+
}[] | undefined;
|
|
7920
|
+
sort?: string | {
|
|
7921
|
+
field: string;
|
|
7922
|
+
order: "asc" | "desc";
|
|
7923
|
+
}[] | undefined;
|
|
7924
|
+
searchableFields?: string[] | undefined;
|
|
7925
|
+
filterableFields?: string[] | undefined;
|
|
7926
|
+
userFilters?: {
|
|
7927
|
+
element: "toggle" | "tabs" | "dropdown";
|
|
7928
|
+
fields?: {
|
|
7929
|
+
field: string;
|
|
7930
|
+
label?: string | undefined;
|
|
7931
|
+
type?: "boolean" | "text" | "select" | "multi-select" | "date-range" | undefined;
|
|
7932
|
+
options?: {
|
|
7933
|
+
value: string | number | boolean;
|
|
7934
|
+
label: string;
|
|
7935
|
+
color?: string | undefined;
|
|
7936
|
+
}[] | undefined;
|
|
7937
|
+
showCount?: boolean | undefined;
|
|
7938
|
+
defaultValues?: (string | number | boolean)[] | undefined;
|
|
7939
|
+
}[] | undefined;
|
|
7940
|
+
tabs?: {
|
|
7941
|
+
name: string;
|
|
7942
|
+
pinned: boolean;
|
|
7943
|
+
isDefault: boolean;
|
|
7944
|
+
visible: boolean;
|
|
7945
|
+
label?: string | undefined;
|
|
7946
|
+
icon?: string | undefined;
|
|
7947
|
+
view?: string | undefined;
|
|
7948
|
+
filter?: {
|
|
7949
|
+
field: string;
|
|
7950
|
+
operator: string;
|
|
7951
|
+
value?: string | number | boolean | (string | number)[] | null | undefined;
|
|
7952
|
+
}[] | undefined;
|
|
7953
|
+
order?: number | undefined;
|
|
7954
|
+
}[] | undefined;
|
|
7955
|
+
showAllRecords?: boolean | undefined;
|
|
7956
|
+
} | undefined;
|
|
7957
|
+
resizable?: boolean | undefined;
|
|
7958
|
+
striped?: boolean | undefined;
|
|
7959
|
+
bordered?: boolean | undefined;
|
|
7960
|
+
compactToolbar?: boolean | undefined;
|
|
7961
|
+
selection?: {
|
|
7962
|
+
type: "none" | "multiple" | "single";
|
|
7963
|
+
} | undefined;
|
|
7964
|
+
navigation?: {
|
|
7965
|
+
mode: "none" | "split" | "page" | "drawer" | "modal" | "popover" | "new_window";
|
|
7966
|
+
preventNavigation: boolean;
|
|
7967
|
+
openNewTab: boolean;
|
|
7968
|
+
view?: string | undefined;
|
|
7969
|
+
width?: string | number | undefined;
|
|
7970
|
+
} | undefined;
|
|
7971
|
+
pagination?: {
|
|
7972
|
+
pageSize: number;
|
|
7973
|
+
pageSizeOptions?: number[] | undefined;
|
|
7974
|
+
} | undefined;
|
|
7975
|
+
kanban?: {
|
|
7976
|
+
groupByField: string;
|
|
7977
|
+
columns: string[];
|
|
7978
|
+
summarizeField?: string | undefined;
|
|
7979
|
+
} | undefined;
|
|
7980
|
+
calendar?: {
|
|
7981
|
+
startDateField: string;
|
|
7982
|
+
titleField: string;
|
|
7983
|
+
endDateField?: string | undefined;
|
|
7984
|
+
colorField?: string | undefined;
|
|
7985
|
+
} | undefined;
|
|
7986
|
+
gantt?: {
|
|
7987
|
+
startDateField: string;
|
|
7988
|
+
endDateField: string;
|
|
7989
|
+
titleField: string;
|
|
7990
|
+
progressField?: string | undefined;
|
|
7991
|
+
dependenciesField?: string | undefined;
|
|
7992
|
+
} | undefined;
|
|
7993
|
+
gallery?: {
|
|
7994
|
+
coverFit: "cover" | "contain";
|
|
7995
|
+
cardSize: "small" | "medium" | "large";
|
|
7996
|
+
coverField?: string | undefined;
|
|
7997
|
+
titleField?: string | undefined;
|
|
7998
|
+
visibleFields?: string[] | undefined;
|
|
7999
|
+
} | undefined;
|
|
8000
|
+
timeline?: {
|
|
8001
|
+
startDateField: string;
|
|
8002
|
+
titleField: string;
|
|
8003
|
+
scale: "hour" | "day" | "week" | "month" | "quarter" | "year";
|
|
8004
|
+
endDateField?: string | undefined;
|
|
8005
|
+
groupByField?: string | undefined;
|
|
8006
|
+
colorField?: string | undefined;
|
|
8007
|
+
} | undefined;
|
|
8008
|
+
chart?: {
|
|
8009
|
+
chartType: "bar" | "line" | "pie" | "area" | "scatter";
|
|
8010
|
+
dataset: string;
|
|
8011
|
+
values: string[];
|
|
8012
|
+
dimensions?: string[] | undefined;
|
|
8013
|
+
} | undefined;
|
|
8014
|
+
description?: string | undefined;
|
|
8015
|
+
sharing?: {
|
|
8016
|
+
type: "personal" | "collaborative";
|
|
8017
|
+
lockedBy?: string | undefined;
|
|
8018
|
+
} | undefined;
|
|
8019
|
+
rowHeight?: "medium" | "short" | "compact" | "tall" | "extra_tall" | undefined;
|
|
8020
|
+
grouping?: {
|
|
8021
|
+
fields: {
|
|
8022
|
+
field: string;
|
|
8023
|
+
order: "asc" | "desc";
|
|
8024
|
+
collapsed: boolean;
|
|
8025
|
+
}[];
|
|
8026
|
+
} | undefined;
|
|
8027
|
+
rowColor?: {
|
|
8028
|
+
field: string;
|
|
8029
|
+
colors?: Record<string, string> | undefined;
|
|
8030
|
+
} | undefined;
|
|
8031
|
+
hiddenFields?: string[] | undefined;
|
|
8032
|
+
fieldOrder?: string[] | undefined;
|
|
8033
|
+
rowActions?: string[] | undefined;
|
|
8034
|
+
bulkActions?: string[] | undefined;
|
|
8035
|
+
bulkActionDefs?: Record<string, any>[] | undefined;
|
|
8036
|
+
virtualScroll?: boolean | undefined;
|
|
8037
|
+
conditionalFormatting?: {
|
|
8038
|
+
condition: {
|
|
8039
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
8040
|
+
source?: string | undefined;
|
|
8041
|
+
ast?: unknown;
|
|
8042
|
+
meta?: {
|
|
8043
|
+
rationale?: string | undefined;
|
|
8044
|
+
generatedBy?: string | undefined;
|
|
8045
|
+
} | undefined;
|
|
8046
|
+
} | {
|
|
8047
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
8048
|
+
source?: string | undefined;
|
|
8049
|
+
ast?: unknown;
|
|
8050
|
+
meta?: {
|
|
8051
|
+
rationale?: string | undefined;
|
|
8052
|
+
generatedBy?: string | undefined;
|
|
8053
|
+
} | undefined;
|
|
8054
|
+
};
|
|
8055
|
+
style: Record<string, string>;
|
|
8056
|
+
}[] | undefined;
|
|
8057
|
+
inlineEdit?: boolean | undefined;
|
|
8058
|
+
exportOptions?: ("json" | "csv" | "xlsx" | "pdf")[] | undefined;
|
|
8059
|
+
userActions?: {
|
|
8060
|
+
sort: boolean;
|
|
8061
|
+
search: boolean;
|
|
8062
|
+
filter: boolean;
|
|
8063
|
+
rowHeight: boolean;
|
|
8064
|
+
addRecordForm: boolean;
|
|
8065
|
+
buttons?: string[] | undefined;
|
|
8066
|
+
} | undefined;
|
|
8067
|
+
appearance?: {
|
|
8068
|
+
showDescription: boolean;
|
|
8069
|
+
allowedVisualizations?: ("grid" | "kanban" | "calendar" | "gantt" | "gallery" | "timeline" | "chart" | "map")[] | undefined;
|
|
8070
|
+
} | undefined;
|
|
8071
|
+
tabs?: {
|
|
8072
|
+
name: string;
|
|
8073
|
+
pinned: boolean;
|
|
8074
|
+
isDefault: boolean;
|
|
8075
|
+
visible: boolean;
|
|
8076
|
+
label?: string | undefined;
|
|
8077
|
+
icon?: string | undefined;
|
|
8078
|
+
view?: string | undefined;
|
|
8079
|
+
filter?: {
|
|
8080
|
+
field: string;
|
|
8081
|
+
operator: string;
|
|
8082
|
+
value?: string | number | boolean | (string | number)[] | null | undefined;
|
|
8083
|
+
}[] | undefined;
|
|
8084
|
+
order?: number | undefined;
|
|
8085
|
+
}[] | undefined;
|
|
8086
|
+
addRecord?: {
|
|
8087
|
+
enabled: boolean;
|
|
8088
|
+
position: "top" | "bottom" | "both";
|
|
8089
|
+
mode: "form" | "modal" | "inline";
|
|
8090
|
+
formView?: string | undefined;
|
|
8091
|
+
} | undefined;
|
|
8092
|
+
showRecordCount?: boolean | undefined;
|
|
8093
|
+
allowPrinting?: boolean | undefined;
|
|
8094
|
+
emptyState?: {
|
|
8095
|
+
title?: string | undefined;
|
|
8096
|
+
message?: string | undefined;
|
|
8097
|
+
icon?: string | undefined;
|
|
8098
|
+
} | undefined;
|
|
8099
|
+
aria?: {
|
|
8100
|
+
ariaLabel?: string | undefined;
|
|
8101
|
+
ariaDescribedBy?: string | undefined;
|
|
8102
|
+
role?: string | undefined;
|
|
8103
|
+
} | undefined;
|
|
8104
|
+
responsive?: {
|
|
8105
|
+
breakpoint?: "md" | "xs" | "sm" | "lg" | "xl" | "2xl" | undefined;
|
|
8106
|
+
hiddenOn?: ("md" | "xs" | "sm" | "lg" | "xl" | "2xl")[] | undefined;
|
|
8107
|
+
columns?: {
|
|
8108
|
+
xs?: number | undefined;
|
|
8109
|
+
sm?: number | undefined;
|
|
8110
|
+
md?: number | undefined;
|
|
8111
|
+
lg?: number | undefined;
|
|
8112
|
+
xl?: number | undefined;
|
|
8113
|
+
'2xl'?: number | undefined;
|
|
8114
|
+
} | undefined;
|
|
8115
|
+
order?: {
|
|
8116
|
+
xs?: number | undefined;
|
|
8117
|
+
sm?: number | undefined;
|
|
8118
|
+
md?: number | undefined;
|
|
8119
|
+
lg?: number | undefined;
|
|
8120
|
+
xl?: number | undefined;
|
|
8121
|
+
'2xl'?: number | undefined;
|
|
8122
|
+
} | undefined;
|
|
8123
|
+
} | undefined;
|
|
8124
|
+
performance?: {
|
|
8125
|
+
lazyLoad?: boolean | undefined;
|
|
8126
|
+
virtualScroll?: {
|
|
8127
|
+
enabled: boolean;
|
|
8128
|
+
itemHeight?: number | undefined;
|
|
8129
|
+
overscan?: number | undefined;
|
|
8130
|
+
} | undefined;
|
|
8131
|
+
cacheStrategy?: "none" | "cache-first" | "network-first" | "stale-while-revalidate" | undefined;
|
|
8132
|
+
prefetch?: boolean | undefined;
|
|
8133
|
+
pageSize?: number | undefined;
|
|
8134
|
+
debounceMs?: number | undefined;
|
|
8135
|
+
} | undefined;
|
|
8136
|
+
}> | undefined;
|
|
8137
|
+
defaultDetailForm?: string | undefined;
|
|
8138
|
+
search?: {
|
|
8139
|
+
fields: string[];
|
|
8140
|
+
displayFields?: string[] | undefined;
|
|
8141
|
+
filters?: string[] | undefined;
|
|
8142
|
+
} | undefined;
|
|
8143
|
+
enable?: {
|
|
8144
|
+
trackHistory: boolean;
|
|
8145
|
+
searchable: boolean;
|
|
8146
|
+
apiEnabled: boolean;
|
|
8147
|
+
files: boolean;
|
|
8148
|
+
feeds: boolean;
|
|
8149
|
+
activities: boolean;
|
|
8150
|
+
trash: boolean;
|
|
8151
|
+
mru: boolean;
|
|
8152
|
+
clone: boolean;
|
|
8153
|
+
apiMethods?: ("search" | "create" | "import" | "delete" | "list" | "get" | "update" | "upsert" | "bulk" | "aggregate" | "history" | "restore" | "purge" | "export")[] | undefined;
|
|
8154
|
+
} | undefined;
|
|
8155
|
+
recordTypes?: string[] | undefined;
|
|
8156
|
+
sharingModel?: "full" | "read" | "private" | "read_write" | undefined;
|
|
8157
|
+
publicSharing?: {
|
|
8158
|
+
enabled: boolean;
|
|
8159
|
+
allowedAudiences?: ("email" | "public" | "link_only" | "signed_in")[] | undefined;
|
|
8160
|
+
allowedPermissions?: ("edit" | "view" | "comment")[] | undefined;
|
|
8161
|
+
maxExpiryDays?: number | undefined;
|
|
8162
|
+
redactFields?: string[] | undefined;
|
|
8163
|
+
eligibility?: string | undefined;
|
|
8164
|
+
} | undefined;
|
|
8165
|
+
keyPrefix?: string | undefined;
|
|
8166
|
+
detail?: {
|
|
8167
|
+
[x: string]: unknown;
|
|
8168
|
+
renderViaSchema?: boolean | undefined;
|
|
8169
|
+
hideReferenceRail?: boolean | undefined;
|
|
8170
|
+
hideRelatedTab?: boolean | undefined;
|
|
8171
|
+
} | undefined;
|
|
8172
|
+
actions?: {
|
|
8173
|
+
name: string;
|
|
8174
|
+
label: string;
|
|
8175
|
+
type: "url" | "form" | "flow" | "api" | "script" | "modal";
|
|
8176
|
+
refreshAfter: boolean;
|
|
8177
|
+
objectName?: string | undefined;
|
|
8178
|
+
icon?: string | undefined;
|
|
8179
|
+
locations?: ("list_toolbar" | "list_item" | "record_header" | "record_more" | "record_related" | "record_section" | "global_nav")[] | undefined;
|
|
8180
|
+
component?: "action:button" | "action:icon" | "action:menu" | "action:group" | undefined;
|
|
8181
|
+
target?: string | undefined;
|
|
8182
|
+
body?: {
|
|
8183
|
+
language: "expression";
|
|
8184
|
+
source: string;
|
|
8185
|
+
} | {
|
|
8186
|
+
language: "js";
|
|
8187
|
+
source: string;
|
|
8188
|
+
capabilities: ("api.read" | "api.write" | "crypto.uuid" | "crypto.hash" | "log")[];
|
|
8189
|
+
timeoutMs?: number | undefined;
|
|
8190
|
+
memoryMb?: number | undefined;
|
|
8191
|
+
} | undefined;
|
|
8192
|
+
execute?: string | undefined;
|
|
8193
|
+
params?: {
|
|
8194
|
+
required: boolean;
|
|
8195
|
+
name?: string | undefined;
|
|
8196
|
+
field?: string | undefined;
|
|
8197
|
+
objectOverride?: string | undefined;
|
|
8198
|
+
label?: string | undefined;
|
|
8199
|
+
type?: "number" | "boolean" | "date" | "record" | "file" | "code" | "datetime" | "signature" | "progress" | "url" | "lookup" | "master_detail" | "currency" | "percent" | "password" | "secret" | "email" | "time" | "text" | "textarea" | "phone" | "markdown" | "html" | "richtext" | "toggle" | "select" | "multiselect" | "radio" | "checkboxes" | "tree" | "image" | "avatar" | "video" | "audio" | "formula" | "summary" | "autonumber" | "composite" | "repeater" | "location" | "address" | "json" | "color" | "rating" | "slider" | "qrcode" | "tags" | "vector" | undefined;
|
|
8200
|
+
options?: {
|
|
8201
|
+
label: string;
|
|
8202
|
+
value: string;
|
|
8203
|
+
}[] | undefined;
|
|
8204
|
+
placeholder?: string | undefined;
|
|
8205
|
+
helpText?: string | undefined;
|
|
8206
|
+
defaultValue?: unknown;
|
|
8207
|
+
defaultFromRow?: boolean | undefined;
|
|
8208
|
+
}[] | undefined;
|
|
8209
|
+
variant?: "link" | "primary" | "secondary" | "danger" | "ghost" | undefined;
|
|
8210
|
+
confirmText?: string | undefined;
|
|
8211
|
+
successMessage?: string | undefined;
|
|
8212
|
+
resultDialog?: {
|
|
8213
|
+
title?: string | undefined;
|
|
8214
|
+
description?: string | undefined;
|
|
8215
|
+
acknowledge?: string | undefined;
|
|
8216
|
+
format?: "secret" | "text" | "json" | "qrcode" | "code-list" | undefined;
|
|
8217
|
+
fields?: {
|
|
8218
|
+
path: string;
|
|
8219
|
+
label?: string | undefined;
|
|
8220
|
+
format?: "secret" | "text" | "json" | "qrcode" | "code-list" | undefined;
|
|
8221
|
+
}[] | undefined;
|
|
8222
|
+
} | undefined;
|
|
8223
|
+
visible?: {
|
|
8224
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
8225
|
+
source?: string | undefined;
|
|
8226
|
+
ast?: unknown;
|
|
8227
|
+
meta?: {
|
|
8228
|
+
rationale?: string | undefined;
|
|
8229
|
+
generatedBy?: string | undefined;
|
|
8230
|
+
} | undefined;
|
|
8231
|
+
} | undefined;
|
|
8232
|
+
disabled?: boolean | {
|
|
8233
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
8234
|
+
source?: string | undefined;
|
|
8235
|
+
ast?: unknown;
|
|
8236
|
+
meta?: {
|
|
8237
|
+
rationale?: string | undefined;
|
|
8238
|
+
generatedBy?: string | undefined;
|
|
8239
|
+
} | undefined;
|
|
8240
|
+
} | undefined;
|
|
8241
|
+
shortcut?: string | undefined;
|
|
8242
|
+
bulkEnabled?: boolean | undefined;
|
|
8243
|
+
ai?: {
|
|
8244
|
+
exposed: boolean;
|
|
8245
|
+
description?: string | undefined;
|
|
8246
|
+
category?: "action" | "data" | "flow" | "integration" | "vector_search" | "analytics" | "utility" | undefined;
|
|
8247
|
+
paramHints?: Record<string, {
|
|
8248
|
+
description?: string | undefined;
|
|
8249
|
+
enum?: (string | number)[] | undefined;
|
|
8250
|
+
examples?: unknown[] | undefined;
|
|
8251
|
+
}> | undefined;
|
|
8252
|
+
outputSchema?: Record<string, unknown> | undefined;
|
|
8253
|
+
requiresConfirmation?: boolean | undefined;
|
|
8254
|
+
} | undefined;
|
|
8255
|
+
recordIdParam?: string | undefined;
|
|
8256
|
+
recordIdField?: string | undefined;
|
|
8257
|
+
bodyShape?: "flat" | {
|
|
8258
|
+
wrap: string;
|
|
8259
|
+
} | undefined;
|
|
8260
|
+
method?: "POST" | "PATCH" | "PUT" | "DELETE" | undefined;
|
|
8261
|
+
bodyExtra?: Record<string, unknown> | undefined;
|
|
8262
|
+
mode?: "custom" | "delete" | "edit" | "create" | undefined;
|
|
8263
|
+
opensInNewTab?: boolean | undefined;
|
|
8264
|
+
newTabUrl?: string | undefined;
|
|
8265
|
+
timeout?: number | undefined;
|
|
8266
|
+
aria?: {
|
|
8267
|
+
ariaLabel?: string | undefined;
|
|
8268
|
+
ariaDescribedBy?: string | undefined;
|
|
8269
|
+
role?: string | undefined;
|
|
8270
|
+
} | undefined;
|
|
8271
|
+
}[] | undefined;
|
|
8272
|
+
protection?: {
|
|
8273
|
+
lock: "full" | "none" | "no-overlay" | "no-delete";
|
|
8274
|
+
reason: string;
|
|
8275
|
+
docsUrl?: string | undefined;
|
|
8276
|
+
} | undefined;
|
|
8277
|
+
}, "fields"> & Pick<{
|
|
8278
|
+
readonly name: "sys_approval_approver";
|
|
8279
|
+
readonly label: "Approval Approver";
|
|
8280
|
+
readonly pluralLabel: "Approval Approvers";
|
|
8281
|
+
readonly icon: "users";
|
|
8282
|
+
readonly isSystem: true;
|
|
8283
|
+
readonly managedBy: "system";
|
|
8284
|
+
readonly description: "Normalized pending-approver rows for indexed inbox queries";
|
|
8285
|
+
readonly displayNameField: "id";
|
|
8286
|
+
readonly titleFormat: "{approver} · {request_id}";
|
|
8287
|
+
readonly compactLayout: ["request_id", "approver", "created_at"];
|
|
8288
|
+
readonly fields: {
|
|
8289
|
+
readonly id: {
|
|
8290
|
+
readonly readonly?: boolean | undefined;
|
|
8291
|
+
readonly format?: string | undefined;
|
|
8292
|
+
readonly options?: {
|
|
8293
|
+
label: string;
|
|
8294
|
+
value: string;
|
|
8295
|
+
color?: string | undefined;
|
|
8296
|
+
default?: boolean | undefined;
|
|
8297
|
+
}[] | undefined;
|
|
8298
|
+
readonly description?: string | undefined;
|
|
8299
|
+
readonly label?: string | undefined;
|
|
8300
|
+
readonly name?: string | undefined;
|
|
8301
|
+
readonly precision?: number | undefined;
|
|
8302
|
+
readonly required?: boolean | undefined;
|
|
8303
|
+
readonly multiple?: boolean | undefined;
|
|
8304
|
+
readonly dependencies?: string[] | undefined;
|
|
8305
|
+
readonly theme?: string | undefined;
|
|
8306
|
+
readonly externalId?: boolean | undefined;
|
|
8307
|
+
readonly defaultValue?: unknown;
|
|
8308
|
+
readonly group?: string | undefined;
|
|
8309
|
+
readonly hidden?: boolean | undefined;
|
|
8310
|
+
readonly system?: boolean | undefined;
|
|
8311
|
+
readonly min?: number | undefined;
|
|
8312
|
+
readonly max?: number | undefined;
|
|
8313
|
+
readonly encryptionConfig?: {
|
|
8314
|
+
enabled: boolean;
|
|
8315
|
+
algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
|
|
8316
|
+
keyManagement: {
|
|
8317
|
+
provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
|
|
8318
|
+
keyId?: string | undefined;
|
|
8319
|
+
rotationPolicy?: {
|
|
8320
|
+
enabled: boolean;
|
|
8321
|
+
frequencyDays: number;
|
|
8322
|
+
retainOldVersions: number;
|
|
8323
|
+
autoRotate: boolean;
|
|
8324
|
+
} | undefined;
|
|
8325
|
+
};
|
|
8326
|
+
scope: "record" | "field" | "table" | "database";
|
|
8327
|
+
deterministicEncryption: boolean;
|
|
8328
|
+
searchableEncryption: boolean;
|
|
8329
|
+
} | undefined;
|
|
8330
|
+
readonly columnName?: string | undefined;
|
|
8331
|
+
readonly searchable?: boolean | undefined;
|
|
8332
|
+
readonly unique?: boolean | undefined;
|
|
8333
|
+
readonly maxLength?: number | undefined;
|
|
8334
|
+
readonly minLength?: number | undefined;
|
|
8335
|
+
readonly scale?: number | undefined;
|
|
8336
|
+
readonly reference?: string | undefined;
|
|
8337
|
+
readonly referenceFilters?: string[] | undefined;
|
|
8338
|
+
readonly writeRequiresMasterRead?: boolean | undefined;
|
|
8339
|
+
readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
|
|
8340
|
+
readonly inlineEdit?: boolean | "grid" | "form" | undefined;
|
|
8341
|
+
readonly inlineTitle?: string | undefined;
|
|
8342
|
+
readonly inlineColumns?: any[] | undefined;
|
|
8343
|
+
readonly inlineAmountField?: string | undefined;
|
|
8344
|
+
readonly relatedList?: boolean | undefined;
|
|
8345
|
+
readonly relatedListTitle?: string | undefined;
|
|
8346
|
+
readonly relatedListColumns?: any[] | undefined;
|
|
8347
|
+
readonly expression?: {
|
|
8348
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
8349
|
+
source?: string | undefined;
|
|
8350
|
+
ast?: unknown;
|
|
8351
|
+
meta?: {
|
|
8352
|
+
rationale?: string | undefined;
|
|
8353
|
+
generatedBy?: string | undefined;
|
|
8354
|
+
} | undefined;
|
|
8355
|
+
} | undefined;
|
|
8356
|
+
readonly summaryOperations?: {
|
|
8357
|
+
object: string;
|
|
8358
|
+
field: string;
|
|
8359
|
+
function: "min" | "max" | "count" | "sum" | "avg";
|
|
8360
|
+
relationshipField?: string | undefined;
|
|
8361
|
+
} | undefined;
|
|
8362
|
+
readonly language?: string | undefined;
|
|
8363
|
+
readonly lineNumbers?: boolean | undefined;
|
|
8364
|
+
readonly maxRating?: number | undefined;
|
|
8365
|
+
readonly allowHalf?: boolean | undefined;
|
|
8366
|
+
readonly displayMap?: boolean | undefined;
|
|
8367
|
+
readonly allowGeocoding?: boolean | undefined;
|
|
8368
|
+
readonly addressFormat?: "us" | "uk" | "international" | undefined;
|
|
8369
|
+
readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
|
|
8370
|
+
readonly allowAlpha?: boolean | undefined;
|
|
8371
|
+
readonly presetColors?: string[] | undefined;
|
|
8372
|
+
readonly step?: number | undefined;
|
|
8373
|
+
readonly showValue?: boolean | undefined;
|
|
8374
|
+
readonly marks?: Record<string, string> | undefined;
|
|
8375
|
+
readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
|
|
8376
|
+
readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
|
|
8377
|
+
readonly displayValue?: boolean | undefined;
|
|
8378
|
+
readonly allowScanning?: boolean | undefined;
|
|
8379
|
+
readonly currencyConfig?: {
|
|
8380
|
+
precision: number;
|
|
8381
|
+
currencyMode: "fixed" | "dynamic";
|
|
8382
|
+
defaultCurrency: string;
|
|
8383
|
+
} | undefined;
|
|
8384
|
+
readonly vectorConfig?: {
|
|
8385
|
+
dimensions: number;
|
|
8386
|
+
distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
|
|
8387
|
+
normalized: boolean;
|
|
8388
|
+
indexed: boolean;
|
|
8389
|
+
indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
|
|
8390
|
+
} | undefined;
|
|
8391
|
+
readonly fileAttachmentConfig?: {
|
|
8392
|
+
virusScan: boolean;
|
|
8393
|
+
virusScanOnUpload: boolean;
|
|
8394
|
+
quarantineOnThreat: boolean;
|
|
8395
|
+
allowMultiple: boolean;
|
|
8396
|
+
allowReplace: boolean;
|
|
8397
|
+
allowDelete: boolean;
|
|
8398
|
+
requireUpload: boolean;
|
|
8399
|
+
extractMetadata: boolean;
|
|
8400
|
+
extractText: boolean;
|
|
8401
|
+
versioningEnabled: boolean;
|
|
8402
|
+
publicRead: boolean;
|
|
8403
|
+
presignedUrlExpiry: number;
|
|
8404
|
+
minSize?: number | undefined;
|
|
8405
|
+
maxSize?: number | undefined;
|
|
8406
|
+
allowedTypes?: string[] | undefined;
|
|
8407
|
+
blockedTypes?: string[] | undefined;
|
|
8408
|
+
allowedMimeTypes?: string[] | undefined;
|
|
8409
|
+
blockedMimeTypes?: string[] | undefined;
|
|
8410
|
+
virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
|
|
8411
|
+
storageProvider?: string | undefined;
|
|
8412
|
+
storageBucket?: string | undefined;
|
|
8413
|
+
storagePrefix?: string | undefined;
|
|
8414
|
+
imageValidation?: {
|
|
8415
|
+
generateThumbnails: boolean;
|
|
8416
|
+
preserveMetadata: boolean;
|
|
8417
|
+
autoRotate: boolean;
|
|
8418
|
+
minWidth?: number | undefined;
|
|
8419
|
+
maxWidth?: number | undefined;
|
|
8420
|
+
minHeight?: number | undefined;
|
|
8421
|
+
maxHeight?: number | undefined;
|
|
8422
|
+
aspectRatio?: string | undefined;
|
|
8423
|
+
thumbnailSizes?: {
|
|
8424
|
+
name: string;
|
|
8425
|
+
width: number;
|
|
8426
|
+
height: number;
|
|
8427
|
+
crop: boolean;
|
|
8428
|
+
}[] | undefined;
|
|
8429
|
+
} | undefined;
|
|
8430
|
+
maxVersions?: number | undefined;
|
|
8431
|
+
} | undefined;
|
|
8432
|
+
readonly maskingRule?: {
|
|
8433
|
+
field: string;
|
|
8434
|
+
strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
|
|
8435
|
+
preserveFormat: boolean;
|
|
8436
|
+
preserveLength: boolean;
|
|
8437
|
+
pattern?: string | undefined;
|
|
8438
|
+
roles?: string[] | undefined;
|
|
8439
|
+
exemptRoles?: string[] | undefined;
|
|
8440
|
+
} | undefined;
|
|
8441
|
+
readonly auditTrail?: boolean | undefined;
|
|
8442
|
+
readonly cached?: {
|
|
8443
|
+
enabled: boolean;
|
|
8444
|
+
ttl: number;
|
|
8445
|
+
invalidateOn: string[];
|
|
8446
|
+
} | undefined;
|
|
8447
|
+
readonly dataQuality?: {
|
|
8448
|
+
uniqueness: boolean;
|
|
8449
|
+
completeness: number;
|
|
8450
|
+
accuracy?: {
|
|
8451
|
+
source: string;
|
|
8452
|
+
threshold: number;
|
|
8453
|
+
} | undefined;
|
|
8454
|
+
} | undefined;
|
|
8455
|
+
readonly visibleWhen?: {
|
|
8456
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
8457
|
+
source?: string | undefined;
|
|
8458
|
+
ast?: unknown;
|
|
8459
|
+
meta?: {
|
|
8460
|
+
rationale?: string | undefined;
|
|
8461
|
+
generatedBy?: string | undefined;
|
|
8462
|
+
} | undefined;
|
|
8463
|
+
} | undefined;
|
|
8464
|
+
readonly readonlyWhen?: {
|
|
8465
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
8466
|
+
source?: string | undefined;
|
|
8467
|
+
ast?: unknown;
|
|
8468
|
+
meta?: {
|
|
8469
|
+
rationale?: string | undefined;
|
|
8470
|
+
generatedBy?: string | undefined;
|
|
8471
|
+
} | undefined;
|
|
8472
|
+
} | undefined;
|
|
8473
|
+
readonly requiredWhen?: {
|
|
8474
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
8475
|
+
source?: string | undefined;
|
|
8476
|
+
ast?: unknown;
|
|
8477
|
+
meta?: {
|
|
8478
|
+
rationale?: string | undefined;
|
|
8479
|
+
generatedBy?: string | undefined;
|
|
8480
|
+
} | undefined;
|
|
8481
|
+
} | undefined;
|
|
8482
|
+
readonly conditionalRequired?: {
|
|
8483
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
8484
|
+
source?: string | undefined;
|
|
8485
|
+
ast?: unknown;
|
|
8486
|
+
meta?: {
|
|
8487
|
+
rationale?: string | undefined;
|
|
8488
|
+
generatedBy?: string | undefined;
|
|
8489
|
+
} | undefined;
|
|
8490
|
+
} | undefined;
|
|
8491
|
+
readonly sortable?: boolean | undefined;
|
|
8492
|
+
readonly inlineHelpText?: string | undefined;
|
|
8493
|
+
readonly trackFeedHistory?: boolean | undefined;
|
|
8494
|
+
readonly caseSensitive?: boolean | undefined;
|
|
8495
|
+
readonly autonumberFormat?: string | undefined;
|
|
8496
|
+
readonly index?: boolean | undefined;
|
|
8497
|
+
readonly type: "text";
|
|
8498
|
+
};
|
|
8499
|
+
readonly organization_id: {
|
|
8500
|
+
readonly readonly?: boolean | undefined;
|
|
8501
|
+
readonly format?: string | undefined;
|
|
8502
|
+
readonly options?: {
|
|
8503
|
+
label: string;
|
|
8504
|
+
value: string;
|
|
8505
|
+
color?: string | undefined;
|
|
8506
|
+
default?: boolean | undefined;
|
|
8507
|
+
}[] | undefined;
|
|
8508
|
+
readonly description?: string | undefined;
|
|
8509
|
+
readonly label?: string | undefined;
|
|
8510
|
+
readonly name?: string | undefined;
|
|
8511
|
+
readonly precision?: number | undefined;
|
|
8512
|
+
readonly required?: boolean | undefined;
|
|
8513
|
+
readonly multiple?: boolean | undefined;
|
|
8514
|
+
readonly dependencies?: string[] | undefined;
|
|
8515
|
+
readonly theme?: string | undefined;
|
|
8516
|
+
readonly externalId?: boolean | undefined;
|
|
8517
|
+
readonly defaultValue?: unknown;
|
|
8518
|
+
readonly group?: string | undefined;
|
|
8519
|
+
readonly hidden?: boolean | undefined;
|
|
8520
|
+
readonly system?: boolean | undefined;
|
|
8521
|
+
readonly min?: number | undefined;
|
|
8522
|
+
readonly max?: number | undefined;
|
|
8523
|
+
readonly encryptionConfig?: {
|
|
8524
|
+
enabled: boolean;
|
|
8525
|
+
algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
|
|
8526
|
+
keyManagement: {
|
|
8527
|
+
provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
|
|
8528
|
+
keyId?: string | undefined;
|
|
8529
|
+
rotationPolicy?: {
|
|
8530
|
+
enabled: boolean;
|
|
8531
|
+
frequencyDays: number;
|
|
8532
|
+
retainOldVersions: number;
|
|
8533
|
+
autoRotate: boolean;
|
|
8534
|
+
} | undefined;
|
|
8535
|
+
};
|
|
8536
|
+
scope: "record" | "field" | "table" | "database";
|
|
8537
|
+
deterministicEncryption: boolean;
|
|
8538
|
+
searchableEncryption: boolean;
|
|
8539
|
+
} | undefined;
|
|
8540
|
+
readonly columnName?: string | undefined;
|
|
8541
|
+
readonly searchable?: boolean | undefined;
|
|
8542
|
+
readonly unique?: boolean | undefined;
|
|
8543
|
+
readonly maxLength?: number | undefined;
|
|
8544
|
+
readonly minLength?: number | undefined;
|
|
8545
|
+
readonly scale?: number | undefined;
|
|
8546
|
+
reference: string;
|
|
8547
|
+
readonly referenceFilters?: string[] | undefined;
|
|
8548
|
+
readonly writeRequiresMasterRead?: boolean | undefined;
|
|
8549
|
+
readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
|
|
8550
|
+
readonly inlineEdit?: boolean | "grid" | "form" | undefined;
|
|
8551
|
+
readonly inlineTitle?: string | undefined;
|
|
8552
|
+
readonly inlineColumns?: any[] | undefined;
|
|
8553
|
+
readonly inlineAmountField?: string | undefined;
|
|
8554
|
+
readonly relatedList?: boolean | undefined;
|
|
8555
|
+
readonly relatedListTitle?: string | undefined;
|
|
8556
|
+
readonly relatedListColumns?: any[] | undefined;
|
|
8557
|
+
readonly expression?: {
|
|
8558
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
8559
|
+
source?: string | undefined;
|
|
8560
|
+
ast?: unknown;
|
|
8561
|
+
meta?: {
|
|
8562
|
+
rationale?: string | undefined;
|
|
8563
|
+
generatedBy?: string | undefined;
|
|
8564
|
+
} | undefined;
|
|
8565
|
+
} | undefined;
|
|
8566
|
+
readonly summaryOperations?: {
|
|
8567
|
+
object: string;
|
|
8568
|
+
field: string;
|
|
8569
|
+
function: "min" | "max" | "count" | "sum" | "avg";
|
|
8570
|
+
relationshipField?: string | undefined;
|
|
8571
|
+
} | undefined;
|
|
8572
|
+
readonly language?: string | undefined;
|
|
8573
|
+
readonly lineNumbers?: boolean | undefined;
|
|
8574
|
+
readonly maxRating?: number | undefined;
|
|
8575
|
+
readonly allowHalf?: boolean | undefined;
|
|
8576
|
+
readonly displayMap?: boolean | undefined;
|
|
8577
|
+
readonly allowGeocoding?: boolean | undefined;
|
|
8578
|
+
readonly addressFormat?: "us" | "uk" | "international" | undefined;
|
|
8579
|
+
readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
|
|
8580
|
+
readonly allowAlpha?: boolean | undefined;
|
|
8581
|
+
readonly presetColors?: string[] | undefined;
|
|
8582
|
+
readonly step?: number | undefined;
|
|
8583
|
+
readonly showValue?: boolean | undefined;
|
|
8584
|
+
readonly marks?: Record<string, string> | undefined;
|
|
8585
|
+
readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
|
|
8586
|
+
readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
|
|
8587
|
+
readonly displayValue?: boolean | undefined;
|
|
8588
|
+
readonly allowScanning?: boolean | undefined;
|
|
8589
|
+
readonly currencyConfig?: {
|
|
8590
|
+
precision: number;
|
|
8591
|
+
currencyMode: "fixed" | "dynamic";
|
|
8592
|
+
defaultCurrency: string;
|
|
8593
|
+
} | undefined;
|
|
8594
|
+
readonly vectorConfig?: {
|
|
8595
|
+
dimensions: number;
|
|
8596
|
+
distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
|
|
8597
|
+
normalized: boolean;
|
|
8598
|
+
indexed: boolean;
|
|
8599
|
+
indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
|
|
8600
|
+
} | undefined;
|
|
8601
|
+
readonly fileAttachmentConfig?: {
|
|
8602
|
+
virusScan: boolean;
|
|
8603
|
+
virusScanOnUpload: boolean;
|
|
8604
|
+
quarantineOnThreat: boolean;
|
|
8605
|
+
allowMultiple: boolean;
|
|
8606
|
+
allowReplace: boolean;
|
|
8607
|
+
allowDelete: boolean;
|
|
8608
|
+
requireUpload: boolean;
|
|
8609
|
+
extractMetadata: boolean;
|
|
8610
|
+
extractText: boolean;
|
|
8611
|
+
versioningEnabled: boolean;
|
|
8612
|
+
publicRead: boolean;
|
|
8613
|
+
presignedUrlExpiry: number;
|
|
8614
|
+
minSize?: number | undefined;
|
|
8615
|
+
maxSize?: number | undefined;
|
|
8616
|
+
allowedTypes?: string[] | undefined;
|
|
8617
|
+
blockedTypes?: string[] | undefined;
|
|
8618
|
+
allowedMimeTypes?: string[] | undefined;
|
|
8619
|
+
blockedMimeTypes?: string[] | undefined;
|
|
8620
|
+
virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
|
|
8621
|
+
storageProvider?: string | undefined;
|
|
8622
|
+
storageBucket?: string | undefined;
|
|
8623
|
+
storagePrefix?: string | undefined;
|
|
8624
|
+
imageValidation?: {
|
|
8625
|
+
generateThumbnails: boolean;
|
|
8626
|
+
preserveMetadata: boolean;
|
|
8627
|
+
autoRotate: boolean;
|
|
8628
|
+
minWidth?: number | undefined;
|
|
8629
|
+
maxWidth?: number | undefined;
|
|
8630
|
+
minHeight?: number | undefined;
|
|
8631
|
+
maxHeight?: number | undefined;
|
|
8632
|
+
aspectRatio?: string | undefined;
|
|
8633
|
+
thumbnailSizes?: {
|
|
8634
|
+
name: string;
|
|
8635
|
+
width: number;
|
|
8636
|
+
height: number;
|
|
8637
|
+
crop: boolean;
|
|
8638
|
+
}[] | undefined;
|
|
8639
|
+
} | undefined;
|
|
8640
|
+
maxVersions?: number | undefined;
|
|
8641
|
+
} | undefined;
|
|
8642
|
+
readonly maskingRule?: {
|
|
8643
|
+
field: string;
|
|
8644
|
+
strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
|
|
8645
|
+
preserveFormat: boolean;
|
|
8646
|
+
preserveLength: boolean;
|
|
8647
|
+
pattern?: string | undefined;
|
|
8648
|
+
roles?: string[] | undefined;
|
|
8649
|
+
exemptRoles?: string[] | undefined;
|
|
8650
|
+
} | undefined;
|
|
8651
|
+
readonly auditTrail?: boolean | undefined;
|
|
8652
|
+
readonly cached?: {
|
|
8653
|
+
enabled: boolean;
|
|
8654
|
+
ttl: number;
|
|
8655
|
+
invalidateOn: string[];
|
|
8656
|
+
} | undefined;
|
|
8657
|
+
readonly dataQuality?: {
|
|
8658
|
+
uniqueness: boolean;
|
|
8659
|
+
completeness: number;
|
|
8660
|
+
accuracy?: {
|
|
8661
|
+
source: string;
|
|
8662
|
+
threshold: number;
|
|
8663
|
+
} | undefined;
|
|
8664
|
+
} | undefined;
|
|
8665
|
+
readonly visibleWhen?: {
|
|
8666
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
8667
|
+
source?: string | undefined;
|
|
8668
|
+
ast?: unknown;
|
|
8669
|
+
meta?: {
|
|
8670
|
+
rationale?: string | undefined;
|
|
8671
|
+
generatedBy?: string | undefined;
|
|
8672
|
+
} | undefined;
|
|
8673
|
+
} | undefined;
|
|
8674
|
+
readonly readonlyWhen?: {
|
|
8675
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
8676
|
+
source?: string | undefined;
|
|
8677
|
+
ast?: unknown;
|
|
8678
|
+
meta?: {
|
|
8679
|
+
rationale?: string | undefined;
|
|
8680
|
+
generatedBy?: string | undefined;
|
|
8681
|
+
} | undefined;
|
|
8682
|
+
} | undefined;
|
|
8683
|
+
readonly requiredWhen?: {
|
|
8684
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
8685
|
+
source?: string | undefined;
|
|
8686
|
+
ast?: unknown;
|
|
8687
|
+
meta?: {
|
|
8688
|
+
rationale?: string | undefined;
|
|
8689
|
+
generatedBy?: string | undefined;
|
|
8690
|
+
} | undefined;
|
|
8691
|
+
} | undefined;
|
|
8692
|
+
readonly conditionalRequired?: {
|
|
8693
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
8694
|
+
source?: string | undefined;
|
|
8695
|
+
ast?: unknown;
|
|
8696
|
+
meta?: {
|
|
8697
|
+
rationale?: string | undefined;
|
|
8698
|
+
generatedBy?: string | undefined;
|
|
8699
|
+
} | undefined;
|
|
8700
|
+
} | undefined;
|
|
8701
|
+
readonly sortable?: boolean | undefined;
|
|
8702
|
+
readonly inlineHelpText?: string | undefined;
|
|
8703
|
+
readonly trackFeedHistory?: boolean | undefined;
|
|
8704
|
+
readonly caseSensitive?: boolean | undefined;
|
|
8705
|
+
readonly autonumberFormat?: string | undefined;
|
|
8706
|
+
readonly index?: boolean | undefined;
|
|
8707
|
+
readonly type: "lookup";
|
|
8708
|
+
};
|
|
8709
|
+
readonly request_id: {
|
|
8710
|
+
readonly readonly?: boolean | undefined;
|
|
8711
|
+
readonly format?: string | undefined;
|
|
8712
|
+
readonly options?: {
|
|
8713
|
+
label: string;
|
|
8714
|
+
value: string;
|
|
8715
|
+
color?: string | undefined;
|
|
8716
|
+
default?: boolean | undefined;
|
|
8717
|
+
}[] | undefined;
|
|
8718
|
+
readonly description?: string | undefined;
|
|
8719
|
+
readonly label?: string | undefined;
|
|
8720
|
+
readonly name?: string | undefined;
|
|
8721
|
+
readonly precision?: number | undefined;
|
|
8722
|
+
readonly required?: boolean | undefined;
|
|
8723
|
+
readonly multiple?: boolean | undefined;
|
|
8724
|
+
readonly dependencies?: string[] | undefined;
|
|
8725
|
+
readonly theme?: string | undefined;
|
|
8726
|
+
readonly externalId?: boolean | undefined;
|
|
8727
|
+
readonly defaultValue?: unknown;
|
|
8728
|
+
readonly group?: string | undefined;
|
|
8729
|
+
readonly hidden?: boolean | undefined;
|
|
8730
|
+
readonly system?: boolean | undefined;
|
|
8731
|
+
readonly min?: number | undefined;
|
|
8732
|
+
readonly max?: number | undefined;
|
|
8733
|
+
readonly encryptionConfig?: {
|
|
8734
|
+
enabled: boolean;
|
|
8735
|
+
algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
|
|
8736
|
+
keyManagement: {
|
|
8737
|
+
provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
|
|
8738
|
+
keyId?: string | undefined;
|
|
8739
|
+
rotationPolicy?: {
|
|
8740
|
+
enabled: boolean;
|
|
8741
|
+
frequencyDays: number;
|
|
8742
|
+
retainOldVersions: number;
|
|
8743
|
+
autoRotate: boolean;
|
|
8744
|
+
} | undefined;
|
|
8745
|
+
};
|
|
8746
|
+
scope: "record" | "field" | "table" | "database";
|
|
8747
|
+
deterministicEncryption: boolean;
|
|
8748
|
+
searchableEncryption: boolean;
|
|
8749
|
+
} | undefined;
|
|
8750
|
+
readonly columnName?: string | undefined;
|
|
8751
|
+
readonly searchable?: boolean | undefined;
|
|
8752
|
+
readonly unique?: boolean | undefined;
|
|
8753
|
+
readonly maxLength?: number | undefined;
|
|
8754
|
+
readonly minLength?: number | undefined;
|
|
8755
|
+
readonly scale?: number | undefined;
|
|
8756
|
+
reference: string;
|
|
8757
|
+
readonly referenceFilters?: string[] | undefined;
|
|
8758
|
+
readonly writeRequiresMasterRead?: boolean | undefined;
|
|
8759
|
+
readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
|
|
8760
|
+
readonly inlineEdit?: boolean | "grid" | "form" | undefined;
|
|
8761
|
+
readonly inlineTitle?: string | undefined;
|
|
8762
|
+
readonly inlineColumns?: any[] | undefined;
|
|
8763
|
+
readonly inlineAmountField?: string | undefined;
|
|
8764
|
+
readonly relatedList?: boolean | undefined;
|
|
8765
|
+
readonly relatedListTitle?: string | undefined;
|
|
8766
|
+
readonly relatedListColumns?: any[] | undefined;
|
|
8767
|
+
readonly expression?: {
|
|
8768
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
8769
|
+
source?: string | undefined;
|
|
8770
|
+
ast?: unknown;
|
|
8771
|
+
meta?: {
|
|
8772
|
+
rationale?: string | undefined;
|
|
8773
|
+
generatedBy?: string | undefined;
|
|
8774
|
+
} | undefined;
|
|
8775
|
+
} | undefined;
|
|
8776
|
+
readonly summaryOperations?: {
|
|
8777
|
+
object: string;
|
|
8778
|
+
field: string;
|
|
8779
|
+
function: "min" | "max" | "count" | "sum" | "avg";
|
|
8780
|
+
relationshipField?: string | undefined;
|
|
8781
|
+
} | undefined;
|
|
8782
|
+
readonly language?: string | undefined;
|
|
8783
|
+
readonly lineNumbers?: boolean | undefined;
|
|
8784
|
+
readonly maxRating?: number | undefined;
|
|
8785
|
+
readonly allowHalf?: boolean | undefined;
|
|
8786
|
+
readonly displayMap?: boolean | undefined;
|
|
8787
|
+
readonly allowGeocoding?: boolean | undefined;
|
|
8788
|
+
readonly addressFormat?: "us" | "uk" | "international" | undefined;
|
|
8789
|
+
readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
|
|
8790
|
+
readonly allowAlpha?: boolean | undefined;
|
|
8791
|
+
readonly presetColors?: string[] | undefined;
|
|
8792
|
+
readonly step?: number | undefined;
|
|
8793
|
+
readonly showValue?: boolean | undefined;
|
|
8794
|
+
readonly marks?: Record<string, string> | undefined;
|
|
8795
|
+
readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
|
|
8796
|
+
readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
|
|
8797
|
+
readonly displayValue?: boolean | undefined;
|
|
8798
|
+
readonly allowScanning?: boolean | undefined;
|
|
8799
|
+
readonly currencyConfig?: {
|
|
8800
|
+
precision: number;
|
|
8801
|
+
currencyMode: "fixed" | "dynamic";
|
|
8802
|
+
defaultCurrency: string;
|
|
8803
|
+
} | undefined;
|
|
8804
|
+
readonly vectorConfig?: {
|
|
8805
|
+
dimensions: number;
|
|
8806
|
+
distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
|
|
8807
|
+
normalized: boolean;
|
|
8808
|
+
indexed: boolean;
|
|
8809
|
+
indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
|
|
8810
|
+
} | undefined;
|
|
8811
|
+
readonly fileAttachmentConfig?: {
|
|
8812
|
+
virusScan: boolean;
|
|
8813
|
+
virusScanOnUpload: boolean;
|
|
8814
|
+
quarantineOnThreat: boolean;
|
|
8815
|
+
allowMultiple: boolean;
|
|
8816
|
+
allowReplace: boolean;
|
|
8817
|
+
allowDelete: boolean;
|
|
8818
|
+
requireUpload: boolean;
|
|
8819
|
+
extractMetadata: boolean;
|
|
8820
|
+
extractText: boolean;
|
|
8821
|
+
versioningEnabled: boolean;
|
|
8822
|
+
publicRead: boolean;
|
|
8823
|
+
presignedUrlExpiry: number;
|
|
8824
|
+
minSize?: number | undefined;
|
|
8825
|
+
maxSize?: number | undefined;
|
|
8826
|
+
allowedTypes?: string[] | undefined;
|
|
8827
|
+
blockedTypes?: string[] | undefined;
|
|
8828
|
+
allowedMimeTypes?: string[] | undefined;
|
|
8829
|
+
blockedMimeTypes?: string[] | undefined;
|
|
8830
|
+
virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
|
|
8831
|
+
storageProvider?: string | undefined;
|
|
8832
|
+
storageBucket?: string | undefined;
|
|
8833
|
+
storagePrefix?: string | undefined;
|
|
8834
|
+
imageValidation?: {
|
|
8835
|
+
generateThumbnails: boolean;
|
|
8836
|
+
preserveMetadata: boolean;
|
|
8837
|
+
autoRotate: boolean;
|
|
8838
|
+
minWidth?: number | undefined;
|
|
8839
|
+
maxWidth?: number | undefined;
|
|
8840
|
+
minHeight?: number | undefined;
|
|
8841
|
+
maxHeight?: number | undefined;
|
|
8842
|
+
aspectRatio?: string | undefined;
|
|
8843
|
+
thumbnailSizes?: {
|
|
8844
|
+
name: string;
|
|
8845
|
+
width: number;
|
|
8846
|
+
height: number;
|
|
8847
|
+
crop: boolean;
|
|
8848
|
+
}[] | undefined;
|
|
8849
|
+
} | undefined;
|
|
8850
|
+
maxVersions?: number | undefined;
|
|
8851
|
+
} | undefined;
|
|
8852
|
+
readonly maskingRule?: {
|
|
8853
|
+
field: string;
|
|
8854
|
+
strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
|
|
8855
|
+
preserveFormat: boolean;
|
|
8856
|
+
preserveLength: boolean;
|
|
8857
|
+
pattern?: string | undefined;
|
|
8858
|
+
roles?: string[] | undefined;
|
|
8859
|
+
exemptRoles?: string[] | undefined;
|
|
8860
|
+
} | undefined;
|
|
8861
|
+
readonly auditTrail?: boolean | undefined;
|
|
8862
|
+
readonly cached?: {
|
|
8863
|
+
enabled: boolean;
|
|
8864
|
+
ttl: number;
|
|
8865
|
+
invalidateOn: string[];
|
|
8866
|
+
} | undefined;
|
|
8867
|
+
readonly dataQuality?: {
|
|
8868
|
+
uniqueness: boolean;
|
|
8869
|
+
completeness: number;
|
|
8870
|
+
accuracy?: {
|
|
8871
|
+
source: string;
|
|
8872
|
+
threshold: number;
|
|
8873
|
+
} | undefined;
|
|
8874
|
+
} | undefined;
|
|
8875
|
+
readonly visibleWhen?: {
|
|
8876
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
8877
|
+
source?: string | undefined;
|
|
8878
|
+
ast?: unknown;
|
|
8879
|
+
meta?: {
|
|
8880
|
+
rationale?: string | undefined;
|
|
8881
|
+
generatedBy?: string | undefined;
|
|
8882
|
+
} | undefined;
|
|
8883
|
+
} | undefined;
|
|
8884
|
+
readonly readonlyWhen?: {
|
|
8885
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
8886
|
+
source?: string | undefined;
|
|
8887
|
+
ast?: unknown;
|
|
8888
|
+
meta?: {
|
|
8889
|
+
rationale?: string | undefined;
|
|
8890
|
+
generatedBy?: string | undefined;
|
|
8891
|
+
} | undefined;
|
|
8892
|
+
} | undefined;
|
|
8893
|
+
readonly requiredWhen?: {
|
|
8894
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
8895
|
+
source?: string | undefined;
|
|
8896
|
+
ast?: unknown;
|
|
8897
|
+
meta?: {
|
|
8898
|
+
rationale?: string | undefined;
|
|
8899
|
+
generatedBy?: string | undefined;
|
|
8900
|
+
} | undefined;
|
|
8901
|
+
} | undefined;
|
|
8902
|
+
readonly conditionalRequired?: {
|
|
8903
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
8904
|
+
source?: string | undefined;
|
|
8905
|
+
ast?: unknown;
|
|
8906
|
+
meta?: {
|
|
8907
|
+
rationale?: string | undefined;
|
|
8908
|
+
generatedBy?: string | undefined;
|
|
8909
|
+
} | undefined;
|
|
8910
|
+
} | undefined;
|
|
8911
|
+
readonly sortable?: boolean | undefined;
|
|
8912
|
+
readonly inlineHelpText?: string | undefined;
|
|
8913
|
+
readonly trackFeedHistory?: boolean | undefined;
|
|
8914
|
+
readonly caseSensitive?: boolean | undefined;
|
|
8915
|
+
readonly autonumberFormat?: string | undefined;
|
|
8916
|
+
readonly index?: boolean | undefined;
|
|
8917
|
+
readonly type: "lookup";
|
|
8918
|
+
};
|
|
8919
|
+
readonly approver: {
|
|
8920
|
+
readonly readonly?: boolean | undefined;
|
|
8921
|
+
readonly format?: string | undefined;
|
|
8922
|
+
readonly options?: {
|
|
8923
|
+
label: string;
|
|
8924
|
+
value: string;
|
|
8925
|
+
color?: string | undefined;
|
|
8926
|
+
default?: boolean | undefined;
|
|
8927
|
+
}[] | undefined;
|
|
8928
|
+
readonly description?: string | undefined;
|
|
8929
|
+
readonly label?: string | undefined;
|
|
8930
|
+
readonly name?: string | undefined;
|
|
8931
|
+
readonly precision?: number | undefined;
|
|
8932
|
+
readonly required?: boolean | undefined;
|
|
8933
|
+
readonly multiple?: boolean | undefined;
|
|
8934
|
+
readonly dependencies?: string[] | undefined;
|
|
8935
|
+
readonly theme?: string | undefined;
|
|
8936
|
+
readonly externalId?: boolean | undefined;
|
|
8937
|
+
readonly defaultValue?: unknown;
|
|
8938
|
+
readonly group?: string | undefined;
|
|
8939
|
+
readonly hidden?: boolean | undefined;
|
|
8940
|
+
readonly system?: boolean | undefined;
|
|
8941
|
+
readonly min?: number | undefined;
|
|
8942
|
+
readonly max?: number | undefined;
|
|
8943
|
+
readonly encryptionConfig?: {
|
|
8944
|
+
enabled: boolean;
|
|
8945
|
+
algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
|
|
8946
|
+
keyManagement: {
|
|
8947
|
+
provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
|
|
8948
|
+
keyId?: string | undefined;
|
|
8949
|
+
rotationPolicy?: {
|
|
8950
|
+
enabled: boolean;
|
|
8951
|
+
frequencyDays: number;
|
|
8952
|
+
retainOldVersions: number;
|
|
8953
|
+
autoRotate: boolean;
|
|
8954
|
+
} | undefined;
|
|
8955
|
+
};
|
|
8956
|
+
scope: "record" | "field" | "table" | "database";
|
|
8957
|
+
deterministicEncryption: boolean;
|
|
8958
|
+
searchableEncryption: boolean;
|
|
8959
|
+
} | undefined;
|
|
8960
|
+
readonly columnName?: string | undefined;
|
|
8961
|
+
readonly searchable?: boolean | undefined;
|
|
8962
|
+
readonly unique?: boolean | undefined;
|
|
8963
|
+
readonly maxLength?: number | undefined;
|
|
8964
|
+
readonly minLength?: number | undefined;
|
|
8965
|
+
readonly scale?: number | undefined;
|
|
8966
|
+
readonly reference?: string | undefined;
|
|
8967
|
+
readonly referenceFilters?: string[] | undefined;
|
|
8968
|
+
readonly writeRequiresMasterRead?: boolean | undefined;
|
|
8969
|
+
readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
|
|
8970
|
+
readonly inlineEdit?: boolean | "grid" | "form" | undefined;
|
|
8971
|
+
readonly inlineTitle?: string | undefined;
|
|
8972
|
+
readonly inlineColumns?: any[] | undefined;
|
|
8973
|
+
readonly inlineAmountField?: string | undefined;
|
|
8974
|
+
readonly relatedList?: boolean | undefined;
|
|
8975
|
+
readonly relatedListTitle?: string | undefined;
|
|
8976
|
+
readonly relatedListColumns?: any[] | undefined;
|
|
8977
|
+
readonly expression?: {
|
|
8978
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
8979
|
+
source?: string | undefined;
|
|
8980
|
+
ast?: unknown;
|
|
8981
|
+
meta?: {
|
|
8982
|
+
rationale?: string | undefined;
|
|
8983
|
+
generatedBy?: string | undefined;
|
|
8984
|
+
} | undefined;
|
|
8985
|
+
} | undefined;
|
|
8986
|
+
readonly summaryOperations?: {
|
|
8987
|
+
object: string;
|
|
8988
|
+
field: string;
|
|
8989
|
+
function: "min" | "max" | "count" | "sum" | "avg";
|
|
8990
|
+
relationshipField?: string | undefined;
|
|
8991
|
+
} | undefined;
|
|
8992
|
+
readonly language?: string | undefined;
|
|
8993
|
+
readonly lineNumbers?: boolean | undefined;
|
|
8994
|
+
readonly maxRating?: number | undefined;
|
|
8995
|
+
readonly allowHalf?: boolean | undefined;
|
|
8996
|
+
readonly displayMap?: boolean | undefined;
|
|
8997
|
+
readonly allowGeocoding?: boolean | undefined;
|
|
8998
|
+
readonly addressFormat?: "us" | "uk" | "international" | undefined;
|
|
8999
|
+
readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
|
|
9000
|
+
readonly allowAlpha?: boolean | undefined;
|
|
9001
|
+
readonly presetColors?: string[] | undefined;
|
|
9002
|
+
readonly step?: number | undefined;
|
|
9003
|
+
readonly showValue?: boolean | undefined;
|
|
9004
|
+
readonly marks?: Record<string, string> | undefined;
|
|
9005
|
+
readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
|
|
9006
|
+
readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
|
|
9007
|
+
readonly displayValue?: boolean | undefined;
|
|
9008
|
+
readonly allowScanning?: boolean | undefined;
|
|
9009
|
+
readonly currencyConfig?: {
|
|
9010
|
+
precision: number;
|
|
9011
|
+
currencyMode: "fixed" | "dynamic";
|
|
9012
|
+
defaultCurrency: string;
|
|
9013
|
+
} | undefined;
|
|
9014
|
+
readonly vectorConfig?: {
|
|
9015
|
+
dimensions: number;
|
|
9016
|
+
distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
|
|
9017
|
+
normalized: boolean;
|
|
9018
|
+
indexed: boolean;
|
|
9019
|
+
indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
|
|
9020
|
+
} | undefined;
|
|
9021
|
+
readonly fileAttachmentConfig?: {
|
|
9022
|
+
virusScan: boolean;
|
|
9023
|
+
virusScanOnUpload: boolean;
|
|
9024
|
+
quarantineOnThreat: boolean;
|
|
9025
|
+
allowMultiple: boolean;
|
|
9026
|
+
allowReplace: boolean;
|
|
9027
|
+
allowDelete: boolean;
|
|
9028
|
+
requireUpload: boolean;
|
|
9029
|
+
extractMetadata: boolean;
|
|
9030
|
+
extractText: boolean;
|
|
9031
|
+
versioningEnabled: boolean;
|
|
9032
|
+
publicRead: boolean;
|
|
9033
|
+
presignedUrlExpiry: number;
|
|
9034
|
+
minSize?: number | undefined;
|
|
9035
|
+
maxSize?: number | undefined;
|
|
9036
|
+
allowedTypes?: string[] | undefined;
|
|
9037
|
+
blockedTypes?: string[] | undefined;
|
|
9038
|
+
allowedMimeTypes?: string[] | undefined;
|
|
9039
|
+
blockedMimeTypes?: string[] | undefined;
|
|
9040
|
+
virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
|
|
9041
|
+
storageProvider?: string | undefined;
|
|
9042
|
+
storageBucket?: string | undefined;
|
|
9043
|
+
storagePrefix?: string | undefined;
|
|
9044
|
+
imageValidation?: {
|
|
9045
|
+
generateThumbnails: boolean;
|
|
9046
|
+
preserveMetadata: boolean;
|
|
9047
|
+
autoRotate: boolean;
|
|
9048
|
+
minWidth?: number | undefined;
|
|
9049
|
+
maxWidth?: number | undefined;
|
|
9050
|
+
minHeight?: number | undefined;
|
|
9051
|
+
maxHeight?: number | undefined;
|
|
9052
|
+
aspectRatio?: string | undefined;
|
|
9053
|
+
thumbnailSizes?: {
|
|
9054
|
+
name: string;
|
|
9055
|
+
width: number;
|
|
9056
|
+
height: number;
|
|
9057
|
+
crop: boolean;
|
|
9058
|
+
}[] | undefined;
|
|
9059
|
+
} | undefined;
|
|
9060
|
+
maxVersions?: number | undefined;
|
|
9061
|
+
} | undefined;
|
|
9062
|
+
readonly maskingRule?: {
|
|
9063
|
+
field: string;
|
|
9064
|
+
strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
|
|
9065
|
+
preserveFormat: boolean;
|
|
9066
|
+
preserveLength: boolean;
|
|
9067
|
+
pattern?: string | undefined;
|
|
9068
|
+
roles?: string[] | undefined;
|
|
9069
|
+
exemptRoles?: string[] | undefined;
|
|
9070
|
+
} | undefined;
|
|
9071
|
+
readonly auditTrail?: boolean | undefined;
|
|
9072
|
+
readonly cached?: {
|
|
9073
|
+
enabled: boolean;
|
|
9074
|
+
ttl: number;
|
|
9075
|
+
invalidateOn: string[];
|
|
9076
|
+
} | undefined;
|
|
9077
|
+
readonly dataQuality?: {
|
|
9078
|
+
uniqueness: boolean;
|
|
9079
|
+
completeness: number;
|
|
9080
|
+
accuracy?: {
|
|
9081
|
+
source: string;
|
|
9082
|
+
threshold: number;
|
|
9083
|
+
} | undefined;
|
|
9084
|
+
} | undefined;
|
|
9085
|
+
readonly visibleWhen?: {
|
|
9086
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
9087
|
+
source?: string | undefined;
|
|
9088
|
+
ast?: unknown;
|
|
9089
|
+
meta?: {
|
|
9090
|
+
rationale?: string | undefined;
|
|
9091
|
+
generatedBy?: string | undefined;
|
|
9092
|
+
} | undefined;
|
|
9093
|
+
} | undefined;
|
|
9094
|
+
readonly readonlyWhen?: {
|
|
9095
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
9096
|
+
source?: string | undefined;
|
|
9097
|
+
ast?: unknown;
|
|
9098
|
+
meta?: {
|
|
9099
|
+
rationale?: string | undefined;
|
|
9100
|
+
generatedBy?: string | undefined;
|
|
9101
|
+
} | undefined;
|
|
9102
|
+
} | undefined;
|
|
9103
|
+
readonly requiredWhen?: {
|
|
9104
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
9105
|
+
source?: string | undefined;
|
|
9106
|
+
ast?: unknown;
|
|
9107
|
+
meta?: {
|
|
9108
|
+
rationale?: string | undefined;
|
|
9109
|
+
generatedBy?: string | undefined;
|
|
9110
|
+
} | undefined;
|
|
9111
|
+
} | undefined;
|
|
9112
|
+
readonly conditionalRequired?: {
|
|
9113
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
9114
|
+
source?: string | undefined;
|
|
9115
|
+
ast?: unknown;
|
|
9116
|
+
meta?: {
|
|
9117
|
+
rationale?: string | undefined;
|
|
9118
|
+
generatedBy?: string | undefined;
|
|
9119
|
+
} | undefined;
|
|
9120
|
+
} | undefined;
|
|
9121
|
+
readonly sortable?: boolean | undefined;
|
|
9122
|
+
readonly inlineHelpText?: string | undefined;
|
|
9123
|
+
readonly trackFeedHistory?: boolean | undefined;
|
|
9124
|
+
readonly caseSensitive?: boolean | undefined;
|
|
9125
|
+
readonly autonumberFormat?: string | undefined;
|
|
9126
|
+
readonly index?: boolean | undefined;
|
|
9127
|
+
readonly type: "text";
|
|
9128
|
+
};
|
|
9129
|
+
readonly created_at: {
|
|
9130
|
+
readonly readonly?: boolean | undefined;
|
|
9131
|
+
readonly format?: string | undefined;
|
|
9132
|
+
readonly options?: {
|
|
9133
|
+
label: string;
|
|
9134
|
+
value: string;
|
|
9135
|
+
color?: string | undefined;
|
|
9136
|
+
default?: boolean | undefined;
|
|
9137
|
+
}[] | undefined;
|
|
9138
|
+
readonly description?: string | undefined;
|
|
9139
|
+
readonly label?: string | undefined;
|
|
9140
|
+
readonly name?: string | undefined;
|
|
9141
|
+
readonly precision?: number | undefined;
|
|
9142
|
+
readonly required?: boolean | undefined;
|
|
9143
|
+
readonly multiple?: boolean | undefined;
|
|
9144
|
+
readonly dependencies?: string[] | undefined;
|
|
9145
|
+
readonly theme?: string | undefined;
|
|
9146
|
+
readonly externalId?: boolean | undefined;
|
|
9147
|
+
readonly defaultValue?: unknown;
|
|
9148
|
+
readonly group?: string | undefined;
|
|
9149
|
+
readonly hidden?: boolean | undefined;
|
|
9150
|
+
readonly system?: boolean | undefined;
|
|
9151
|
+
readonly min?: number | undefined;
|
|
9152
|
+
readonly max?: number | undefined;
|
|
9153
|
+
readonly encryptionConfig?: {
|
|
9154
|
+
enabled: boolean;
|
|
9155
|
+
algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
|
|
9156
|
+
keyManagement: {
|
|
9157
|
+
provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
|
|
9158
|
+
keyId?: string | undefined;
|
|
9159
|
+
rotationPolicy?: {
|
|
9160
|
+
enabled: boolean;
|
|
9161
|
+
frequencyDays: number;
|
|
9162
|
+
retainOldVersions: number;
|
|
9163
|
+
autoRotate: boolean;
|
|
9164
|
+
} | undefined;
|
|
9165
|
+
};
|
|
9166
|
+
scope: "record" | "field" | "table" | "database";
|
|
9167
|
+
deterministicEncryption: boolean;
|
|
9168
|
+
searchableEncryption: boolean;
|
|
9169
|
+
} | undefined;
|
|
9170
|
+
readonly columnName?: string | undefined;
|
|
9171
|
+
readonly searchable?: boolean | undefined;
|
|
9172
|
+
readonly unique?: boolean | undefined;
|
|
9173
|
+
readonly maxLength?: number | undefined;
|
|
9174
|
+
readonly minLength?: number | undefined;
|
|
9175
|
+
readonly scale?: number | undefined;
|
|
9176
|
+
readonly reference?: string | undefined;
|
|
9177
|
+
readonly referenceFilters?: string[] | undefined;
|
|
9178
|
+
readonly writeRequiresMasterRead?: boolean | undefined;
|
|
9179
|
+
readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
|
|
9180
|
+
readonly inlineEdit?: boolean | "grid" | "form" | undefined;
|
|
9181
|
+
readonly inlineTitle?: string | undefined;
|
|
9182
|
+
readonly inlineColumns?: any[] | undefined;
|
|
9183
|
+
readonly inlineAmountField?: string | undefined;
|
|
9184
|
+
readonly relatedList?: boolean | undefined;
|
|
9185
|
+
readonly relatedListTitle?: string | undefined;
|
|
9186
|
+
readonly relatedListColumns?: any[] | undefined;
|
|
9187
|
+
readonly expression?: {
|
|
9188
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
9189
|
+
source?: string | undefined;
|
|
9190
|
+
ast?: unknown;
|
|
9191
|
+
meta?: {
|
|
9192
|
+
rationale?: string | undefined;
|
|
9193
|
+
generatedBy?: string | undefined;
|
|
9194
|
+
} | undefined;
|
|
9195
|
+
} | undefined;
|
|
9196
|
+
readonly summaryOperations?: {
|
|
9197
|
+
object: string;
|
|
9198
|
+
field: string;
|
|
9199
|
+
function: "min" | "max" | "count" | "sum" | "avg";
|
|
9200
|
+
relationshipField?: string | undefined;
|
|
9201
|
+
} | undefined;
|
|
9202
|
+
readonly language?: string | undefined;
|
|
9203
|
+
readonly lineNumbers?: boolean | undefined;
|
|
9204
|
+
readonly maxRating?: number | undefined;
|
|
9205
|
+
readonly allowHalf?: boolean | undefined;
|
|
9206
|
+
readonly displayMap?: boolean | undefined;
|
|
9207
|
+
readonly allowGeocoding?: boolean | undefined;
|
|
9208
|
+
readonly addressFormat?: "us" | "uk" | "international" | undefined;
|
|
9209
|
+
readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
|
|
9210
|
+
readonly allowAlpha?: boolean | undefined;
|
|
9211
|
+
readonly presetColors?: string[] | undefined;
|
|
9212
|
+
readonly step?: number | undefined;
|
|
9213
|
+
readonly showValue?: boolean | undefined;
|
|
9214
|
+
readonly marks?: Record<string, string> | undefined;
|
|
9215
|
+
readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
|
|
9216
|
+
readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
|
|
9217
|
+
readonly displayValue?: boolean | undefined;
|
|
9218
|
+
readonly allowScanning?: boolean | undefined;
|
|
9219
|
+
readonly currencyConfig?: {
|
|
9220
|
+
precision: number;
|
|
9221
|
+
currencyMode: "fixed" | "dynamic";
|
|
9222
|
+
defaultCurrency: string;
|
|
9223
|
+
} | undefined;
|
|
9224
|
+
readonly vectorConfig?: {
|
|
9225
|
+
dimensions: number;
|
|
9226
|
+
distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
|
|
9227
|
+
normalized: boolean;
|
|
9228
|
+
indexed: boolean;
|
|
9229
|
+
indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
|
|
9230
|
+
} | undefined;
|
|
9231
|
+
readonly fileAttachmentConfig?: {
|
|
9232
|
+
virusScan: boolean;
|
|
9233
|
+
virusScanOnUpload: boolean;
|
|
9234
|
+
quarantineOnThreat: boolean;
|
|
9235
|
+
allowMultiple: boolean;
|
|
9236
|
+
allowReplace: boolean;
|
|
9237
|
+
allowDelete: boolean;
|
|
9238
|
+
requireUpload: boolean;
|
|
9239
|
+
extractMetadata: boolean;
|
|
9240
|
+
extractText: boolean;
|
|
9241
|
+
versioningEnabled: boolean;
|
|
9242
|
+
publicRead: boolean;
|
|
9243
|
+
presignedUrlExpiry: number;
|
|
9244
|
+
minSize?: number | undefined;
|
|
9245
|
+
maxSize?: number | undefined;
|
|
9246
|
+
allowedTypes?: string[] | undefined;
|
|
9247
|
+
blockedTypes?: string[] | undefined;
|
|
9248
|
+
allowedMimeTypes?: string[] | undefined;
|
|
9249
|
+
blockedMimeTypes?: string[] | undefined;
|
|
9250
|
+
virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
|
|
9251
|
+
storageProvider?: string | undefined;
|
|
9252
|
+
storageBucket?: string | undefined;
|
|
9253
|
+
storagePrefix?: string | undefined;
|
|
9254
|
+
imageValidation?: {
|
|
9255
|
+
generateThumbnails: boolean;
|
|
9256
|
+
preserveMetadata: boolean;
|
|
9257
|
+
autoRotate: boolean;
|
|
9258
|
+
minWidth?: number | undefined;
|
|
9259
|
+
maxWidth?: number | undefined;
|
|
9260
|
+
minHeight?: number | undefined;
|
|
9261
|
+
maxHeight?: number | undefined;
|
|
9262
|
+
aspectRatio?: string | undefined;
|
|
9263
|
+
thumbnailSizes?: {
|
|
9264
|
+
name: string;
|
|
9265
|
+
width: number;
|
|
9266
|
+
height: number;
|
|
9267
|
+
crop: boolean;
|
|
9268
|
+
}[] | undefined;
|
|
9269
|
+
} | undefined;
|
|
9270
|
+
maxVersions?: number | undefined;
|
|
9271
|
+
} | undefined;
|
|
9272
|
+
readonly maskingRule?: {
|
|
9273
|
+
field: string;
|
|
9274
|
+
strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
|
|
9275
|
+
preserveFormat: boolean;
|
|
9276
|
+
preserveLength: boolean;
|
|
9277
|
+
pattern?: string | undefined;
|
|
9278
|
+
roles?: string[] | undefined;
|
|
9279
|
+
exemptRoles?: string[] | undefined;
|
|
9280
|
+
} | undefined;
|
|
9281
|
+
readonly auditTrail?: boolean | undefined;
|
|
9282
|
+
readonly cached?: {
|
|
9283
|
+
enabled: boolean;
|
|
9284
|
+
ttl: number;
|
|
9285
|
+
invalidateOn: string[];
|
|
9286
|
+
} | undefined;
|
|
9287
|
+
readonly dataQuality?: {
|
|
9288
|
+
uniqueness: boolean;
|
|
9289
|
+
completeness: number;
|
|
9290
|
+
accuracy?: {
|
|
9291
|
+
source: string;
|
|
9292
|
+
threshold: number;
|
|
9293
|
+
} | undefined;
|
|
9294
|
+
} | undefined;
|
|
9295
|
+
readonly visibleWhen?: {
|
|
9296
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
9297
|
+
source?: string | undefined;
|
|
9298
|
+
ast?: unknown;
|
|
9299
|
+
meta?: {
|
|
9300
|
+
rationale?: string | undefined;
|
|
9301
|
+
generatedBy?: string | undefined;
|
|
9302
|
+
} | undefined;
|
|
9303
|
+
} | undefined;
|
|
9304
|
+
readonly readonlyWhen?: {
|
|
9305
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
9306
|
+
source?: string | undefined;
|
|
9307
|
+
ast?: unknown;
|
|
9308
|
+
meta?: {
|
|
9309
|
+
rationale?: string | undefined;
|
|
9310
|
+
generatedBy?: string | undefined;
|
|
9311
|
+
} | undefined;
|
|
9312
|
+
} | undefined;
|
|
9313
|
+
readonly requiredWhen?: {
|
|
9314
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
9315
|
+
source?: string | undefined;
|
|
9316
|
+
ast?: unknown;
|
|
9317
|
+
meta?: {
|
|
9318
|
+
rationale?: string | undefined;
|
|
9319
|
+
generatedBy?: string | undefined;
|
|
9320
|
+
} | undefined;
|
|
9321
|
+
} | undefined;
|
|
9322
|
+
readonly conditionalRequired?: {
|
|
9323
|
+
dialect: "cel" | "js" | "cron" | "template";
|
|
9324
|
+
source?: string | undefined;
|
|
9325
|
+
ast?: unknown;
|
|
9326
|
+
meta?: {
|
|
9327
|
+
rationale?: string | undefined;
|
|
9328
|
+
generatedBy?: string | undefined;
|
|
9329
|
+
} | undefined;
|
|
9330
|
+
} | undefined;
|
|
9331
|
+
readonly sortable?: boolean | undefined;
|
|
9332
|
+
readonly inlineHelpText?: string | undefined;
|
|
9333
|
+
readonly trackFeedHistory?: boolean | undefined;
|
|
9334
|
+
readonly caseSensitive?: boolean | undefined;
|
|
9335
|
+
readonly autonumberFormat?: string | undefined;
|
|
9336
|
+
readonly index?: boolean | undefined;
|
|
9337
|
+
readonly type: "datetime";
|
|
9338
|
+
};
|
|
9339
|
+
};
|
|
9340
|
+
readonly indexes: [{
|
|
9341
|
+
readonly fields: ["approver", "organization_id"];
|
|
9342
|
+
}, {
|
|
9343
|
+
readonly fields: ["request_id"];
|
|
9344
|
+
}];
|
|
9345
|
+
}, "fields">;
|
|
9346
|
+
|
|
9347
|
+
/**
|
|
9348
|
+
* Node-era approval runtime (ADR-0019).
|
|
9349
|
+
*
|
|
9350
|
+
* Approval is no longer a standalone engine — it is a **flow node**. A flow's
|
|
9351
|
+
* Approval node opens a request via {@link ApprovalService.openNodeRequest} and
|
|
9352
|
+
* the run suspends; a human decision via {@link ApprovalService.decide}
|
|
9353
|
+
* finalises the request and resumes the owning run down the matching
|
|
9354
|
+
* `approve` / `reject` edge.
|
|
9355
|
+
*
|
|
9356
|
+
* This service owns the durable approval *state* — `sys_approval_request` /
|
|
9357
|
+
* `sys_approval_action`, approver resolution (team / department / role /
|
|
9358
|
+
* manager graph), and the optional status-field mirror — plus the decision
|
|
9359
|
+
* API. It does not author processes, submit, or walk multi-step machinery
|
|
9360
|
+
* anymore; that orchestration lives on the one automation engine.
|
|
9361
|
+
*/
|
|
9362
|
+
interface ApprovalEngine {
|
|
9363
|
+
find(object: string, options?: any): Promise<any[]>;
|
|
9364
|
+
insert(object: string, data: any, options?: any): Promise<any>;
|
|
9365
|
+
update(object: string, idOrData: any, dataOrOptions?: any, options?: any): Promise<any>;
|
|
9366
|
+
delete(object: string, options?: any): Promise<any>;
|
|
9367
|
+
}
|
|
9368
|
+
interface ApprovalClock {
|
|
9369
|
+
now(): Date;
|
|
9370
|
+
}
|
|
9371
|
+
/**
|
|
9372
|
+
* Minimal automation surface the service uses to resume a suspended flow run
|
|
9373
|
+
* once a decision finalises a node-driven request. Optional — attached by the
|
|
9374
|
+
* plugin when an automation engine is present (see `approval-node.ts`).
|
|
9375
|
+
*/
|
|
9376
|
+
interface ApprovalResumeSurface {
|
|
9377
|
+
resume?(runId: string, signal?: {
|
|
9378
|
+
output?: Record<string, unknown>;
|
|
9379
|
+
branchLabel?: string;
|
|
9380
|
+
}): Promise<unknown>;
|
|
9381
|
+
/** Flow definition lookup, used to derive step-progress display data. */
|
|
9382
|
+
getFlow?(name: string): Promise<any | null>;
|
|
9383
|
+
/**
|
|
9384
|
+
* Terminally cancel a suspended run (ADR-0044). Used when a recall lands
|
|
9385
|
+
* during a revision window — the run is paused at the revise wait node,
|
|
9386
|
+
* which has no reject edge to resume down.
|
|
9387
|
+
*/
|
|
9388
|
+
cancelRun?(runId: string, reason?: string): Promise<unknown>;
|
|
9389
|
+
}
|
|
9390
|
+
/**
|
|
9391
|
+
* Optional messaging surface (ADR-0012 `messaging` service). When attached,
|
|
9392
|
+
* thread interactions (reassign / remind / request-info / comment) notify the
|
|
9393
|
+
* affected users; without it they degrade to audit-only.
|
|
9394
|
+
*/
|
|
9395
|
+
interface ApprovalMessagingSurface {
|
|
9396
|
+
emit(input: {
|
|
9397
|
+
topic: string;
|
|
9398
|
+
audience: string[];
|
|
9399
|
+
payload?: Record<string, unknown>;
|
|
9400
|
+
severity?: string;
|
|
9401
|
+
dedupKey?: string;
|
|
9402
|
+
source?: {
|
|
9403
|
+
object: string;
|
|
9404
|
+
id: string;
|
|
9405
|
+
};
|
|
9406
|
+
actorId?: string;
|
|
9407
|
+
}): Promise<unknown>;
|
|
9408
|
+
}
|
|
9409
|
+
/** Outcome of redeeming (or peeking) an actionable-link token. */
|
|
9410
|
+
type ActionTokenOutcome = {
|
|
9411
|
+
ok: true;
|
|
9412
|
+
action: 'approve' | 'reject';
|
|
9413
|
+
request: ApprovalRequestRow;
|
|
9414
|
+
approverId: string;
|
|
9415
|
+
} | {
|
|
9416
|
+
ok: false;
|
|
9417
|
+
reason: 'invalid' | 'expired' | 'consumed' | 'not_pending' | 'not_approver';
|
|
9418
|
+
request?: ApprovalRequestRow;
|
|
9419
|
+
};
|
|
9420
|
+
interface ApprovalServiceOptions {
|
|
9421
|
+
engine: ApprovalEngine;
|
|
9422
|
+
clock?: ApprovalClock;
|
|
9423
|
+
logger?: {
|
|
9424
|
+
info?: (msg: any, ...rest: any[]) => void;
|
|
9425
|
+
warn?: (msg: any, ...rest: any[]) => void;
|
|
9426
|
+
error?: (msg: any, ...rest: any[]) => void;
|
|
9427
|
+
debug?: (msg: any, ...rest: any[]) => void;
|
|
9428
|
+
};
|
|
9429
|
+
/**
|
|
9430
|
+
* Optional automation surface used to resume a suspended flow run when a
|
|
9431
|
+
* decision finalises a request. Usually attached after construction via
|
|
9432
|
+
* {@link ApprovalService.attachAutomation} once the automation engine is
|
|
9433
|
+
* available.
|
|
9434
|
+
*/
|
|
9435
|
+
automation?: ApprovalResumeSurface;
|
|
9436
|
+
/** Optional messaging service for thread notifications. */
|
|
9437
|
+
messaging?: ApprovalMessagingSurface;
|
|
9438
|
+
/**
|
|
9439
|
+
* Absolute origin prefixed onto actionable links (ADR-0043), e.g.
|
|
9440
|
+
* `https://app.example.com`. Defaults to relative URLs, which work inside
|
|
9441
|
+
* the Console and IM webviews; outbound email needs the absolute form.
|
|
9442
|
+
*/
|
|
9443
|
+
publicBaseUrl?: string;
|
|
9444
|
+
}
|
|
9445
|
+
declare class ApprovalService implements IApprovalService {
|
|
9446
|
+
private readonly engine;
|
|
9447
|
+
private readonly clock;
|
|
9448
|
+
private readonly logger?;
|
|
9449
|
+
private automation?;
|
|
9450
|
+
private messaging?;
|
|
9451
|
+
private publicBaseUrl;
|
|
9452
|
+
constructor(opts: ApprovalServiceOptions);
|
|
9453
|
+
/** Attach (or replace) the automation surface used to resume flow runs. */
|
|
9454
|
+
attachAutomation(automation: ApprovalResumeSurface): void;
|
|
9455
|
+
/** Attach (or replace) the messaging surface used for thread notifications. */
|
|
9456
|
+
attachMessaging(messaging: ApprovalMessagingSurface): void;
|
|
9457
|
+
/** Best-effort notification fan-out — failures only log. */
|
|
9458
|
+
private notify;
|
|
9459
|
+
/** Load a request row and assert it is still pending. */
|
|
9460
|
+
private loadPendingRow;
|
|
9461
|
+
/**
|
|
9462
|
+
* Expand the approvers on an Approval node into user IDs by querying the
|
|
9463
|
+
* graph tables for `team:` / `department:` / `role:` / `manager:` approver
|
|
9464
|
+
* types. Falls back to a prefixed literal (`type:value`) when graph lookups
|
|
9465
|
+
* produce nothing — so existing fixtures and flows that rely on substring
|
|
9466
|
+
* matching keep working.
|
|
9467
|
+
*
|
|
9468
|
+
* **Graph semantics:**
|
|
9469
|
+
* - `team` → flat members of `sys_team` (better-auth; no BFS)
|
|
9470
|
+
* - `department` → recursive BFS of `sys_department.parent_department_id`
|
|
9471
|
+
* → members of every descendant via `sys_department_member`
|
|
9472
|
+
* - `role` → users with `sys_member.role = value` in tenant
|
|
9473
|
+
* - `manager` → `sys_user.manager_id` of `record[value] ?? record.owner_id`
|
|
9474
|
+
* - `field` → literal user id stored in `record[value]`
|
|
9475
|
+
* - `user` → literal value
|
|
9476
|
+
*/
|
|
9477
|
+
private expandApprovers;
|
|
9478
|
+
/** Flat team — `sys_team` is better-auth's collaboration grouping (no hierarchy). */
|
|
9479
|
+
private expandTeamUsers;
|
|
9480
|
+
/** Recursive department — walks `sys_department.parent_department_id`. */
|
|
9481
|
+
private expandDepartmentUsers;
|
|
9482
|
+
private expandRoleUsers;
|
|
9483
|
+
private lookupManager;
|
|
9484
|
+
/** Mirror a request status onto a business-object field, if configured. */
|
|
9485
|
+
private mirrorStatusField;
|
|
9486
|
+
/**
|
|
9487
|
+
* Open a pending approval request on behalf of a flow's Approval node. The
|
|
9488
|
+
* node config (approvers / behavior / status field) is snapshotted on the row
|
|
9489
|
+
* so a decision can be made without any process to resolve against.
|
|
9490
|
+
*/
|
|
9491
|
+
openNodeRequest(input: {
|
|
9492
|
+
object: string;
|
|
9493
|
+
recordId: string;
|
|
9494
|
+
runId: string;
|
|
9495
|
+
nodeId: string;
|
|
9496
|
+
config: ApprovalNodeConfig;
|
|
9497
|
+
flowName?: string;
|
|
9498
|
+
/** Authored flow label, snapshotted for inbox display. */
|
|
9499
|
+
flowLabel?: string;
|
|
9500
|
+
/** Authored node label, snapshotted for inbox display. */
|
|
9501
|
+
nodeLabel?: string;
|
|
9502
|
+
submitterId?: string | null;
|
|
9503
|
+
record?: any;
|
|
9504
|
+
organizationId?: string | null;
|
|
9505
|
+
}, context: SharingExecutionContext): Promise<ApprovalRequestRow>;
|
|
9506
|
+
/**
|
|
9507
|
+
* Record a decision on a node-driven request. Honours the node's `unanimous`
|
|
9508
|
+
* behavior (holds until every approver has approved). When the request
|
|
9509
|
+
* finalizes, returns the suspended run id + node id so the caller (or
|
|
9510
|
+
* {@link ApprovalService.decide}) can resume the flow down the matching
|
|
9511
|
+
* branch.
|
|
9512
|
+
*/
|
|
9513
|
+
decideNode(requestId: string, input: {
|
|
9514
|
+
decision: 'approve' | 'reject';
|
|
9515
|
+
actorId: string;
|
|
9516
|
+
comment?: string;
|
|
9517
|
+
}, context: SharingExecutionContext): Promise<{
|
|
9518
|
+
request: ApprovalRequestRow;
|
|
9519
|
+
runId: string | null;
|
|
9520
|
+
nodeId: string | null;
|
|
9521
|
+
finalized: boolean;
|
|
9522
|
+
decision: 'approve' | 'reject';
|
|
9523
|
+
}>;
|
|
9524
|
+
/**
|
|
9525
|
+
* Public contract entrypoint (ADR-0019). Records a decision on a node-driven
|
|
9526
|
+
* request via {@link ApprovalService.decideNode} and, when it finalizes,
|
|
9527
|
+
* resumes the owning flow run down the matching `approve` / `reject` edge.
|
|
9528
|
+
*/
|
|
9529
|
+
decide(requestId: string, input: ApprovalDecisionInput, context: SharingExecutionContext): Promise<ApprovalDecisionResult>;
|
|
9530
|
+
/**
|
|
9531
|
+
* Withdraw a pending request (submitter only). Finalises the row as
|
|
9532
|
+
* `recalled`, releases the record lock (keyed on pending status), mirrors
|
|
9533
|
+
* the status field when configured, and resumes the owning flow run down
|
|
9534
|
+
* the `reject` branch with `output.decision = 'recall'` — leaving the run
|
|
9535
|
+
* suspended forever would leak it.
|
|
9536
|
+
*
|
|
9537
|
+
* ADR-0044: also valid on the LATEST `returned` request of its run — the
|
|
9538
|
+
* submitter abandons the revision window instead of resubmitting. The run
|
|
9539
|
+
* is then paused at the revise wait node (no reject edge), so it is
|
|
9540
|
+
* terminally cancelled via {@link ApprovalResumeSurface.cancelRun} rather
|
|
9541
|
+
* than resumed.
|
|
9542
|
+
*/
|
|
9543
|
+
recall(requestId: string, input: ApprovalRecallInput, context: SharingExecutionContext): Promise<ApprovalRecallResult>;
|
|
9544
|
+
/**
|
|
9545
|
+
* ADR-0044 send back for revision. Finalises the pending request as
|
|
9546
|
+
* `returned` (a third terminal state — approver-initiated rework, distinct
|
|
9547
|
+
* from submitter-initiated `recalled`) and resumes the owning flow run down
|
|
9548
|
+
* its `revise` edge to a wait point: the record lock (keyed on `pending`)
|
|
9549
|
+
* releases, the submitter reworks the data, then {@link resubmit}s.
|
|
9550
|
+
*
|
|
9551
|
+
* Requires the approval node to declare a `revise` out-edge — validated
|
|
9552
|
+
* BEFORE any mutation, because resuming with an unmatched `branchLabel`
|
|
9553
|
+
* falls back to *all* out-edges. Past the node's `maxRevisions` budget the
|
|
9554
|
+
* request auto-rejects instead (resumes down `reject` with
|
|
9555
|
+
* `output.autoRejected = true`) so instances cannot orbit forever.
|
|
9556
|
+
*/
|
|
9557
|
+
sendBack(requestId: string, input: ApprovalSendBackInput, context: SharingExecutionContext): Promise<ApprovalSendBackResult>;
|
|
9558
|
+
/**
|
|
9559
|
+
* ADR-0044 resubmit after rework. Valid on the LATEST `returned` request of
|
|
9560
|
+
* its run, submitter-only. Audits `resubmit` on the returned (round-N)
|
|
9561
|
+
* request and resumes the run from the revise wait node; traversal walks
|
|
9562
|
+
* the declared back-edge into the approval node, whose executor opens the
|
|
9563
|
+
* round-N+1 request — fresh approver slate, record re-locks.
|
|
9564
|
+
*/
|
|
9565
|
+
resubmit(requestId: string, input: ApprovalResubmitInput, context: SharingExecutionContext): Promise<ApprovalResubmitResult>;
|
|
9566
|
+
/**
|
|
9567
|
+
* ADR-0044 guard: the flow's approval node must declare a `revise`
|
|
9568
|
+
* out-edge before send-back is allowed — the engine's branch-label fallback
|
|
9569
|
+
* (no matching label ⇒ ALL out-edges) must never be reachable from a user
|
|
9570
|
+
* action.
|
|
9571
|
+
*/
|
|
9572
|
+
private assertReviseEdge;
|
|
9573
|
+
/**
|
|
9574
|
+
* ADR-0044 guard: a `returned` request is only actionable (resubmit /
|
|
9575
|
+
* recall) while it is still the newest request on its run — a later round
|
|
9576
|
+
* or a later node's request supersedes it.
|
|
9577
|
+
*/
|
|
9578
|
+
private assertLatestForRun;
|
|
9579
|
+
/**
|
|
9580
|
+
* Hand a pending-approver slot to someone else. `from` defaults to the
|
|
9581
|
+
* actor itself; the actor must hold the slot being handed over (or be a
|
|
9582
|
+
* system caller). Audits `reassign` and notifies the new approver.
|
|
9583
|
+
*/
|
|
9584
|
+
reassign(requestId: string, input: {
|
|
9585
|
+
actorId: string;
|
|
9586
|
+
to: string;
|
|
9587
|
+
from?: string;
|
|
9588
|
+
comment?: string;
|
|
9589
|
+
}, context: SharingExecutionContext): Promise<{
|
|
9590
|
+
request: ApprovalRequestRow;
|
|
9591
|
+
}>;
|
|
9592
|
+
/**
|
|
9593
|
+
* Submitter nudge — notify every pending approver. Throttled to one
|
|
9594
|
+
* reminder per {@link REMIND_COOLDOWN_MS} per request.
|
|
9595
|
+
*/
|
|
9596
|
+
remind(requestId: string, input: {
|
|
9597
|
+
actorId: string;
|
|
9598
|
+
comment?: string;
|
|
9599
|
+
}, context: SharingExecutionContext): Promise<{
|
|
9600
|
+
request: ApprovalRequestRow;
|
|
9601
|
+
notified: number;
|
|
9602
|
+
}>;
|
|
9603
|
+
/** Build the session-less confirm-page URL for a raw token. */
|
|
9604
|
+
actionLinkUrl(rawToken: string): string;
|
|
9605
|
+
/**
|
|
9606
|
+
* Issue one-tap approve/reject tokens for one approver on one pending
|
|
9607
|
+
* request. Raw tokens are returned ONCE; only SHA-256 hashes are stored
|
|
9608
|
+
* (`sys_approval_token`), so a DB leak yields no usable links.
|
|
9609
|
+
*/
|
|
9610
|
+
issueActionTokens(requestId: string, approverId: string, opts?: {
|
|
9611
|
+
ttlMs?: number;
|
|
9612
|
+
}): Promise<{
|
|
9613
|
+
approve: string;
|
|
9614
|
+
reject: string;
|
|
9615
|
+
}>;
|
|
9616
|
+
/** Shared validation chain for peek/redeem. Returns the token row when live. */
|
|
9617
|
+
private resolveActionToken;
|
|
9618
|
+
/** GET confirm page: validate WITHOUT consuming — never mutates. */
|
|
9619
|
+
peekActionToken(rawToken: string): Promise<ActionTokenOutcome>;
|
|
9620
|
+
/**
|
|
9621
|
+
* POST redemption: consume the token FIRST (a failed decide still burns
|
|
9622
|
+
* it — replay-safe), then decide as the bound approver.
|
|
9623
|
+
*/
|
|
9624
|
+
redeemActionToken(rawToken: string): Promise<ActionTokenOutcome>;
|
|
9625
|
+
/**
|
|
9626
|
+
* Approver asks the submitter for more information. The request stays
|
|
9627
|
+
* pending — a thread interaction, not a flow decision.
|
|
9628
|
+
*/
|
|
9629
|
+
requestInfo(requestId: string, input: {
|
|
9630
|
+
actorId: string;
|
|
9631
|
+
comment: string;
|
|
9632
|
+
}, context: SharingExecutionContext): Promise<{
|
|
9633
|
+
request: ApprovalRequestRow;
|
|
9634
|
+
}>;
|
|
9635
|
+
/** Free-form reply on the thread (submitter or any pending approver). */
|
|
9636
|
+
comment(requestId: string, input: {
|
|
9637
|
+
actorId: string;
|
|
9638
|
+
comment: string;
|
|
9639
|
+
}, context: SharingExecutionContext): Promise<{
|
|
9640
|
+
request: ApprovalRequestRow;
|
|
9641
|
+
}>;
|
|
9642
|
+
/**
|
|
9643
|
+
* One escalation sweep: every *pending* request whose node config declares
|
|
9644
|
+
* `escalation.timeoutHours` and whose deadline has passed is escalated
|
|
9645
|
+
* **at most once, ever** — the `escalate` audit row is the idempotency
|
|
9646
|
+
* marker, written before any mutation (audit-first, like reassign). One
|
|
9647
|
+
* bad row never stops the sweep.
|
|
9648
|
+
*/
|
|
9649
|
+
runEscalations(): Promise<{
|
|
9650
|
+
scanned: number;
|
|
9651
|
+
escalated: number;
|
|
9652
|
+
}>;
|
|
9653
|
+
/** Execute the configured escalation action for one overdue request. */
|
|
9654
|
+
private escalateRequest;
|
|
9655
|
+
/**
|
|
9656
|
+
* Resolve the schema-declared display field for an object, when the engine
|
|
9657
|
+
* exposes schema metadata (`getSchema`). Falls back to common title-ish
|
|
9658
|
+
* field names so plain `ApprovalEngine` fakes still enrich sensibly.
|
|
9659
|
+
*/
|
|
9660
|
+
private resolveDisplayField;
|
|
9661
|
+
private static pickTitle;
|
|
9662
|
+
/**
|
|
9663
|
+
* Batch-resolve `sys_user` display names for identifiers that may be user
|
|
9664
|
+
* ids or emails. Best-effort — failures leave entries unresolved.
|
|
9665
|
+
*/
|
|
9666
|
+
private resolveUserNames;
|
|
9667
|
+
/** Lookup-typed fields (key + referenced object) of an object's schema. */
|
|
9668
|
+
private resolveLookupFields;
|
|
9669
|
+
/**
|
|
9670
|
+
* Attach inbox display fields to rows so clients never render a raw
|
|
9671
|
+
* identifier: `record_title`, `submitter_name`, `object_label`,
|
|
9672
|
+
* `pending_approver_names` (user-id approvers), and `payload_display`
|
|
9673
|
+
* (lookup foreign keys in the snapshot → referenced record titles).
|
|
9674
|
+
* Batched: one query per distinct object (target + referenced) plus one
|
|
9675
|
+
* `sys_user` lookup. Best-effort — a deleted record falls back to the
|
|
9676
|
+
* payload snapshot, and any failure leaves the field unset rather than
|
|
9677
|
+
* failing the list.
|
|
9678
|
+
*/
|
|
9679
|
+
private enrichRows;
|
|
9680
|
+
/**
|
|
9681
|
+
* Mirror one request's `pending_approvers` CSV into the normalized
|
|
9682
|
+
* `sys_approval_approver` index. Called by every write path that changes
|
|
9683
|
+
* the approver set; an empty `approvers` clears the request's rows (the
|
|
9684
|
+
* request left `pending`). Diff-based so reassign/unanimous churn doesn't
|
|
9685
|
+
* rewrite untouched rows.
|
|
9686
|
+
*/
|
|
9687
|
+
private syncApproverIndex;
|
|
9688
|
+
/**
|
|
9689
|
+
* Rebuild the whole `sys_approval_approver` index from the CSV source of
|
|
9690
|
+
* truth. Idempotent; run at plugin start so rows written before the index
|
|
9691
|
+
* existed (or drifted past a crashed sync) become queryable. Cost tracks
|
|
9692
|
+
* the number of *pending* requests, not the request history.
|
|
9693
|
+
*/
|
|
9694
|
+
rebuildApproverIndex(): Promise<{
|
|
9695
|
+
requests: number;
|
|
9696
|
+
inserted: number;
|
|
9697
|
+
deleted: number;
|
|
9698
|
+
}>;
|
|
9699
|
+
/** Filter type accepted by {@link listRequests} / {@link countRequests}. */
|
|
9700
|
+
private buildRequestWhere;
|
|
9701
|
+
/** Window the approver-index probe — pending queues live far below this. */
|
|
9702
|
+
private static readonly APPROVER_INDEX_CAP;
|
|
9703
|
+
/**
|
|
9704
|
+
* Resolve an approver filter to matching request ids via the normalized
|
|
9705
|
+
* `sys_approval_approver` index — the indexed replacement for the old
|
|
9706
|
+
* in-memory CSV scan, and what makes approver-filtered pagination correct
|
|
9707
|
+
* past any scan window (issue #1745). A request matches when ANY of the
|
|
9708
|
+
* caller's identities (user id / email / role:<r>) holds a pending slot.
|
|
9709
|
+
* Returns null when the filter is absent (callers skip the id constraint).
|
|
9710
|
+
*/
|
|
9711
|
+
private approverRequestIds;
|
|
9712
|
+
listRequests(filter: {
|
|
9713
|
+
object?: string;
|
|
9714
|
+
recordId?: string;
|
|
9715
|
+
status?: ApprovalStatus | ApprovalStatus[];
|
|
9716
|
+
approverId?: string | string[];
|
|
9717
|
+
submitterId?: string;
|
|
9718
|
+
q?: string;
|
|
9719
|
+
limit?: number;
|
|
9720
|
+
offset?: number;
|
|
9721
|
+
} | undefined, context: SharingExecutionContext): Promise<ApprovalRequestRow[]>;
|
|
9722
|
+
countRequests(filter: Parameters<IApprovalService['listRequests']>[0], context: SharingExecutionContext): Promise<number>;
|
|
9723
|
+
getRequest(requestId: string, context: SharingExecutionContext): Promise<ApprovalRequestRow | null>;
|
|
9724
|
+
/**
|
|
9725
|
+
* Derive approval-step progress from the owning flow's graph (single-read
|
|
9726
|
+
* enrichment only — list reads skip it). Walks from the start node
|
|
9727
|
+
* preferring `approve`/`true` edges, so the result is the flow's main
|
|
9728
|
+
* approval trunk; conditional side-steps show as part of the potential
|
|
9729
|
+
* path. Display-only and best-effort.
|
|
9730
|
+
*/
|
|
9731
|
+
private attachFlowSteps;
|
|
9732
|
+
listActions(requestId: string, context: SharingExecutionContext): Promise<ApprovalActionRow[]>;
|
|
9733
|
+
}
|
|
9734
|
+
|
|
9735
|
+
interface ApprovalsPluginOptions {
|
|
9736
|
+
/** Disable runtime registration (schemas still register). */
|
|
9737
|
+
disableService?: boolean;
|
|
9738
|
+
/**
|
|
9739
|
+
* Interval between SLA escalation scans (ADR-0042). Defaults to
|
|
9740
|
+
* {@link ESCALATION_SCAN_INTERVAL_MS} (5 min). Only takes effect when a
|
|
9741
|
+
* `job` service is installed; without one, SLA stays display-only.
|
|
9742
|
+
*/
|
|
9743
|
+
escalationScanIntervalMs?: number;
|
|
9744
|
+
/**
|
|
9745
|
+
* Absolute origin for actionable links in outbound notifications
|
|
9746
|
+
* (ADR-0043), e.g. `https://app.example.com`. Relative by default.
|
|
9747
|
+
*/
|
|
9748
|
+
publicBaseUrl?: string;
|
|
7584
9749
|
/**
|
|
7585
9750
|
* Disable the record-lock hook. Schema + service stay intact; only the
|
|
7586
9751
|
* engine-level lock wiring is suppressed. Useful when a caller wants the
|
|
@@ -7605,10 +9770,11 @@ declare class ApprovalsServicePlugin implements Plugin {
|
|
|
7605
9770
|
private readonly options;
|
|
7606
9771
|
private service?;
|
|
7607
9772
|
private engine?;
|
|
9773
|
+
private escalationJobScheduled;
|
|
7608
9774
|
constructor(options?: ApprovalsPluginOptions);
|
|
7609
9775
|
init(ctx: PluginContext): Promise<void>;
|
|
7610
9776
|
start(ctx: PluginContext): Promise<void>;
|
|
7611
|
-
stop(
|
|
9777
|
+
stop(ctx: PluginContext): Promise<void>;
|
|
7612
9778
|
}
|
|
7613
9779
|
|
|
7614
9780
|
/** Minimal surface of the automation engine this provider depends on. */
|
|
@@ -7640,4 +9806,4 @@ interface MinimalLogger {
|
|
|
7640
9806
|
*/
|
|
7641
9807
|
declare function registerApprovalNode(automation: ApprovalAutomationSurface, service: ApprovalService, logger?: MinimalLogger): void;
|
|
7642
9808
|
|
|
7643
|
-
export { type ApprovalAutomationSurface, type ApprovalClock, type ApprovalEngine, type ApprovalResumeSurface, ApprovalService, type ApprovalServiceOptions, type ApprovalsPluginOptions, ApprovalsServicePlugin, SysApprovalAction, SysApprovalRequest, registerApprovalNode };
|
|
9809
|
+
export { type ApprovalAutomationSurface, type ApprovalClock, type ApprovalEngine, type ApprovalResumeSurface, ApprovalService, type ApprovalServiceOptions, type ApprovalsPluginOptions, ApprovalsServicePlugin, SysApprovalAction, SysApprovalApprover, SysApprovalRequest, registerApprovalNode };
|