@objectstack/metadata 4.0.1 → 4.0.3

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/dist/index.d.cts CHANGED
@@ -1,6 +1,6 @@
1
- import { MetadataFormat, MetadataLoaderContract, MetadataLoadOptions, MetadataLoadResult, MetadataStats, MetadataSaveOptions, MetadataSaveResult, MetadataWatchEvent, MetadataManagerConfig, PackagePublishResult } from '@objectstack/spec/system';
2
- export { MetadataCollectionInfo, MetadataExportOptions, MetadataFormat, MetadataImportOptions, MetadataLoadOptions, MetadataLoadResult, MetadataLoaderContract, MetadataManagerConfig, MetadataSaveOptions, MetadataSaveResult, MetadataStats, MetadataWatchEvent } from '@objectstack/spec/system';
3
- import { IMetadataService, IDataDriver, MetadataWatchCallback, MetadataWatchHandle, MetadataExportOptions, MetadataImportOptions, MetadataImportResult, MetadataTypeInfo, ISchemaDriver } from '@objectstack/spec/contracts';
1
+ import { MetadataFormat, MetadataLoaderContract, MetadataLoadOptions, MetadataLoadResult, MetadataStats, MetadataSaveOptions, MetadataSaveResult, MetadataWatchEvent, MetadataManagerConfig, PackagePublishResult, MetadataHistoryQueryOptions, MetadataHistoryQueryResult, MetadataDiffResult, MetadataHistoryRecord, MetadataHistoryRetentionPolicy } from '@objectstack/spec/system';
2
+ export { MetadataCollectionInfo, MetadataDiffResult, MetadataExportOptions, MetadataFormat, MetadataHistoryQueryOptions, MetadataHistoryQueryResult, MetadataHistoryRecord, MetadataHistoryRetentionPolicy, MetadataImportOptions, MetadataLoadOptions, MetadataLoadResult, MetadataLoaderContract, MetadataManagerConfig, MetadataSaveOptions, MetadataSaveResult, MetadataStats, MetadataWatchEvent } from '@objectstack/spec/system';
3
+ import { IMetadataService, IDataDriver, IRealtimeService, MetadataWatchCallback, MetadataWatchHandle, MetadataExportOptions, MetadataImportOptions, MetadataImportResult, MetadataTypeInfo, ISchemaDriver } from '@objectstack/spec/contracts';
4
4
  export { IMetadataService, MetadataImportResult, MetadataTypeInfo, MetadataWatchCallback, MetadataWatchHandle } from '@objectstack/spec/contracts';
5
5
  import { MetadataTypeRegistryEntry, MetadataQuery, MetadataQueryResult, MetadataBulkResult, MetadataOverlay, MetadataValidationResult, MetadataDependency, MetadataPluginConfig } from '@objectstack/spec/kernel';
6
6
  export { MetadataBulkResult, MetadataDependency, MetadataPluginConfig, MetadataPluginManifest, MetadataQuery, MetadataQueryResult, MetadataType, MetadataTypeRegistryEntry, MetadataValidationResult } from '@objectstack/spec/kernel';
@@ -156,6 +156,7 @@ declare class MetadataManager implements IMetadataService {
156
156
  private overlays;
157
157
  private typeRegistry;
158
158
  private dependencies;
159
+ private realtimeService?;
159
160
  constructor(config: MetadataManagerOptions);
160
161
  /**
161
162
  * Set the type registry for metadata type discovery.
@@ -168,12 +169,22 @@ declare class MetadataManager implements IMetadataService {
168
169
  * @param driver - An IDataDriver instance for database operations
169
170
  */
170
171
  setDatabaseDriver(driver: IDataDriver): void;
172
+ /**
173
+ * Set the realtime service for publishing metadata change events.
174
+ * Should be called after kernel resolves the realtime service.
175
+ *
176
+ * @param service - An IRealtimeService instance for event publishing
177
+ */
178
+ setRealtimeService(service: IRealtimeService): void;
171
179
  /**
172
180
  * Register a new metadata loader (data source)
173
181
  */
174
182
  registerLoader(loader: MetadataLoader): void;
175
183
  /**
176
184
  * Register/save a metadata item by type
185
+ * Stores in-memory registry and persists to database-backed loaders only.
186
+ * FilesystemLoader (protocol 'file:') is read-only for static metadata and
187
+ * should not be written to during runtime registration.
177
188
  */
178
189
  register(type: string, name: string, data: unknown): Promise<void>;
179
190
  /**
@@ -186,7 +197,8 @@ declare class MetadataManager implements IMetadataService {
186
197
  */
187
198
  list(type: string): Promise<unknown[]>;
188
199
  /**
189
- * Unregister/remove a metadata item by type and name
200
+ * Unregister/remove a metadata item by type and name.
201
+ * Deletes from database-backed loaders only (same rationale as register()).
190
202
  */
191
203
  unregister(type: string, name: string): Promise<void>;
192
204
  /**
@@ -359,6 +371,29 @@ declare class MetadataManager implements IMetadataService {
359
371
  */
360
372
  stopWatching(): Promise<void>;
361
373
  protected notifyWatchers(type: string, event: MetadataWatchEvent): void;
374
+ /**
375
+ * Get the database loader for history operations.
376
+ * Returns undefined if no database loader is configured.
377
+ */
378
+ private getDatabaseLoader;
379
+ /**
380
+ * Get version history for a metadata item.
381
+ * Returns a timeline of all changes made to the item.
382
+ */
383
+ getHistory(type: string, name: string, options?: MetadataHistoryQueryOptions): Promise<MetadataHistoryQueryResult>;
384
+ /**
385
+ * Rollback a metadata item to a specific version.
386
+ * Restores the metadata definition from the history snapshot.
387
+ */
388
+ rollback(type: string, name: string, version: number, options?: {
389
+ changeNote?: string;
390
+ recordedBy?: string;
391
+ }): Promise<unknown>;
392
+ /**
393
+ * Compare two versions of a metadata item.
394
+ * Returns a diff showing what changed between versions.
395
+ */
396
+ diff(type: string, name: string, version1: number, version2: number): Promise<MetadataDiffResult>;
362
397
  }
363
398
 
364
399
  interface MetadataPluginOptions {
@@ -393,6 +428,10 @@ declare class MemoryLoader implements MetadataLoader {
393
428
  stat(type: string, name: string): Promise<MetadataStats | null>;
394
429
  list(type: string): Promise<string[]>;
395
430
  save(type: string, name: string, data: any, _options?: MetadataSaveOptions): Promise<MetadataSaveResult>;
431
+ /**
432
+ * Delete a metadata item from memory storage
433
+ */
434
+ delete(type: string, name: string): Promise<void>;
396
435
  }
397
436
 
398
437
  /**
@@ -433,8 +472,12 @@ interface DatabaseLoaderOptions {
433
472
  driver: IDataDriver;
434
473
  /** The table name to store metadata records (default: 'sys_metadata') */
435
474
  tableName?: string;
475
+ /** The table name to store history records (default: 'sys_metadata_history') */
476
+ historyTableName?: string;
436
477
  /** Tenant ID for multi-tenant isolation */
437
478
  tenantId?: string;
479
+ /** Enable history tracking (default: true) */
480
+ trackHistory?: boolean;
438
481
  }
439
482
  /**
440
483
  * DatabaseLoader — Datasource-backed metadata persistence.
@@ -447,8 +490,11 @@ declare class DatabaseLoader implements MetadataLoader {
447
490
  readonly contract: MetadataLoaderContract;
448
491
  private driver;
449
492
  private tableName;
493
+ private historyTableName;
450
494
  private tenantId?;
495
+ private trackHistory;
451
496
  private schemaReady;
497
+ private historySchemaReady;
452
498
  constructor(options: DatabaseLoaderOptions);
453
499
  /**
454
500
  * Ensure the metadata table exists.
@@ -456,11 +502,30 @@ declare class DatabaseLoader implements MetadataLoader {
456
502
  * to idempotently create/update the table.
457
503
  */
458
504
  private ensureSchema;
505
+ /**
506
+ * Ensure the history table exists.
507
+ * Uses IDataDriver.syncSchema with the SysMetadataHistoryObject definition.
508
+ */
509
+ private ensureHistorySchema;
459
510
  /**
460
511
  * Build base filter conditions for queries.
461
512
  * Always includes tenantId when configured.
462
513
  */
463
514
  private baseFilter;
515
+ /**
516
+ * Create a history record for a metadata change.
517
+ *
518
+ * @param metadataId - The metadata record ID
519
+ * @param type - Metadata type
520
+ * @param name - Metadata name
521
+ * @param version - Version number
522
+ * @param metadata - The metadata payload
523
+ * @param operationType - Type of operation
524
+ * @param previousChecksum - Checksum of previous version (if any)
525
+ * @param changeNote - Optional change description
526
+ * @param recordedBy - Optional user who made the change
527
+ */
528
+ private createHistoryRecord;
464
529
  /**
465
530
  * Convert a database row to a metadata payload.
466
531
  * Parses the JSON `metadata` column back into an object.
@@ -475,7 +540,24 @@ declare class DatabaseLoader implements MetadataLoader {
475
540
  exists(type: string, name: string): Promise<boolean>;
476
541
  stat(type: string, name: string): Promise<MetadataStats | null>;
477
542
  list(type: string): Promise<string[]>;
543
+ /**
544
+ * Fetch a single history snapshot by (type, name, version).
545
+ * Returns null when the record does not exist.
546
+ */
547
+ getHistoryRecord(type: string, name: string, version: number): Promise<MetadataHistoryRecord | null>;
548
+ /**
549
+ * Perform a rollback: persist `restoredData` as the new current state and record a
550
+ * single 'revert' history entry (instead of the usual 'update' entry that `save()`
551
+ * would produce). This avoids the duplicate-version problem that arises when
552
+ * `register()` → `save()` writes an 'update' entry followed by an additional
553
+ * 'revert' entry for the same version number.
554
+ */
555
+ registerRollback(type: string, name: string, restoredData: unknown, targetVersion: number, changeNote?: string, recordedBy?: string): Promise<void>;
478
556
  save(type: string, name: string, data: any, _options?: MetadataSaveOptions): Promise<MetadataSaveResult>;
557
+ /**
558
+ * Delete a metadata item from the database
559
+ */
560
+ delete(type: string, name: string): Promise<void>;
479
561
  }
480
562
 
481
563
  /**
@@ -804,12 +886,8 @@ declare const SysMetadataObject: Omit<{
804
886
  keyPrefix?: string | undefined;
805
887
  actions?: {
806
888
  name: string;
807
- label: string | {
808
- key: string;
809
- defaultValue?: string | undefined;
810
- params?: Record<string, string | number | boolean> | undefined;
811
- };
812
- type: "url" | "script" | "modal" | "flow" | "api";
889
+ label: string;
890
+ type: "url" | "flow" | "api" | "script" | "modal";
813
891
  refreshAfter: boolean;
814
892
  objectName?: string | undefined;
815
893
  icon?: string | undefined;
@@ -819,44 +897,24 @@ declare const SysMetadataObject: Omit<{
819
897
  execute?: string | undefined;
820
898
  params?: {
821
899
  name: string;
822
- label: string | {
823
- key: string;
824
- defaultValue?: string | undefined;
825
- params?: Record<string, string | number | boolean> | undefined;
826
- };
900
+ label: string;
827
901
  type: "number" | "boolean" | "date" | "lookup" | "file" | "url" | "json" | "text" | "textarea" | "email" | "phone" | "password" | "markdown" | "html" | "richtext" | "currency" | "percent" | "datetime" | "time" | "toggle" | "select" | "multiselect" | "radio" | "checkboxes" | "master_detail" | "tree" | "image" | "avatar" | "video" | "audio" | "formula" | "summary" | "autonumber" | "location" | "address" | "code" | "color" | "rating" | "slider" | "signature" | "qrcode" | "progress" | "tags" | "vector";
828
902
  required: boolean;
829
903
  options?: {
830
- label: string | {
831
- key: string;
832
- defaultValue?: string | undefined;
833
- params?: Record<string, string | number | boolean> | undefined;
834
- };
904
+ label: string;
835
905
  value: string;
836
906
  }[] | undefined;
837
907
  }[] | undefined;
838
908
  variant?: "link" | "primary" | "secondary" | "danger" | "ghost" | undefined;
839
- confirmText?: string | {
840
- key: string;
841
- defaultValue?: string | undefined;
842
- params?: Record<string, string | number | boolean> | undefined;
843
- } | undefined;
844
- successMessage?: string | {
845
- key: string;
846
- defaultValue?: string | undefined;
847
- params?: Record<string, string | number | boolean> | undefined;
848
- } | undefined;
909
+ confirmText?: string | undefined;
910
+ successMessage?: string | undefined;
849
911
  visible?: string | undefined;
850
912
  disabled?: string | boolean | undefined;
851
913
  shortcut?: string | undefined;
852
914
  bulkEnabled?: boolean | undefined;
853
915
  timeout?: number | undefined;
854
916
  aria?: {
855
- ariaLabel?: string | {
856
- key: string;
857
- defaultValue?: string | undefined;
858
- params?: Record<string, string | number | boolean> | undefined;
859
- } | undefined;
917
+ ariaLabel?: string | undefined;
860
918
  ariaDescribedBy?: string | undefined;
861
919
  role?: string | undefined;
862
920
  } | undefined;
@@ -4228,6 +4286,2530 @@ declare const SysMetadataObject: Omit<{
4228
4286
  };
4229
4287
  }, "fields">;
4230
4288
 
4289
+ /**
4290
+ * sys_metadata_history — Metadata Version History Object
4291
+ *
4292
+ * Stores historical snapshots of metadata changes for version tracking,
4293
+ * audit trail, and rollback capabilities.
4294
+ *
4295
+ * This is a system object (isSystem: true) — protected from deletion and
4296
+ * automatically provisioned when metadata history is enabled.
4297
+ *
4298
+ * Each record represents a single version snapshot of a metadata item,
4299
+ * created whenever the metadata is modified, published, or reverted.
4300
+ *
4301
+ * @see MetadataHistoryRecordSchema in metadata-persistence.zod.ts
4302
+ */
4303
+ declare const SysMetadataHistoryObject: Omit<{
4304
+ name: string;
4305
+ active: boolean;
4306
+ isSystem: boolean;
4307
+ abstract: boolean;
4308
+ datasource: string;
4309
+ fields: Record<string, {
4310
+ type: "number" | "boolean" | "json" | "tags" | "date" | "lookup" | "file" | "url" | "text" | "textarea" | "email" | "phone" | "password" | "markdown" | "html" | "richtext" | "currency" | "percent" | "datetime" | "time" | "toggle" | "select" | "multiselect" | "radio" | "checkboxes" | "master_detail" | "tree" | "image" | "avatar" | "video" | "audio" | "formula" | "summary" | "autonumber" | "location" | "address" | "code" | "color" | "rating" | "slider" | "signature" | "qrcode" | "progress" | "vector";
4311
+ required: boolean;
4312
+ searchable: boolean;
4313
+ multiple: boolean;
4314
+ unique: boolean;
4315
+ deleteBehavior: "set_null" | "cascade" | "restrict";
4316
+ auditTrail: boolean;
4317
+ hidden: boolean;
4318
+ readonly: boolean;
4319
+ sortable: boolean;
4320
+ index: boolean;
4321
+ externalId: boolean;
4322
+ name?: string | undefined;
4323
+ label?: string | undefined;
4324
+ description?: string | undefined;
4325
+ format?: string | undefined;
4326
+ columnName?: string | undefined;
4327
+ defaultValue?: unknown;
4328
+ maxLength?: number | undefined;
4329
+ minLength?: number | undefined;
4330
+ precision?: number | undefined;
4331
+ scale?: number | undefined;
4332
+ min?: number | undefined;
4333
+ max?: number | undefined;
4334
+ options?: {
4335
+ label: string;
4336
+ value: string;
4337
+ color?: string | undefined;
4338
+ default?: boolean | undefined;
4339
+ }[] | undefined;
4340
+ reference?: string | undefined;
4341
+ referenceFilters?: string[] | undefined;
4342
+ writeRequiresMasterRead?: boolean | undefined;
4343
+ expression?: string | undefined;
4344
+ summaryOperations?: {
4345
+ object: string;
4346
+ field: string;
4347
+ function: "min" | "max" | "count" | "sum" | "avg";
4348
+ } | undefined;
4349
+ language?: string | undefined;
4350
+ theme?: string | undefined;
4351
+ lineNumbers?: boolean | undefined;
4352
+ maxRating?: number | undefined;
4353
+ allowHalf?: boolean | undefined;
4354
+ displayMap?: boolean | undefined;
4355
+ allowGeocoding?: boolean | undefined;
4356
+ addressFormat?: "us" | "uk" | "international" | undefined;
4357
+ colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
4358
+ allowAlpha?: boolean | undefined;
4359
+ presetColors?: string[] | undefined;
4360
+ step?: number | undefined;
4361
+ showValue?: boolean | undefined;
4362
+ marks?: Record<string, string> | undefined;
4363
+ barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
4364
+ qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
4365
+ displayValue?: boolean | undefined;
4366
+ allowScanning?: boolean | undefined;
4367
+ currencyConfig?: {
4368
+ precision: number;
4369
+ currencyMode: "dynamic" | "fixed";
4370
+ defaultCurrency: string;
4371
+ } | undefined;
4372
+ vectorConfig?: {
4373
+ dimensions: number;
4374
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
4375
+ normalized: boolean;
4376
+ indexed: boolean;
4377
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
4378
+ } | undefined;
4379
+ fileAttachmentConfig?: {
4380
+ virusScan: boolean;
4381
+ virusScanOnUpload: boolean;
4382
+ quarantineOnThreat: boolean;
4383
+ allowMultiple: boolean;
4384
+ allowReplace: boolean;
4385
+ allowDelete: boolean;
4386
+ requireUpload: boolean;
4387
+ extractMetadata: boolean;
4388
+ extractText: boolean;
4389
+ versioningEnabled: boolean;
4390
+ publicRead: boolean;
4391
+ presignedUrlExpiry: number;
4392
+ minSize?: number | undefined;
4393
+ maxSize?: number | undefined;
4394
+ allowedTypes?: string[] | undefined;
4395
+ blockedTypes?: string[] | undefined;
4396
+ allowedMimeTypes?: string[] | undefined;
4397
+ blockedMimeTypes?: string[] | undefined;
4398
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
4399
+ storageProvider?: string | undefined;
4400
+ storageBucket?: string | undefined;
4401
+ storagePrefix?: string | undefined;
4402
+ imageValidation?: {
4403
+ generateThumbnails: boolean;
4404
+ preserveMetadata: boolean;
4405
+ autoRotate: boolean;
4406
+ minWidth?: number | undefined;
4407
+ maxWidth?: number | undefined;
4408
+ minHeight?: number | undefined;
4409
+ maxHeight?: number | undefined;
4410
+ aspectRatio?: string | undefined;
4411
+ thumbnailSizes?: {
4412
+ name: string;
4413
+ width: number;
4414
+ height: number;
4415
+ crop: boolean;
4416
+ }[] | undefined;
4417
+ } | undefined;
4418
+ maxVersions?: number | undefined;
4419
+ } | undefined;
4420
+ encryptionConfig?: {
4421
+ enabled: boolean;
4422
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
4423
+ keyManagement: {
4424
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
4425
+ keyId?: string | undefined;
4426
+ rotationPolicy?: {
4427
+ enabled: boolean;
4428
+ frequencyDays: number;
4429
+ retainOldVersions: number;
4430
+ autoRotate: boolean;
4431
+ } | undefined;
4432
+ };
4433
+ scope: "field" | "table" | "record" | "database";
4434
+ deterministicEncryption: boolean;
4435
+ searchableEncryption: boolean;
4436
+ } | undefined;
4437
+ maskingRule?: {
4438
+ field: string;
4439
+ strategy: "hash" | "redact" | "partial" | "tokenize" | "randomize" | "nullify" | "substitute";
4440
+ preserveFormat: boolean;
4441
+ preserveLength: boolean;
4442
+ pattern?: string | undefined;
4443
+ roles?: string[] | undefined;
4444
+ exemptRoles?: string[] | undefined;
4445
+ } | undefined;
4446
+ dependencies?: string[] | undefined;
4447
+ cached?: {
4448
+ enabled: boolean;
4449
+ ttl: number;
4450
+ invalidateOn: string[];
4451
+ } | undefined;
4452
+ dataQuality?: {
4453
+ uniqueness: boolean;
4454
+ completeness: number;
4455
+ accuracy?: {
4456
+ source: string;
4457
+ threshold: number;
4458
+ } | undefined;
4459
+ } | undefined;
4460
+ group?: string | undefined;
4461
+ conditionalRequired?: string | undefined;
4462
+ inlineHelpText?: string | undefined;
4463
+ trackFeedHistory?: boolean | undefined;
4464
+ caseSensitive?: boolean | undefined;
4465
+ autonumberFormat?: string | undefined;
4466
+ }>;
4467
+ label?: string | undefined;
4468
+ pluralLabel?: string | undefined;
4469
+ description?: string | undefined;
4470
+ icon?: string | undefined;
4471
+ namespace?: string | undefined;
4472
+ tags?: string[] | undefined;
4473
+ tableName?: string | undefined;
4474
+ indexes?: {
4475
+ fields: string[];
4476
+ type: "hash" | "btree" | "gin" | "gist" | "fulltext";
4477
+ unique: boolean;
4478
+ name?: string | undefined;
4479
+ partial?: string | undefined;
4480
+ }[] | undefined;
4481
+ tenancy?: {
4482
+ enabled: boolean;
4483
+ strategy: "shared" | "isolated" | "hybrid";
4484
+ tenantField: string;
4485
+ crossTenantAccess: boolean;
4486
+ } | undefined;
4487
+ softDelete?: {
4488
+ enabled: boolean;
4489
+ field: string;
4490
+ cascadeDelete: boolean;
4491
+ } | undefined;
4492
+ versioning?: {
4493
+ enabled: boolean;
4494
+ strategy: "snapshot" | "delta" | "event-sourcing";
4495
+ versionField: string;
4496
+ retentionDays?: number | undefined;
4497
+ } | undefined;
4498
+ partitioning?: {
4499
+ enabled: boolean;
4500
+ strategy: "hash" | "range" | "list";
4501
+ key: string;
4502
+ interval?: string | undefined;
4503
+ } | undefined;
4504
+ cdc?: {
4505
+ enabled: boolean;
4506
+ events: ("update" | "delete" | "insert")[];
4507
+ destination: string;
4508
+ } | undefined;
4509
+ validations?: _objectstack_spec_data.BaseValidationRuleShape[] | undefined;
4510
+ stateMachines?: Record<string, {
4511
+ id: string;
4512
+ initial: string;
4513
+ states: Record<string, StateNodeConfig>;
4514
+ description?: string | undefined;
4515
+ contextSchema?: Record<string, unknown> | undefined;
4516
+ on?: Record<string, string | {
4517
+ target?: string | undefined;
4518
+ cond?: string | {
4519
+ type: string;
4520
+ params?: Record<string, unknown> | undefined;
4521
+ } | undefined;
4522
+ actions?: (string | {
4523
+ type: string;
4524
+ params?: Record<string, unknown> | undefined;
4525
+ })[] | undefined;
4526
+ description?: string | undefined;
4527
+ } | {
4528
+ target?: string | undefined;
4529
+ cond?: string | {
4530
+ type: string;
4531
+ params?: Record<string, unknown> | undefined;
4532
+ } | undefined;
4533
+ actions?: (string | {
4534
+ type: string;
4535
+ params?: Record<string, unknown> | undefined;
4536
+ })[] | undefined;
4537
+ description?: string | undefined;
4538
+ }[]> | undefined;
4539
+ }> | undefined;
4540
+ displayNameField?: string | undefined;
4541
+ recordName?: {
4542
+ type: "text" | "autonumber";
4543
+ displayFormat?: string | undefined;
4544
+ startNumber?: number | undefined;
4545
+ } | undefined;
4546
+ titleFormat?: string | undefined;
4547
+ compactLayout?: string[] | undefined;
4548
+ search?: {
4549
+ fields: string[];
4550
+ displayFields?: string[] | undefined;
4551
+ filters?: string[] | undefined;
4552
+ } | undefined;
4553
+ enable?: {
4554
+ trackHistory: boolean;
4555
+ searchable: boolean;
4556
+ apiEnabled: boolean;
4557
+ files: boolean;
4558
+ feeds: boolean;
4559
+ activities: boolean;
4560
+ trash: boolean;
4561
+ mru: boolean;
4562
+ clone: boolean;
4563
+ apiMethods?: ("create" | "search" | "list" | "update" | "delete" | "upsert" | "history" | "get" | "bulk" | "aggregate" | "restore" | "purge" | "import" | "export")[] | undefined;
4564
+ } | undefined;
4565
+ recordTypes?: string[] | undefined;
4566
+ sharingModel?: "full" | "private" | "read" | "read_write" | undefined;
4567
+ keyPrefix?: string | undefined;
4568
+ actions?: {
4569
+ name: string;
4570
+ label: string;
4571
+ type: "url" | "flow" | "api" | "script" | "modal";
4572
+ refreshAfter: boolean;
4573
+ objectName?: string | undefined;
4574
+ icon?: string | undefined;
4575
+ locations?: ("list_toolbar" | "list_item" | "record_header" | "record_more" | "record_related" | "global_nav")[] | undefined;
4576
+ component?: "action:button" | "action:icon" | "action:menu" | "action:group" | undefined;
4577
+ target?: string | undefined;
4578
+ execute?: string | undefined;
4579
+ params?: {
4580
+ name: string;
4581
+ label: string;
4582
+ type: "number" | "boolean" | "date" | "lookup" | "file" | "url" | "json" | "text" | "textarea" | "email" | "phone" | "password" | "markdown" | "html" | "richtext" | "currency" | "percent" | "datetime" | "time" | "toggle" | "select" | "multiselect" | "radio" | "checkboxes" | "master_detail" | "tree" | "image" | "avatar" | "video" | "audio" | "formula" | "summary" | "autonumber" | "location" | "address" | "code" | "color" | "rating" | "slider" | "signature" | "qrcode" | "progress" | "tags" | "vector";
4583
+ required: boolean;
4584
+ options?: {
4585
+ label: string;
4586
+ value: string;
4587
+ }[] | undefined;
4588
+ }[] | undefined;
4589
+ variant?: "link" | "primary" | "secondary" | "danger" | "ghost" | undefined;
4590
+ confirmText?: string | undefined;
4591
+ successMessage?: string | undefined;
4592
+ visible?: string | undefined;
4593
+ disabled?: string | boolean | undefined;
4594
+ shortcut?: string | undefined;
4595
+ bulkEnabled?: boolean | undefined;
4596
+ timeout?: number | undefined;
4597
+ aria?: {
4598
+ ariaLabel?: string | undefined;
4599
+ ariaDescribedBy?: string | undefined;
4600
+ role?: string | undefined;
4601
+ } | undefined;
4602
+ }[] | undefined;
4603
+ }, "fields"> & Pick<{
4604
+ readonly namespace: "sys";
4605
+ readonly name: "metadata_history";
4606
+ readonly label: "Metadata History";
4607
+ readonly pluralLabel: "Metadata History";
4608
+ readonly icon: "history";
4609
+ readonly isSystem: true;
4610
+ readonly description: "Version history and audit trail for metadata changes";
4611
+ readonly fields: {
4612
+ /** Primary Key (UUID) */
4613
+ readonly id: {
4614
+ readonly format?: string | undefined;
4615
+ readonly expression?: string | undefined;
4616
+ readonly readonly?: boolean | undefined;
4617
+ readonly defaultValue?: unknown;
4618
+ readonly min?: number | undefined;
4619
+ readonly max?: number | undefined;
4620
+ readonly name?: string | undefined;
4621
+ readonly encryptionConfig?: {
4622
+ enabled: boolean;
4623
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
4624
+ keyManagement: {
4625
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
4626
+ keyId?: string | undefined;
4627
+ rotationPolicy?: {
4628
+ enabled: boolean;
4629
+ frequencyDays: number;
4630
+ retainOldVersions: number;
4631
+ autoRotate: boolean;
4632
+ } | undefined;
4633
+ };
4634
+ scope: "table" | "record" | "field" | "database";
4635
+ deterministicEncryption: boolean;
4636
+ searchableEncryption: boolean;
4637
+ } | undefined;
4638
+ readonly label?: string | undefined;
4639
+ readonly precision?: number | undefined;
4640
+ readonly description?: string | undefined;
4641
+ readonly columnName?: string | undefined;
4642
+ readonly required?: boolean | undefined;
4643
+ readonly searchable?: boolean | undefined;
4644
+ readonly multiple?: boolean | undefined;
4645
+ readonly unique?: boolean | undefined;
4646
+ readonly maxLength?: number | undefined;
4647
+ readonly minLength?: number | undefined;
4648
+ readonly scale?: number | undefined;
4649
+ readonly options?: {
4650
+ label: string;
4651
+ value: string;
4652
+ color?: string | undefined;
4653
+ default?: boolean | undefined;
4654
+ }[] | undefined;
4655
+ readonly reference?: string | undefined;
4656
+ readonly referenceFilters?: string[] | undefined;
4657
+ readonly writeRequiresMasterRead?: boolean | undefined;
4658
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
4659
+ readonly summaryOperations?: {
4660
+ object: string;
4661
+ field: string;
4662
+ function: "count" | "sum" | "avg" | "min" | "max";
4663
+ } | undefined;
4664
+ readonly language?: string | undefined;
4665
+ readonly theme?: string | undefined;
4666
+ readonly lineNumbers?: boolean | undefined;
4667
+ readonly maxRating?: number | undefined;
4668
+ readonly allowHalf?: boolean | undefined;
4669
+ readonly displayMap?: boolean | undefined;
4670
+ readonly allowGeocoding?: boolean | undefined;
4671
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
4672
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
4673
+ readonly allowAlpha?: boolean | undefined;
4674
+ readonly presetColors?: string[] | undefined;
4675
+ readonly step?: number | undefined;
4676
+ readonly showValue?: boolean | undefined;
4677
+ readonly marks?: Record<string, string> | undefined;
4678
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
4679
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
4680
+ readonly displayValue?: boolean | undefined;
4681
+ readonly allowScanning?: boolean | undefined;
4682
+ readonly currencyConfig?: {
4683
+ precision: number;
4684
+ currencyMode: "dynamic" | "fixed";
4685
+ defaultCurrency: string;
4686
+ } | undefined;
4687
+ readonly vectorConfig?: {
4688
+ dimensions: number;
4689
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
4690
+ normalized: boolean;
4691
+ indexed: boolean;
4692
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
4693
+ } | undefined;
4694
+ readonly fileAttachmentConfig?: {
4695
+ virusScan: boolean;
4696
+ virusScanOnUpload: boolean;
4697
+ quarantineOnThreat: boolean;
4698
+ allowMultiple: boolean;
4699
+ allowReplace: boolean;
4700
+ allowDelete: boolean;
4701
+ requireUpload: boolean;
4702
+ extractMetadata: boolean;
4703
+ extractText: boolean;
4704
+ versioningEnabled: boolean;
4705
+ publicRead: boolean;
4706
+ presignedUrlExpiry: number;
4707
+ minSize?: number | undefined;
4708
+ maxSize?: number | undefined;
4709
+ allowedTypes?: string[] | undefined;
4710
+ blockedTypes?: string[] | undefined;
4711
+ allowedMimeTypes?: string[] | undefined;
4712
+ blockedMimeTypes?: string[] | undefined;
4713
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
4714
+ storageProvider?: string | undefined;
4715
+ storageBucket?: string | undefined;
4716
+ storagePrefix?: string | undefined;
4717
+ imageValidation?: {
4718
+ generateThumbnails: boolean;
4719
+ preserveMetadata: boolean;
4720
+ autoRotate: boolean;
4721
+ minWidth?: number | undefined;
4722
+ maxWidth?: number | undefined;
4723
+ minHeight?: number | undefined;
4724
+ maxHeight?: number | undefined;
4725
+ aspectRatio?: string | undefined;
4726
+ thumbnailSizes?: {
4727
+ name: string;
4728
+ width: number;
4729
+ height: number;
4730
+ crop: boolean;
4731
+ }[] | undefined;
4732
+ } | undefined;
4733
+ maxVersions?: number | undefined;
4734
+ } | undefined;
4735
+ readonly maskingRule?: {
4736
+ field: string;
4737
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
4738
+ preserveFormat: boolean;
4739
+ preserveLength: boolean;
4740
+ pattern?: string | undefined;
4741
+ roles?: string[] | undefined;
4742
+ exemptRoles?: string[] | undefined;
4743
+ } | undefined;
4744
+ readonly auditTrail?: boolean | undefined;
4745
+ readonly dependencies?: string[] | undefined;
4746
+ readonly cached?: {
4747
+ enabled: boolean;
4748
+ ttl: number;
4749
+ invalidateOn: string[];
4750
+ } | undefined;
4751
+ readonly dataQuality?: {
4752
+ uniqueness: boolean;
4753
+ completeness: number;
4754
+ accuracy?: {
4755
+ source: string;
4756
+ threshold: number;
4757
+ } | undefined;
4758
+ } | undefined;
4759
+ readonly group?: string | undefined;
4760
+ readonly conditionalRequired?: string | undefined;
4761
+ readonly hidden?: boolean | undefined;
4762
+ readonly sortable?: boolean | undefined;
4763
+ readonly inlineHelpText?: string | undefined;
4764
+ readonly trackFeedHistory?: boolean | undefined;
4765
+ readonly caseSensitive?: boolean | undefined;
4766
+ readonly autonumberFormat?: string | undefined;
4767
+ readonly index?: boolean | undefined;
4768
+ readonly externalId?: boolean | undefined;
4769
+ readonly type: "text";
4770
+ };
4771
+ /** Foreign key to sys_metadata.id */
4772
+ readonly metadata_id: {
4773
+ readonly format?: string | undefined;
4774
+ readonly expression?: string | undefined;
4775
+ readonly readonly?: boolean | undefined;
4776
+ readonly defaultValue?: unknown;
4777
+ readonly min?: number | undefined;
4778
+ readonly max?: number | undefined;
4779
+ readonly name?: string | undefined;
4780
+ readonly encryptionConfig?: {
4781
+ enabled: boolean;
4782
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
4783
+ keyManagement: {
4784
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
4785
+ keyId?: string | undefined;
4786
+ rotationPolicy?: {
4787
+ enabled: boolean;
4788
+ frequencyDays: number;
4789
+ retainOldVersions: number;
4790
+ autoRotate: boolean;
4791
+ } | undefined;
4792
+ };
4793
+ scope: "table" | "record" | "field" | "database";
4794
+ deterministicEncryption: boolean;
4795
+ searchableEncryption: boolean;
4796
+ } | undefined;
4797
+ readonly label?: string | undefined;
4798
+ readonly precision?: number | undefined;
4799
+ readonly description?: string | undefined;
4800
+ readonly columnName?: string | undefined;
4801
+ readonly required?: boolean | undefined;
4802
+ readonly searchable?: boolean | undefined;
4803
+ readonly multiple?: boolean | undefined;
4804
+ readonly unique?: boolean | undefined;
4805
+ readonly maxLength?: number | undefined;
4806
+ readonly minLength?: number | undefined;
4807
+ readonly scale?: number | undefined;
4808
+ readonly options?: {
4809
+ label: string;
4810
+ value: string;
4811
+ color?: string | undefined;
4812
+ default?: boolean | undefined;
4813
+ }[] | undefined;
4814
+ readonly reference?: string | undefined;
4815
+ readonly referenceFilters?: string[] | undefined;
4816
+ readonly writeRequiresMasterRead?: boolean | undefined;
4817
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
4818
+ readonly summaryOperations?: {
4819
+ object: string;
4820
+ field: string;
4821
+ function: "count" | "sum" | "avg" | "min" | "max";
4822
+ } | undefined;
4823
+ readonly language?: string | undefined;
4824
+ readonly theme?: string | undefined;
4825
+ readonly lineNumbers?: boolean | undefined;
4826
+ readonly maxRating?: number | undefined;
4827
+ readonly allowHalf?: boolean | undefined;
4828
+ readonly displayMap?: boolean | undefined;
4829
+ readonly allowGeocoding?: boolean | undefined;
4830
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
4831
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
4832
+ readonly allowAlpha?: boolean | undefined;
4833
+ readonly presetColors?: string[] | undefined;
4834
+ readonly step?: number | undefined;
4835
+ readonly showValue?: boolean | undefined;
4836
+ readonly marks?: Record<string, string> | undefined;
4837
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
4838
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
4839
+ readonly displayValue?: boolean | undefined;
4840
+ readonly allowScanning?: boolean | undefined;
4841
+ readonly currencyConfig?: {
4842
+ precision: number;
4843
+ currencyMode: "dynamic" | "fixed";
4844
+ defaultCurrency: string;
4845
+ } | undefined;
4846
+ readonly vectorConfig?: {
4847
+ dimensions: number;
4848
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
4849
+ normalized: boolean;
4850
+ indexed: boolean;
4851
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
4852
+ } | undefined;
4853
+ readonly fileAttachmentConfig?: {
4854
+ virusScan: boolean;
4855
+ virusScanOnUpload: boolean;
4856
+ quarantineOnThreat: boolean;
4857
+ allowMultiple: boolean;
4858
+ allowReplace: boolean;
4859
+ allowDelete: boolean;
4860
+ requireUpload: boolean;
4861
+ extractMetadata: boolean;
4862
+ extractText: boolean;
4863
+ versioningEnabled: boolean;
4864
+ publicRead: boolean;
4865
+ presignedUrlExpiry: number;
4866
+ minSize?: number | undefined;
4867
+ maxSize?: number | undefined;
4868
+ allowedTypes?: string[] | undefined;
4869
+ blockedTypes?: string[] | undefined;
4870
+ allowedMimeTypes?: string[] | undefined;
4871
+ blockedMimeTypes?: string[] | undefined;
4872
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
4873
+ storageProvider?: string | undefined;
4874
+ storageBucket?: string | undefined;
4875
+ storagePrefix?: string | undefined;
4876
+ imageValidation?: {
4877
+ generateThumbnails: boolean;
4878
+ preserveMetadata: boolean;
4879
+ autoRotate: boolean;
4880
+ minWidth?: number | undefined;
4881
+ maxWidth?: number | undefined;
4882
+ minHeight?: number | undefined;
4883
+ maxHeight?: number | undefined;
4884
+ aspectRatio?: string | undefined;
4885
+ thumbnailSizes?: {
4886
+ name: string;
4887
+ width: number;
4888
+ height: number;
4889
+ crop: boolean;
4890
+ }[] | undefined;
4891
+ } | undefined;
4892
+ maxVersions?: number | undefined;
4893
+ } | undefined;
4894
+ readonly maskingRule?: {
4895
+ field: string;
4896
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
4897
+ preserveFormat: boolean;
4898
+ preserveLength: boolean;
4899
+ pattern?: string | undefined;
4900
+ roles?: string[] | undefined;
4901
+ exemptRoles?: string[] | undefined;
4902
+ } | undefined;
4903
+ readonly auditTrail?: boolean | undefined;
4904
+ readonly dependencies?: string[] | undefined;
4905
+ readonly cached?: {
4906
+ enabled: boolean;
4907
+ ttl: number;
4908
+ invalidateOn: string[];
4909
+ } | undefined;
4910
+ readonly dataQuality?: {
4911
+ uniqueness: boolean;
4912
+ completeness: number;
4913
+ accuracy?: {
4914
+ source: string;
4915
+ threshold: number;
4916
+ } | undefined;
4917
+ } | undefined;
4918
+ readonly group?: string | undefined;
4919
+ readonly conditionalRequired?: string | undefined;
4920
+ readonly hidden?: boolean | undefined;
4921
+ readonly sortable?: boolean | undefined;
4922
+ readonly inlineHelpText?: string | undefined;
4923
+ readonly trackFeedHistory?: boolean | undefined;
4924
+ readonly caseSensitive?: boolean | undefined;
4925
+ readonly autonumberFormat?: string | undefined;
4926
+ readonly index?: boolean | undefined;
4927
+ readonly externalId?: boolean | undefined;
4928
+ readonly type: "text";
4929
+ };
4930
+ /** Machine name (denormalized for easier querying) */
4931
+ readonly name: {
4932
+ readonly format?: string | undefined;
4933
+ readonly expression?: string | undefined;
4934
+ readonly readonly?: boolean | undefined;
4935
+ readonly defaultValue?: unknown;
4936
+ readonly min?: number | undefined;
4937
+ readonly max?: number | undefined;
4938
+ readonly name?: string | undefined;
4939
+ readonly encryptionConfig?: {
4940
+ enabled: boolean;
4941
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
4942
+ keyManagement: {
4943
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
4944
+ keyId?: string | undefined;
4945
+ rotationPolicy?: {
4946
+ enabled: boolean;
4947
+ frequencyDays: number;
4948
+ retainOldVersions: number;
4949
+ autoRotate: boolean;
4950
+ } | undefined;
4951
+ };
4952
+ scope: "table" | "record" | "field" | "database";
4953
+ deterministicEncryption: boolean;
4954
+ searchableEncryption: boolean;
4955
+ } | undefined;
4956
+ readonly label?: string | undefined;
4957
+ readonly precision?: number | undefined;
4958
+ readonly description?: string | undefined;
4959
+ readonly columnName?: string | undefined;
4960
+ readonly required?: boolean | undefined;
4961
+ readonly searchable?: boolean | undefined;
4962
+ readonly multiple?: boolean | undefined;
4963
+ readonly unique?: boolean | undefined;
4964
+ readonly maxLength?: number | undefined;
4965
+ readonly minLength?: number | undefined;
4966
+ readonly scale?: number | undefined;
4967
+ readonly options?: {
4968
+ label: string;
4969
+ value: string;
4970
+ color?: string | undefined;
4971
+ default?: boolean | undefined;
4972
+ }[] | undefined;
4973
+ readonly reference?: string | undefined;
4974
+ readonly referenceFilters?: string[] | undefined;
4975
+ readonly writeRequiresMasterRead?: boolean | undefined;
4976
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
4977
+ readonly summaryOperations?: {
4978
+ object: string;
4979
+ field: string;
4980
+ function: "count" | "sum" | "avg" | "min" | "max";
4981
+ } | undefined;
4982
+ readonly language?: string | undefined;
4983
+ readonly theme?: string | undefined;
4984
+ readonly lineNumbers?: boolean | undefined;
4985
+ readonly maxRating?: number | undefined;
4986
+ readonly allowHalf?: boolean | undefined;
4987
+ readonly displayMap?: boolean | undefined;
4988
+ readonly allowGeocoding?: boolean | undefined;
4989
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
4990
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
4991
+ readonly allowAlpha?: boolean | undefined;
4992
+ readonly presetColors?: string[] | undefined;
4993
+ readonly step?: number | undefined;
4994
+ readonly showValue?: boolean | undefined;
4995
+ readonly marks?: Record<string, string> | undefined;
4996
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
4997
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
4998
+ readonly displayValue?: boolean | undefined;
4999
+ readonly allowScanning?: boolean | undefined;
5000
+ readonly currencyConfig?: {
5001
+ precision: number;
5002
+ currencyMode: "dynamic" | "fixed";
5003
+ defaultCurrency: string;
5004
+ } | undefined;
5005
+ readonly vectorConfig?: {
5006
+ dimensions: number;
5007
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
5008
+ normalized: boolean;
5009
+ indexed: boolean;
5010
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
5011
+ } | undefined;
5012
+ readonly fileAttachmentConfig?: {
5013
+ virusScan: boolean;
5014
+ virusScanOnUpload: boolean;
5015
+ quarantineOnThreat: boolean;
5016
+ allowMultiple: boolean;
5017
+ allowReplace: boolean;
5018
+ allowDelete: boolean;
5019
+ requireUpload: boolean;
5020
+ extractMetadata: boolean;
5021
+ extractText: boolean;
5022
+ versioningEnabled: boolean;
5023
+ publicRead: boolean;
5024
+ presignedUrlExpiry: number;
5025
+ minSize?: number | undefined;
5026
+ maxSize?: number | undefined;
5027
+ allowedTypes?: string[] | undefined;
5028
+ blockedTypes?: string[] | undefined;
5029
+ allowedMimeTypes?: string[] | undefined;
5030
+ blockedMimeTypes?: string[] | undefined;
5031
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
5032
+ storageProvider?: string | undefined;
5033
+ storageBucket?: string | undefined;
5034
+ storagePrefix?: string | undefined;
5035
+ imageValidation?: {
5036
+ generateThumbnails: boolean;
5037
+ preserveMetadata: boolean;
5038
+ autoRotate: boolean;
5039
+ minWidth?: number | undefined;
5040
+ maxWidth?: number | undefined;
5041
+ minHeight?: number | undefined;
5042
+ maxHeight?: number | undefined;
5043
+ aspectRatio?: string | undefined;
5044
+ thumbnailSizes?: {
5045
+ name: string;
5046
+ width: number;
5047
+ height: number;
5048
+ crop: boolean;
5049
+ }[] | undefined;
5050
+ } | undefined;
5051
+ maxVersions?: number | undefined;
5052
+ } | undefined;
5053
+ readonly maskingRule?: {
5054
+ field: string;
5055
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
5056
+ preserveFormat: boolean;
5057
+ preserveLength: boolean;
5058
+ pattern?: string | undefined;
5059
+ roles?: string[] | undefined;
5060
+ exemptRoles?: string[] | undefined;
5061
+ } | undefined;
5062
+ readonly auditTrail?: boolean | undefined;
5063
+ readonly dependencies?: string[] | undefined;
5064
+ readonly cached?: {
5065
+ enabled: boolean;
5066
+ ttl: number;
5067
+ invalidateOn: string[];
5068
+ } | undefined;
5069
+ readonly dataQuality?: {
5070
+ uniqueness: boolean;
5071
+ completeness: number;
5072
+ accuracy?: {
5073
+ source: string;
5074
+ threshold: number;
5075
+ } | undefined;
5076
+ } | undefined;
5077
+ readonly group?: string | undefined;
5078
+ readonly conditionalRequired?: string | undefined;
5079
+ readonly hidden?: boolean | undefined;
5080
+ readonly sortable?: boolean | undefined;
5081
+ readonly inlineHelpText?: string | undefined;
5082
+ readonly trackFeedHistory?: boolean | undefined;
5083
+ readonly caseSensitive?: boolean | undefined;
5084
+ readonly autonumberFormat?: string | undefined;
5085
+ readonly index?: boolean | undefined;
5086
+ readonly externalId?: boolean | undefined;
5087
+ readonly type: "text";
5088
+ };
5089
+ /** Metadata type (denormalized for easier querying) */
5090
+ readonly type: {
5091
+ readonly format?: string | undefined;
5092
+ readonly expression?: string | undefined;
5093
+ readonly readonly?: boolean | undefined;
5094
+ readonly defaultValue?: unknown;
5095
+ readonly min?: number | undefined;
5096
+ readonly max?: number | undefined;
5097
+ readonly name?: string | undefined;
5098
+ readonly encryptionConfig?: {
5099
+ enabled: boolean;
5100
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
5101
+ keyManagement: {
5102
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
5103
+ keyId?: string | undefined;
5104
+ rotationPolicy?: {
5105
+ enabled: boolean;
5106
+ frequencyDays: number;
5107
+ retainOldVersions: number;
5108
+ autoRotate: boolean;
5109
+ } | undefined;
5110
+ };
5111
+ scope: "table" | "record" | "field" | "database";
5112
+ deterministicEncryption: boolean;
5113
+ searchableEncryption: boolean;
5114
+ } | undefined;
5115
+ readonly label?: string | undefined;
5116
+ readonly precision?: number | undefined;
5117
+ readonly description?: string | undefined;
5118
+ readonly columnName?: string | undefined;
5119
+ readonly required?: boolean | undefined;
5120
+ readonly searchable?: boolean | undefined;
5121
+ readonly multiple?: boolean | undefined;
5122
+ readonly unique?: boolean | undefined;
5123
+ readonly maxLength?: number | undefined;
5124
+ readonly minLength?: number | undefined;
5125
+ readonly scale?: number | undefined;
5126
+ readonly options?: {
5127
+ label: string;
5128
+ value: string;
5129
+ color?: string | undefined;
5130
+ default?: boolean | undefined;
5131
+ }[] | undefined;
5132
+ readonly reference?: string | undefined;
5133
+ readonly referenceFilters?: string[] | undefined;
5134
+ readonly writeRequiresMasterRead?: boolean | undefined;
5135
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
5136
+ readonly summaryOperations?: {
5137
+ object: string;
5138
+ field: string;
5139
+ function: "count" | "sum" | "avg" | "min" | "max";
5140
+ } | undefined;
5141
+ readonly language?: string | undefined;
5142
+ readonly theme?: string | undefined;
5143
+ readonly lineNumbers?: boolean | undefined;
5144
+ readonly maxRating?: number | undefined;
5145
+ readonly allowHalf?: boolean | undefined;
5146
+ readonly displayMap?: boolean | undefined;
5147
+ readonly allowGeocoding?: boolean | undefined;
5148
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
5149
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
5150
+ readonly allowAlpha?: boolean | undefined;
5151
+ readonly presetColors?: string[] | undefined;
5152
+ readonly step?: number | undefined;
5153
+ readonly showValue?: boolean | undefined;
5154
+ readonly marks?: Record<string, string> | undefined;
5155
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
5156
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
5157
+ readonly displayValue?: boolean | undefined;
5158
+ readonly allowScanning?: boolean | undefined;
5159
+ readonly currencyConfig?: {
5160
+ precision: number;
5161
+ currencyMode: "dynamic" | "fixed";
5162
+ defaultCurrency: string;
5163
+ } | undefined;
5164
+ readonly vectorConfig?: {
5165
+ dimensions: number;
5166
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
5167
+ normalized: boolean;
5168
+ indexed: boolean;
5169
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
5170
+ } | undefined;
5171
+ readonly fileAttachmentConfig?: {
5172
+ virusScan: boolean;
5173
+ virusScanOnUpload: boolean;
5174
+ quarantineOnThreat: boolean;
5175
+ allowMultiple: boolean;
5176
+ allowReplace: boolean;
5177
+ allowDelete: boolean;
5178
+ requireUpload: boolean;
5179
+ extractMetadata: boolean;
5180
+ extractText: boolean;
5181
+ versioningEnabled: boolean;
5182
+ publicRead: boolean;
5183
+ presignedUrlExpiry: number;
5184
+ minSize?: number | undefined;
5185
+ maxSize?: number | undefined;
5186
+ allowedTypes?: string[] | undefined;
5187
+ blockedTypes?: string[] | undefined;
5188
+ allowedMimeTypes?: string[] | undefined;
5189
+ blockedMimeTypes?: string[] | undefined;
5190
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
5191
+ storageProvider?: string | undefined;
5192
+ storageBucket?: string | undefined;
5193
+ storagePrefix?: string | undefined;
5194
+ imageValidation?: {
5195
+ generateThumbnails: boolean;
5196
+ preserveMetadata: boolean;
5197
+ autoRotate: boolean;
5198
+ minWidth?: number | undefined;
5199
+ maxWidth?: number | undefined;
5200
+ minHeight?: number | undefined;
5201
+ maxHeight?: number | undefined;
5202
+ aspectRatio?: string | undefined;
5203
+ thumbnailSizes?: {
5204
+ name: string;
5205
+ width: number;
5206
+ height: number;
5207
+ crop: boolean;
5208
+ }[] | undefined;
5209
+ } | undefined;
5210
+ maxVersions?: number | undefined;
5211
+ } | undefined;
5212
+ readonly maskingRule?: {
5213
+ field: string;
5214
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
5215
+ preserveFormat: boolean;
5216
+ preserveLength: boolean;
5217
+ pattern?: string | undefined;
5218
+ roles?: string[] | undefined;
5219
+ exemptRoles?: string[] | undefined;
5220
+ } | undefined;
5221
+ readonly auditTrail?: boolean | undefined;
5222
+ readonly dependencies?: string[] | undefined;
5223
+ readonly cached?: {
5224
+ enabled: boolean;
5225
+ ttl: number;
5226
+ invalidateOn: string[];
5227
+ } | undefined;
5228
+ readonly dataQuality?: {
5229
+ uniqueness: boolean;
5230
+ completeness: number;
5231
+ accuracy?: {
5232
+ source: string;
5233
+ threshold: number;
5234
+ } | undefined;
5235
+ } | undefined;
5236
+ readonly group?: string | undefined;
5237
+ readonly conditionalRequired?: string | undefined;
5238
+ readonly hidden?: boolean | undefined;
5239
+ readonly sortable?: boolean | undefined;
5240
+ readonly inlineHelpText?: string | undefined;
5241
+ readonly trackFeedHistory?: boolean | undefined;
5242
+ readonly caseSensitive?: boolean | undefined;
5243
+ readonly autonumberFormat?: string | undefined;
5244
+ readonly index?: boolean | undefined;
5245
+ readonly externalId?: boolean | undefined;
5246
+ readonly type: "text";
5247
+ };
5248
+ /** Version number at this snapshot */
5249
+ readonly version: {
5250
+ readonly format?: string | undefined;
5251
+ readonly expression?: string | undefined;
5252
+ readonly readonly?: boolean | undefined;
5253
+ readonly defaultValue?: unknown;
5254
+ readonly min?: number | undefined;
5255
+ readonly max?: number | undefined;
5256
+ readonly name?: string | undefined;
5257
+ readonly encryptionConfig?: {
5258
+ enabled: boolean;
5259
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
5260
+ keyManagement: {
5261
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
5262
+ keyId?: string | undefined;
5263
+ rotationPolicy?: {
5264
+ enabled: boolean;
5265
+ frequencyDays: number;
5266
+ retainOldVersions: number;
5267
+ autoRotate: boolean;
5268
+ } | undefined;
5269
+ };
5270
+ scope: "table" | "record" | "field" | "database";
5271
+ deterministicEncryption: boolean;
5272
+ searchableEncryption: boolean;
5273
+ } | undefined;
5274
+ readonly label?: string | undefined;
5275
+ readonly precision?: number | undefined;
5276
+ readonly description?: string | undefined;
5277
+ readonly columnName?: string | undefined;
5278
+ readonly required?: boolean | undefined;
5279
+ readonly searchable?: boolean | undefined;
5280
+ readonly multiple?: boolean | undefined;
5281
+ readonly unique?: boolean | undefined;
5282
+ readonly maxLength?: number | undefined;
5283
+ readonly minLength?: number | undefined;
5284
+ readonly scale?: number | undefined;
5285
+ readonly options?: {
5286
+ label: string;
5287
+ value: string;
5288
+ color?: string | undefined;
5289
+ default?: boolean | undefined;
5290
+ }[] | undefined;
5291
+ readonly reference?: string | undefined;
5292
+ readonly referenceFilters?: string[] | undefined;
5293
+ readonly writeRequiresMasterRead?: boolean | undefined;
5294
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
5295
+ readonly summaryOperations?: {
5296
+ object: string;
5297
+ field: string;
5298
+ function: "count" | "sum" | "avg" | "min" | "max";
5299
+ } | undefined;
5300
+ readonly language?: string | undefined;
5301
+ readonly theme?: string | undefined;
5302
+ readonly lineNumbers?: boolean | undefined;
5303
+ readonly maxRating?: number | undefined;
5304
+ readonly allowHalf?: boolean | undefined;
5305
+ readonly displayMap?: boolean | undefined;
5306
+ readonly allowGeocoding?: boolean | undefined;
5307
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
5308
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
5309
+ readonly allowAlpha?: boolean | undefined;
5310
+ readonly presetColors?: string[] | undefined;
5311
+ readonly step?: number | undefined;
5312
+ readonly showValue?: boolean | undefined;
5313
+ readonly marks?: Record<string, string> | undefined;
5314
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
5315
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
5316
+ readonly displayValue?: boolean | undefined;
5317
+ readonly allowScanning?: boolean | undefined;
5318
+ readonly currencyConfig?: {
5319
+ precision: number;
5320
+ currencyMode: "dynamic" | "fixed";
5321
+ defaultCurrency: string;
5322
+ } | undefined;
5323
+ readonly vectorConfig?: {
5324
+ dimensions: number;
5325
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
5326
+ normalized: boolean;
5327
+ indexed: boolean;
5328
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
5329
+ } | undefined;
5330
+ readonly fileAttachmentConfig?: {
5331
+ virusScan: boolean;
5332
+ virusScanOnUpload: boolean;
5333
+ quarantineOnThreat: boolean;
5334
+ allowMultiple: boolean;
5335
+ allowReplace: boolean;
5336
+ allowDelete: boolean;
5337
+ requireUpload: boolean;
5338
+ extractMetadata: boolean;
5339
+ extractText: boolean;
5340
+ versioningEnabled: boolean;
5341
+ publicRead: boolean;
5342
+ presignedUrlExpiry: number;
5343
+ minSize?: number | undefined;
5344
+ maxSize?: number | undefined;
5345
+ allowedTypes?: string[] | undefined;
5346
+ blockedTypes?: string[] | undefined;
5347
+ allowedMimeTypes?: string[] | undefined;
5348
+ blockedMimeTypes?: string[] | undefined;
5349
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
5350
+ storageProvider?: string | undefined;
5351
+ storageBucket?: string | undefined;
5352
+ storagePrefix?: string | undefined;
5353
+ imageValidation?: {
5354
+ generateThumbnails: boolean;
5355
+ preserveMetadata: boolean;
5356
+ autoRotate: boolean;
5357
+ minWidth?: number | undefined;
5358
+ maxWidth?: number | undefined;
5359
+ minHeight?: number | undefined;
5360
+ maxHeight?: number | undefined;
5361
+ aspectRatio?: string | undefined;
5362
+ thumbnailSizes?: {
5363
+ name: string;
5364
+ width: number;
5365
+ height: number;
5366
+ crop: boolean;
5367
+ }[] | undefined;
5368
+ } | undefined;
5369
+ maxVersions?: number | undefined;
5370
+ } | undefined;
5371
+ readonly maskingRule?: {
5372
+ field: string;
5373
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
5374
+ preserveFormat: boolean;
5375
+ preserveLength: boolean;
5376
+ pattern?: string | undefined;
5377
+ roles?: string[] | undefined;
5378
+ exemptRoles?: string[] | undefined;
5379
+ } | undefined;
5380
+ readonly auditTrail?: boolean | undefined;
5381
+ readonly dependencies?: string[] | undefined;
5382
+ readonly cached?: {
5383
+ enabled: boolean;
5384
+ ttl: number;
5385
+ invalidateOn: string[];
5386
+ } | undefined;
5387
+ readonly dataQuality?: {
5388
+ uniqueness: boolean;
5389
+ completeness: number;
5390
+ accuracy?: {
5391
+ source: string;
5392
+ threshold: number;
5393
+ } | undefined;
5394
+ } | undefined;
5395
+ readonly group?: string | undefined;
5396
+ readonly conditionalRequired?: string | undefined;
5397
+ readonly hidden?: boolean | undefined;
5398
+ readonly sortable?: boolean | undefined;
5399
+ readonly inlineHelpText?: string | undefined;
5400
+ readonly trackFeedHistory?: boolean | undefined;
5401
+ readonly caseSensitive?: boolean | undefined;
5402
+ readonly autonumberFormat?: string | undefined;
5403
+ readonly index?: boolean | undefined;
5404
+ readonly externalId?: boolean | undefined;
5405
+ readonly type: "number";
5406
+ };
5407
+ /** Type of operation that created this history entry */
5408
+ readonly operation_type: {
5409
+ readonly format?: string | undefined;
5410
+ readonly expression?: string | undefined;
5411
+ readonly readonly?: boolean | undefined;
5412
+ readonly defaultValue?: unknown;
5413
+ readonly min?: number | undefined;
5414
+ readonly max?: number | undefined;
5415
+ readonly name?: string | undefined;
5416
+ readonly encryptionConfig?: {
5417
+ enabled: boolean;
5418
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
5419
+ keyManagement: {
5420
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
5421
+ keyId?: string | undefined;
5422
+ rotationPolicy?: {
5423
+ enabled: boolean;
5424
+ frequencyDays: number;
5425
+ retainOldVersions: number;
5426
+ autoRotate: boolean;
5427
+ } | undefined;
5428
+ };
5429
+ scope: "table" | "record" | "field" | "database";
5430
+ deterministicEncryption: boolean;
5431
+ searchableEncryption: boolean;
5432
+ } | undefined;
5433
+ readonly label?: string | undefined;
5434
+ readonly precision?: number | undefined;
5435
+ readonly description?: string | undefined;
5436
+ readonly columnName?: string | undefined;
5437
+ readonly required?: boolean | undefined;
5438
+ readonly searchable?: boolean | undefined;
5439
+ readonly multiple?: boolean | undefined;
5440
+ readonly unique?: boolean | undefined;
5441
+ readonly maxLength?: number | undefined;
5442
+ readonly minLength?: number | undefined;
5443
+ readonly scale?: number | undefined;
5444
+ options: {
5445
+ label: string;
5446
+ value: string;
5447
+ color?: string | undefined;
5448
+ default?: boolean | undefined;
5449
+ }[];
5450
+ readonly reference?: string | undefined;
5451
+ readonly referenceFilters?: string[] | undefined;
5452
+ readonly writeRequiresMasterRead?: boolean | undefined;
5453
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
5454
+ readonly summaryOperations?: {
5455
+ object: string;
5456
+ field: string;
5457
+ function: "count" | "sum" | "avg" | "min" | "max";
5458
+ } | undefined;
5459
+ readonly language?: string | undefined;
5460
+ readonly theme?: string | undefined;
5461
+ readonly lineNumbers?: boolean | undefined;
5462
+ readonly maxRating?: number | undefined;
5463
+ readonly allowHalf?: boolean | undefined;
5464
+ readonly displayMap?: boolean | undefined;
5465
+ readonly allowGeocoding?: boolean | undefined;
5466
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
5467
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
5468
+ readonly allowAlpha?: boolean | undefined;
5469
+ readonly presetColors?: string[] | undefined;
5470
+ readonly step?: number | undefined;
5471
+ readonly showValue?: boolean | undefined;
5472
+ readonly marks?: Record<string, string> | undefined;
5473
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
5474
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
5475
+ readonly displayValue?: boolean | undefined;
5476
+ readonly allowScanning?: boolean | undefined;
5477
+ readonly currencyConfig?: {
5478
+ precision: number;
5479
+ currencyMode: "dynamic" | "fixed";
5480
+ defaultCurrency: string;
5481
+ } | undefined;
5482
+ readonly vectorConfig?: {
5483
+ dimensions: number;
5484
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
5485
+ normalized: boolean;
5486
+ indexed: boolean;
5487
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
5488
+ } | undefined;
5489
+ readonly fileAttachmentConfig?: {
5490
+ virusScan: boolean;
5491
+ virusScanOnUpload: boolean;
5492
+ quarantineOnThreat: boolean;
5493
+ allowMultiple: boolean;
5494
+ allowReplace: boolean;
5495
+ allowDelete: boolean;
5496
+ requireUpload: boolean;
5497
+ extractMetadata: boolean;
5498
+ extractText: boolean;
5499
+ versioningEnabled: boolean;
5500
+ publicRead: boolean;
5501
+ presignedUrlExpiry: number;
5502
+ minSize?: number | undefined;
5503
+ maxSize?: number | undefined;
5504
+ allowedTypes?: string[] | undefined;
5505
+ blockedTypes?: string[] | undefined;
5506
+ allowedMimeTypes?: string[] | undefined;
5507
+ blockedMimeTypes?: string[] | undefined;
5508
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
5509
+ storageProvider?: string | undefined;
5510
+ storageBucket?: string | undefined;
5511
+ storagePrefix?: string | undefined;
5512
+ imageValidation?: {
5513
+ generateThumbnails: boolean;
5514
+ preserveMetadata: boolean;
5515
+ autoRotate: boolean;
5516
+ minWidth?: number | undefined;
5517
+ maxWidth?: number | undefined;
5518
+ minHeight?: number | undefined;
5519
+ maxHeight?: number | undefined;
5520
+ aspectRatio?: string | undefined;
5521
+ thumbnailSizes?: {
5522
+ name: string;
5523
+ width: number;
5524
+ height: number;
5525
+ crop: boolean;
5526
+ }[] | undefined;
5527
+ } | undefined;
5528
+ maxVersions?: number | undefined;
5529
+ } | undefined;
5530
+ readonly maskingRule?: {
5531
+ field: string;
5532
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
5533
+ preserveFormat: boolean;
5534
+ preserveLength: boolean;
5535
+ pattern?: string | undefined;
5536
+ roles?: string[] | undefined;
5537
+ exemptRoles?: string[] | undefined;
5538
+ } | undefined;
5539
+ readonly auditTrail?: boolean | undefined;
5540
+ readonly dependencies?: string[] | undefined;
5541
+ readonly cached?: {
5542
+ enabled: boolean;
5543
+ ttl: number;
5544
+ invalidateOn: string[];
5545
+ } | undefined;
5546
+ readonly dataQuality?: {
5547
+ uniqueness: boolean;
5548
+ completeness: number;
5549
+ accuracy?: {
5550
+ source: string;
5551
+ threshold: number;
5552
+ } | undefined;
5553
+ } | undefined;
5554
+ readonly group?: string | undefined;
5555
+ readonly conditionalRequired?: string | undefined;
5556
+ readonly hidden?: boolean | undefined;
5557
+ readonly sortable?: boolean | undefined;
5558
+ readonly inlineHelpText?: string | undefined;
5559
+ readonly trackFeedHistory?: boolean | undefined;
5560
+ readonly caseSensitive?: boolean | undefined;
5561
+ readonly autonumberFormat?: string | undefined;
5562
+ readonly index?: boolean | undefined;
5563
+ readonly externalId?: boolean | undefined;
5564
+ readonly type: "select";
5565
+ };
5566
+ /** Historical metadata snapshot (JSON payload) */
5567
+ readonly metadata: {
5568
+ readonly format?: string | undefined;
5569
+ readonly expression?: string | undefined;
5570
+ readonly readonly?: boolean | undefined;
5571
+ readonly defaultValue?: unknown;
5572
+ readonly min?: number | undefined;
5573
+ readonly max?: number | undefined;
5574
+ readonly name?: string | undefined;
5575
+ readonly encryptionConfig?: {
5576
+ enabled: boolean;
5577
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
5578
+ keyManagement: {
5579
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
5580
+ keyId?: string | undefined;
5581
+ rotationPolicy?: {
5582
+ enabled: boolean;
5583
+ frequencyDays: number;
5584
+ retainOldVersions: number;
5585
+ autoRotate: boolean;
5586
+ } | undefined;
5587
+ };
5588
+ scope: "table" | "record" | "field" | "database";
5589
+ deterministicEncryption: boolean;
5590
+ searchableEncryption: boolean;
5591
+ } | undefined;
5592
+ readonly label?: string | undefined;
5593
+ readonly precision?: number | undefined;
5594
+ readonly description?: string | undefined;
5595
+ readonly columnName?: string | undefined;
5596
+ readonly required?: boolean | undefined;
5597
+ readonly searchable?: boolean | undefined;
5598
+ readonly multiple?: boolean | undefined;
5599
+ readonly unique?: boolean | undefined;
5600
+ readonly maxLength?: number | undefined;
5601
+ readonly minLength?: number | undefined;
5602
+ readonly scale?: number | undefined;
5603
+ readonly options?: {
5604
+ label: string;
5605
+ value: string;
5606
+ color?: string | undefined;
5607
+ default?: boolean | undefined;
5608
+ }[] | undefined;
5609
+ readonly reference?: string | undefined;
5610
+ readonly referenceFilters?: string[] | undefined;
5611
+ readonly writeRequiresMasterRead?: boolean | undefined;
5612
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
5613
+ readonly summaryOperations?: {
5614
+ object: string;
5615
+ field: string;
5616
+ function: "count" | "sum" | "avg" | "min" | "max";
5617
+ } | undefined;
5618
+ readonly language?: string | undefined;
5619
+ readonly theme?: string | undefined;
5620
+ readonly lineNumbers?: boolean | undefined;
5621
+ readonly maxRating?: number | undefined;
5622
+ readonly allowHalf?: boolean | undefined;
5623
+ readonly displayMap?: boolean | undefined;
5624
+ readonly allowGeocoding?: boolean | undefined;
5625
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
5626
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
5627
+ readonly allowAlpha?: boolean | undefined;
5628
+ readonly presetColors?: string[] | undefined;
5629
+ readonly step?: number | undefined;
5630
+ readonly showValue?: boolean | undefined;
5631
+ readonly marks?: Record<string, string> | undefined;
5632
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
5633
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
5634
+ readonly displayValue?: boolean | undefined;
5635
+ readonly allowScanning?: boolean | undefined;
5636
+ readonly currencyConfig?: {
5637
+ precision: number;
5638
+ currencyMode: "dynamic" | "fixed";
5639
+ defaultCurrency: string;
5640
+ } | undefined;
5641
+ readonly vectorConfig?: {
5642
+ dimensions: number;
5643
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
5644
+ normalized: boolean;
5645
+ indexed: boolean;
5646
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
5647
+ } | undefined;
5648
+ readonly fileAttachmentConfig?: {
5649
+ virusScan: boolean;
5650
+ virusScanOnUpload: boolean;
5651
+ quarantineOnThreat: boolean;
5652
+ allowMultiple: boolean;
5653
+ allowReplace: boolean;
5654
+ allowDelete: boolean;
5655
+ requireUpload: boolean;
5656
+ extractMetadata: boolean;
5657
+ extractText: boolean;
5658
+ versioningEnabled: boolean;
5659
+ publicRead: boolean;
5660
+ presignedUrlExpiry: number;
5661
+ minSize?: number | undefined;
5662
+ maxSize?: number | undefined;
5663
+ allowedTypes?: string[] | undefined;
5664
+ blockedTypes?: string[] | undefined;
5665
+ allowedMimeTypes?: string[] | undefined;
5666
+ blockedMimeTypes?: string[] | undefined;
5667
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
5668
+ storageProvider?: string | undefined;
5669
+ storageBucket?: string | undefined;
5670
+ storagePrefix?: string | undefined;
5671
+ imageValidation?: {
5672
+ generateThumbnails: boolean;
5673
+ preserveMetadata: boolean;
5674
+ autoRotate: boolean;
5675
+ minWidth?: number | undefined;
5676
+ maxWidth?: number | undefined;
5677
+ minHeight?: number | undefined;
5678
+ maxHeight?: number | undefined;
5679
+ aspectRatio?: string | undefined;
5680
+ thumbnailSizes?: {
5681
+ name: string;
5682
+ width: number;
5683
+ height: number;
5684
+ crop: boolean;
5685
+ }[] | undefined;
5686
+ } | undefined;
5687
+ maxVersions?: number | undefined;
5688
+ } | undefined;
5689
+ readonly maskingRule?: {
5690
+ field: string;
5691
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
5692
+ preserveFormat: boolean;
5693
+ preserveLength: boolean;
5694
+ pattern?: string | undefined;
5695
+ roles?: string[] | undefined;
5696
+ exemptRoles?: string[] | undefined;
5697
+ } | undefined;
5698
+ readonly auditTrail?: boolean | undefined;
5699
+ readonly dependencies?: string[] | undefined;
5700
+ readonly cached?: {
5701
+ enabled: boolean;
5702
+ ttl: number;
5703
+ invalidateOn: string[];
5704
+ } | undefined;
5705
+ readonly dataQuality?: {
5706
+ uniqueness: boolean;
5707
+ completeness: number;
5708
+ accuracy?: {
5709
+ source: string;
5710
+ threshold: number;
5711
+ } | undefined;
5712
+ } | undefined;
5713
+ readonly group?: string | undefined;
5714
+ readonly conditionalRequired?: string | undefined;
5715
+ readonly hidden?: boolean | undefined;
5716
+ readonly sortable?: boolean | undefined;
5717
+ readonly inlineHelpText?: string | undefined;
5718
+ readonly trackFeedHistory?: boolean | undefined;
5719
+ readonly caseSensitive?: boolean | undefined;
5720
+ readonly autonumberFormat?: string | undefined;
5721
+ readonly index?: boolean | undefined;
5722
+ readonly externalId?: boolean | undefined;
5723
+ readonly type: "textarea";
5724
+ };
5725
+ /** SHA-256 checksum of metadata content */
5726
+ readonly checksum: {
5727
+ readonly format?: string | undefined;
5728
+ readonly expression?: string | undefined;
5729
+ readonly readonly?: boolean | undefined;
5730
+ readonly defaultValue?: unknown;
5731
+ readonly min?: number | undefined;
5732
+ readonly max?: number | undefined;
5733
+ readonly name?: string | undefined;
5734
+ readonly encryptionConfig?: {
5735
+ enabled: boolean;
5736
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
5737
+ keyManagement: {
5738
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
5739
+ keyId?: string | undefined;
5740
+ rotationPolicy?: {
5741
+ enabled: boolean;
5742
+ frequencyDays: number;
5743
+ retainOldVersions: number;
5744
+ autoRotate: boolean;
5745
+ } | undefined;
5746
+ };
5747
+ scope: "table" | "record" | "field" | "database";
5748
+ deterministicEncryption: boolean;
5749
+ searchableEncryption: boolean;
5750
+ } | undefined;
5751
+ readonly label?: string | undefined;
5752
+ readonly precision?: number | undefined;
5753
+ readonly description?: string | undefined;
5754
+ readonly columnName?: string | undefined;
5755
+ readonly required?: boolean | undefined;
5756
+ readonly searchable?: boolean | undefined;
5757
+ readonly multiple?: boolean | undefined;
5758
+ readonly unique?: boolean | undefined;
5759
+ readonly maxLength?: number | undefined;
5760
+ readonly minLength?: number | undefined;
5761
+ readonly scale?: number | undefined;
5762
+ readonly options?: {
5763
+ label: string;
5764
+ value: string;
5765
+ color?: string | undefined;
5766
+ default?: boolean | undefined;
5767
+ }[] | undefined;
5768
+ readonly reference?: string | undefined;
5769
+ readonly referenceFilters?: string[] | undefined;
5770
+ readonly writeRequiresMasterRead?: boolean | undefined;
5771
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
5772
+ readonly summaryOperations?: {
5773
+ object: string;
5774
+ field: string;
5775
+ function: "count" | "sum" | "avg" | "min" | "max";
5776
+ } | undefined;
5777
+ readonly language?: string | undefined;
5778
+ readonly theme?: string | undefined;
5779
+ readonly lineNumbers?: boolean | undefined;
5780
+ readonly maxRating?: number | undefined;
5781
+ readonly allowHalf?: boolean | undefined;
5782
+ readonly displayMap?: boolean | undefined;
5783
+ readonly allowGeocoding?: boolean | undefined;
5784
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
5785
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
5786
+ readonly allowAlpha?: boolean | undefined;
5787
+ readonly presetColors?: string[] | undefined;
5788
+ readonly step?: number | undefined;
5789
+ readonly showValue?: boolean | undefined;
5790
+ readonly marks?: Record<string, string> | undefined;
5791
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
5792
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
5793
+ readonly displayValue?: boolean | undefined;
5794
+ readonly allowScanning?: boolean | undefined;
5795
+ readonly currencyConfig?: {
5796
+ precision: number;
5797
+ currencyMode: "dynamic" | "fixed";
5798
+ defaultCurrency: string;
5799
+ } | undefined;
5800
+ readonly vectorConfig?: {
5801
+ dimensions: number;
5802
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
5803
+ normalized: boolean;
5804
+ indexed: boolean;
5805
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
5806
+ } | undefined;
5807
+ readonly fileAttachmentConfig?: {
5808
+ virusScan: boolean;
5809
+ virusScanOnUpload: boolean;
5810
+ quarantineOnThreat: boolean;
5811
+ allowMultiple: boolean;
5812
+ allowReplace: boolean;
5813
+ allowDelete: boolean;
5814
+ requireUpload: boolean;
5815
+ extractMetadata: boolean;
5816
+ extractText: boolean;
5817
+ versioningEnabled: boolean;
5818
+ publicRead: boolean;
5819
+ presignedUrlExpiry: number;
5820
+ minSize?: number | undefined;
5821
+ maxSize?: number | undefined;
5822
+ allowedTypes?: string[] | undefined;
5823
+ blockedTypes?: string[] | undefined;
5824
+ allowedMimeTypes?: string[] | undefined;
5825
+ blockedMimeTypes?: string[] | undefined;
5826
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
5827
+ storageProvider?: string | undefined;
5828
+ storageBucket?: string | undefined;
5829
+ storagePrefix?: string | undefined;
5830
+ imageValidation?: {
5831
+ generateThumbnails: boolean;
5832
+ preserveMetadata: boolean;
5833
+ autoRotate: boolean;
5834
+ minWidth?: number | undefined;
5835
+ maxWidth?: number | undefined;
5836
+ minHeight?: number | undefined;
5837
+ maxHeight?: number | undefined;
5838
+ aspectRatio?: string | undefined;
5839
+ thumbnailSizes?: {
5840
+ name: string;
5841
+ width: number;
5842
+ height: number;
5843
+ crop: boolean;
5844
+ }[] | undefined;
5845
+ } | undefined;
5846
+ maxVersions?: number | undefined;
5847
+ } | undefined;
5848
+ readonly maskingRule?: {
5849
+ field: string;
5850
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
5851
+ preserveFormat: boolean;
5852
+ preserveLength: boolean;
5853
+ pattern?: string | undefined;
5854
+ roles?: string[] | undefined;
5855
+ exemptRoles?: string[] | undefined;
5856
+ } | undefined;
5857
+ readonly auditTrail?: boolean | undefined;
5858
+ readonly dependencies?: string[] | undefined;
5859
+ readonly cached?: {
5860
+ enabled: boolean;
5861
+ ttl: number;
5862
+ invalidateOn: string[];
5863
+ } | undefined;
5864
+ readonly dataQuality?: {
5865
+ uniqueness: boolean;
5866
+ completeness: number;
5867
+ accuracy?: {
5868
+ source: string;
5869
+ threshold: number;
5870
+ } | undefined;
5871
+ } | undefined;
5872
+ readonly group?: string | undefined;
5873
+ readonly conditionalRequired?: string | undefined;
5874
+ readonly hidden?: boolean | undefined;
5875
+ readonly sortable?: boolean | undefined;
5876
+ readonly inlineHelpText?: string | undefined;
5877
+ readonly trackFeedHistory?: boolean | undefined;
5878
+ readonly caseSensitive?: boolean | undefined;
5879
+ readonly autonumberFormat?: string | undefined;
5880
+ readonly index?: boolean | undefined;
5881
+ readonly externalId?: boolean | undefined;
5882
+ readonly type: "text";
5883
+ };
5884
+ /** Checksum of the previous version */
5885
+ readonly previous_checksum: {
5886
+ readonly format?: string | undefined;
5887
+ readonly expression?: string | undefined;
5888
+ readonly readonly?: boolean | undefined;
5889
+ readonly defaultValue?: unknown;
5890
+ readonly min?: number | undefined;
5891
+ readonly max?: number | undefined;
5892
+ readonly name?: string | undefined;
5893
+ readonly encryptionConfig?: {
5894
+ enabled: boolean;
5895
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
5896
+ keyManagement: {
5897
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
5898
+ keyId?: string | undefined;
5899
+ rotationPolicy?: {
5900
+ enabled: boolean;
5901
+ frequencyDays: number;
5902
+ retainOldVersions: number;
5903
+ autoRotate: boolean;
5904
+ } | undefined;
5905
+ };
5906
+ scope: "table" | "record" | "field" | "database";
5907
+ deterministicEncryption: boolean;
5908
+ searchableEncryption: boolean;
5909
+ } | undefined;
5910
+ readonly label?: string | undefined;
5911
+ readonly precision?: number | undefined;
5912
+ readonly description?: string | undefined;
5913
+ readonly columnName?: string | undefined;
5914
+ readonly required?: boolean | undefined;
5915
+ readonly searchable?: boolean | undefined;
5916
+ readonly multiple?: boolean | undefined;
5917
+ readonly unique?: boolean | undefined;
5918
+ readonly maxLength?: number | undefined;
5919
+ readonly minLength?: number | undefined;
5920
+ readonly scale?: number | undefined;
5921
+ readonly options?: {
5922
+ label: string;
5923
+ value: string;
5924
+ color?: string | undefined;
5925
+ default?: boolean | undefined;
5926
+ }[] | undefined;
5927
+ readonly reference?: string | undefined;
5928
+ readonly referenceFilters?: string[] | undefined;
5929
+ readonly writeRequiresMasterRead?: boolean | undefined;
5930
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
5931
+ readonly summaryOperations?: {
5932
+ object: string;
5933
+ field: string;
5934
+ function: "count" | "sum" | "avg" | "min" | "max";
5935
+ } | undefined;
5936
+ readonly language?: string | undefined;
5937
+ readonly theme?: string | undefined;
5938
+ readonly lineNumbers?: boolean | undefined;
5939
+ readonly maxRating?: number | undefined;
5940
+ readonly allowHalf?: boolean | undefined;
5941
+ readonly displayMap?: boolean | undefined;
5942
+ readonly allowGeocoding?: boolean | undefined;
5943
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
5944
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
5945
+ readonly allowAlpha?: boolean | undefined;
5946
+ readonly presetColors?: string[] | undefined;
5947
+ readonly step?: number | undefined;
5948
+ readonly showValue?: boolean | undefined;
5949
+ readonly marks?: Record<string, string> | undefined;
5950
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
5951
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
5952
+ readonly displayValue?: boolean | undefined;
5953
+ readonly allowScanning?: boolean | undefined;
5954
+ readonly currencyConfig?: {
5955
+ precision: number;
5956
+ currencyMode: "dynamic" | "fixed";
5957
+ defaultCurrency: string;
5958
+ } | undefined;
5959
+ readonly vectorConfig?: {
5960
+ dimensions: number;
5961
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
5962
+ normalized: boolean;
5963
+ indexed: boolean;
5964
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
5965
+ } | undefined;
5966
+ readonly fileAttachmentConfig?: {
5967
+ virusScan: boolean;
5968
+ virusScanOnUpload: boolean;
5969
+ quarantineOnThreat: boolean;
5970
+ allowMultiple: boolean;
5971
+ allowReplace: boolean;
5972
+ allowDelete: boolean;
5973
+ requireUpload: boolean;
5974
+ extractMetadata: boolean;
5975
+ extractText: boolean;
5976
+ versioningEnabled: boolean;
5977
+ publicRead: boolean;
5978
+ presignedUrlExpiry: number;
5979
+ minSize?: number | undefined;
5980
+ maxSize?: number | undefined;
5981
+ allowedTypes?: string[] | undefined;
5982
+ blockedTypes?: string[] | undefined;
5983
+ allowedMimeTypes?: string[] | undefined;
5984
+ blockedMimeTypes?: string[] | undefined;
5985
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
5986
+ storageProvider?: string | undefined;
5987
+ storageBucket?: string | undefined;
5988
+ storagePrefix?: string | undefined;
5989
+ imageValidation?: {
5990
+ generateThumbnails: boolean;
5991
+ preserveMetadata: boolean;
5992
+ autoRotate: boolean;
5993
+ minWidth?: number | undefined;
5994
+ maxWidth?: number | undefined;
5995
+ minHeight?: number | undefined;
5996
+ maxHeight?: number | undefined;
5997
+ aspectRatio?: string | undefined;
5998
+ thumbnailSizes?: {
5999
+ name: string;
6000
+ width: number;
6001
+ height: number;
6002
+ crop: boolean;
6003
+ }[] | undefined;
6004
+ } | undefined;
6005
+ maxVersions?: number | undefined;
6006
+ } | undefined;
6007
+ readonly maskingRule?: {
6008
+ field: string;
6009
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
6010
+ preserveFormat: boolean;
6011
+ preserveLength: boolean;
6012
+ pattern?: string | undefined;
6013
+ roles?: string[] | undefined;
6014
+ exemptRoles?: string[] | undefined;
6015
+ } | undefined;
6016
+ readonly auditTrail?: boolean | undefined;
6017
+ readonly dependencies?: string[] | undefined;
6018
+ readonly cached?: {
6019
+ enabled: boolean;
6020
+ ttl: number;
6021
+ invalidateOn: string[];
6022
+ } | undefined;
6023
+ readonly dataQuality?: {
6024
+ uniqueness: boolean;
6025
+ completeness: number;
6026
+ accuracy?: {
6027
+ source: string;
6028
+ threshold: number;
6029
+ } | undefined;
6030
+ } | undefined;
6031
+ readonly group?: string | undefined;
6032
+ readonly conditionalRequired?: string | undefined;
6033
+ readonly hidden?: boolean | undefined;
6034
+ readonly sortable?: boolean | undefined;
6035
+ readonly inlineHelpText?: string | undefined;
6036
+ readonly trackFeedHistory?: boolean | undefined;
6037
+ readonly caseSensitive?: boolean | undefined;
6038
+ readonly autonumberFormat?: string | undefined;
6039
+ readonly index?: boolean | undefined;
6040
+ readonly externalId?: boolean | undefined;
6041
+ readonly type: "text";
6042
+ };
6043
+ /** Human-readable description of changes */
6044
+ readonly change_note: {
6045
+ readonly format?: string | undefined;
6046
+ readonly expression?: string | undefined;
6047
+ readonly readonly?: boolean | undefined;
6048
+ readonly defaultValue?: unknown;
6049
+ readonly min?: number | undefined;
6050
+ readonly max?: number | undefined;
6051
+ readonly name?: string | undefined;
6052
+ readonly encryptionConfig?: {
6053
+ enabled: boolean;
6054
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
6055
+ keyManagement: {
6056
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
6057
+ keyId?: string | undefined;
6058
+ rotationPolicy?: {
6059
+ enabled: boolean;
6060
+ frequencyDays: number;
6061
+ retainOldVersions: number;
6062
+ autoRotate: boolean;
6063
+ } | undefined;
6064
+ };
6065
+ scope: "table" | "record" | "field" | "database";
6066
+ deterministicEncryption: boolean;
6067
+ searchableEncryption: boolean;
6068
+ } | undefined;
6069
+ readonly label?: string | undefined;
6070
+ readonly precision?: number | undefined;
6071
+ readonly description?: string | undefined;
6072
+ readonly columnName?: string | undefined;
6073
+ readonly required?: boolean | undefined;
6074
+ readonly searchable?: boolean | undefined;
6075
+ readonly multiple?: boolean | undefined;
6076
+ readonly unique?: boolean | undefined;
6077
+ readonly maxLength?: number | undefined;
6078
+ readonly minLength?: number | undefined;
6079
+ readonly scale?: number | undefined;
6080
+ readonly options?: {
6081
+ label: string;
6082
+ value: string;
6083
+ color?: string | undefined;
6084
+ default?: boolean | undefined;
6085
+ }[] | undefined;
6086
+ readonly reference?: string | undefined;
6087
+ readonly referenceFilters?: string[] | undefined;
6088
+ readonly writeRequiresMasterRead?: boolean | undefined;
6089
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
6090
+ readonly summaryOperations?: {
6091
+ object: string;
6092
+ field: string;
6093
+ function: "count" | "sum" | "avg" | "min" | "max";
6094
+ } | undefined;
6095
+ readonly language?: string | undefined;
6096
+ readonly theme?: string | undefined;
6097
+ readonly lineNumbers?: boolean | undefined;
6098
+ readonly maxRating?: number | undefined;
6099
+ readonly allowHalf?: boolean | undefined;
6100
+ readonly displayMap?: boolean | undefined;
6101
+ readonly allowGeocoding?: boolean | undefined;
6102
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
6103
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
6104
+ readonly allowAlpha?: boolean | undefined;
6105
+ readonly presetColors?: string[] | undefined;
6106
+ readonly step?: number | undefined;
6107
+ readonly showValue?: boolean | undefined;
6108
+ readonly marks?: Record<string, string> | undefined;
6109
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
6110
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
6111
+ readonly displayValue?: boolean | undefined;
6112
+ readonly allowScanning?: boolean | undefined;
6113
+ readonly currencyConfig?: {
6114
+ precision: number;
6115
+ currencyMode: "dynamic" | "fixed";
6116
+ defaultCurrency: string;
6117
+ } | undefined;
6118
+ readonly vectorConfig?: {
6119
+ dimensions: number;
6120
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
6121
+ normalized: boolean;
6122
+ indexed: boolean;
6123
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
6124
+ } | undefined;
6125
+ readonly fileAttachmentConfig?: {
6126
+ virusScan: boolean;
6127
+ virusScanOnUpload: boolean;
6128
+ quarantineOnThreat: boolean;
6129
+ allowMultiple: boolean;
6130
+ allowReplace: boolean;
6131
+ allowDelete: boolean;
6132
+ requireUpload: boolean;
6133
+ extractMetadata: boolean;
6134
+ extractText: boolean;
6135
+ versioningEnabled: boolean;
6136
+ publicRead: boolean;
6137
+ presignedUrlExpiry: number;
6138
+ minSize?: number | undefined;
6139
+ maxSize?: number | undefined;
6140
+ allowedTypes?: string[] | undefined;
6141
+ blockedTypes?: string[] | undefined;
6142
+ allowedMimeTypes?: string[] | undefined;
6143
+ blockedMimeTypes?: string[] | undefined;
6144
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
6145
+ storageProvider?: string | undefined;
6146
+ storageBucket?: string | undefined;
6147
+ storagePrefix?: string | undefined;
6148
+ imageValidation?: {
6149
+ generateThumbnails: boolean;
6150
+ preserveMetadata: boolean;
6151
+ autoRotate: boolean;
6152
+ minWidth?: number | undefined;
6153
+ maxWidth?: number | undefined;
6154
+ minHeight?: number | undefined;
6155
+ maxHeight?: number | undefined;
6156
+ aspectRatio?: string | undefined;
6157
+ thumbnailSizes?: {
6158
+ name: string;
6159
+ width: number;
6160
+ height: number;
6161
+ crop: boolean;
6162
+ }[] | undefined;
6163
+ } | undefined;
6164
+ maxVersions?: number | undefined;
6165
+ } | undefined;
6166
+ readonly maskingRule?: {
6167
+ field: string;
6168
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
6169
+ preserveFormat: boolean;
6170
+ preserveLength: boolean;
6171
+ pattern?: string | undefined;
6172
+ roles?: string[] | undefined;
6173
+ exemptRoles?: string[] | undefined;
6174
+ } | undefined;
6175
+ readonly auditTrail?: boolean | undefined;
6176
+ readonly dependencies?: string[] | undefined;
6177
+ readonly cached?: {
6178
+ enabled: boolean;
6179
+ ttl: number;
6180
+ invalidateOn: string[];
6181
+ } | undefined;
6182
+ readonly dataQuality?: {
6183
+ uniqueness: boolean;
6184
+ completeness: number;
6185
+ accuracy?: {
6186
+ source: string;
6187
+ threshold: number;
6188
+ } | undefined;
6189
+ } | undefined;
6190
+ readonly group?: string | undefined;
6191
+ readonly conditionalRequired?: string | undefined;
6192
+ readonly hidden?: boolean | undefined;
6193
+ readonly sortable?: boolean | undefined;
6194
+ readonly inlineHelpText?: string | undefined;
6195
+ readonly trackFeedHistory?: boolean | undefined;
6196
+ readonly caseSensitive?: boolean | undefined;
6197
+ readonly autonumberFormat?: string | undefined;
6198
+ readonly index?: boolean | undefined;
6199
+ readonly externalId?: boolean | undefined;
6200
+ readonly type: "textarea";
6201
+ };
6202
+ /** Tenant ID for multi-tenant isolation */
6203
+ readonly tenant_id: {
6204
+ readonly format?: string | undefined;
6205
+ readonly expression?: string | undefined;
6206
+ readonly readonly?: boolean | undefined;
6207
+ readonly defaultValue?: unknown;
6208
+ readonly min?: number | undefined;
6209
+ readonly max?: number | undefined;
6210
+ readonly name?: string | undefined;
6211
+ readonly encryptionConfig?: {
6212
+ enabled: boolean;
6213
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
6214
+ keyManagement: {
6215
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
6216
+ keyId?: string | undefined;
6217
+ rotationPolicy?: {
6218
+ enabled: boolean;
6219
+ frequencyDays: number;
6220
+ retainOldVersions: number;
6221
+ autoRotate: boolean;
6222
+ } | undefined;
6223
+ };
6224
+ scope: "table" | "record" | "field" | "database";
6225
+ deterministicEncryption: boolean;
6226
+ searchableEncryption: boolean;
6227
+ } | undefined;
6228
+ readonly label?: string | undefined;
6229
+ readonly precision?: number | undefined;
6230
+ readonly description?: string | undefined;
6231
+ readonly columnName?: string | undefined;
6232
+ readonly required?: boolean | undefined;
6233
+ readonly searchable?: boolean | undefined;
6234
+ readonly multiple?: boolean | undefined;
6235
+ readonly unique?: boolean | undefined;
6236
+ readonly maxLength?: number | undefined;
6237
+ readonly minLength?: number | undefined;
6238
+ readonly scale?: number | undefined;
6239
+ readonly options?: {
6240
+ label: string;
6241
+ value: string;
6242
+ color?: string | undefined;
6243
+ default?: boolean | undefined;
6244
+ }[] | undefined;
6245
+ readonly reference?: string | undefined;
6246
+ readonly referenceFilters?: string[] | undefined;
6247
+ readonly writeRequiresMasterRead?: boolean | undefined;
6248
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
6249
+ readonly summaryOperations?: {
6250
+ object: string;
6251
+ field: string;
6252
+ function: "count" | "sum" | "avg" | "min" | "max";
6253
+ } | undefined;
6254
+ readonly language?: string | undefined;
6255
+ readonly theme?: string | undefined;
6256
+ readonly lineNumbers?: boolean | undefined;
6257
+ readonly maxRating?: number | undefined;
6258
+ readonly allowHalf?: boolean | undefined;
6259
+ readonly displayMap?: boolean | undefined;
6260
+ readonly allowGeocoding?: boolean | undefined;
6261
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
6262
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
6263
+ readonly allowAlpha?: boolean | undefined;
6264
+ readonly presetColors?: string[] | undefined;
6265
+ readonly step?: number | undefined;
6266
+ readonly showValue?: boolean | undefined;
6267
+ readonly marks?: Record<string, string> | undefined;
6268
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
6269
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
6270
+ readonly displayValue?: boolean | undefined;
6271
+ readonly allowScanning?: boolean | undefined;
6272
+ readonly currencyConfig?: {
6273
+ precision: number;
6274
+ currencyMode: "dynamic" | "fixed";
6275
+ defaultCurrency: string;
6276
+ } | undefined;
6277
+ readonly vectorConfig?: {
6278
+ dimensions: number;
6279
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
6280
+ normalized: boolean;
6281
+ indexed: boolean;
6282
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
6283
+ } | undefined;
6284
+ readonly fileAttachmentConfig?: {
6285
+ virusScan: boolean;
6286
+ virusScanOnUpload: boolean;
6287
+ quarantineOnThreat: boolean;
6288
+ allowMultiple: boolean;
6289
+ allowReplace: boolean;
6290
+ allowDelete: boolean;
6291
+ requireUpload: boolean;
6292
+ extractMetadata: boolean;
6293
+ extractText: boolean;
6294
+ versioningEnabled: boolean;
6295
+ publicRead: boolean;
6296
+ presignedUrlExpiry: number;
6297
+ minSize?: number | undefined;
6298
+ maxSize?: number | undefined;
6299
+ allowedTypes?: string[] | undefined;
6300
+ blockedTypes?: string[] | undefined;
6301
+ allowedMimeTypes?: string[] | undefined;
6302
+ blockedMimeTypes?: string[] | undefined;
6303
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
6304
+ storageProvider?: string | undefined;
6305
+ storageBucket?: string | undefined;
6306
+ storagePrefix?: string | undefined;
6307
+ imageValidation?: {
6308
+ generateThumbnails: boolean;
6309
+ preserveMetadata: boolean;
6310
+ autoRotate: boolean;
6311
+ minWidth?: number | undefined;
6312
+ maxWidth?: number | undefined;
6313
+ minHeight?: number | undefined;
6314
+ maxHeight?: number | undefined;
6315
+ aspectRatio?: string | undefined;
6316
+ thumbnailSizes?: {
6317
+ name: string;
6318
+ width: number;
6319
+ height: number;
6320
+ crop: boolean;
6321
+ }[] | undefined;
6322
+ } | undefined;
6323
+ maxVersions?: number | undefined;
6324
+ } | undefined;
6325
+ readonly maskingRule?: {
6326
+ field: string;
6327
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
6328
+ preserveFormat: boolean;
6329
+ preserveLength: boolean;
6330
+ pattern?: string | undefined;
6331
+ roles?: string[] | undefined;
6332
+ exemptRoles?: string[] | undefined;
6333
+ } | undefined;
6334
+ readonly auditTrail?: boolean | undefined;
6335
+ readonly dependencies?: string[] | undefined;
6336
+ readonly cached?: {
6337
+ enabled: boolean;
6338
+ ttl: number;
6339
+ invalidateOn: string[];
6340
+ } | undefined;
6341
+ readonly dataQuality?: {
6342
+ uniqueness: boolean;
6343
+ completeness: number;
6344
+ accuracy?: {
6345
+ source: string;
6346
+ threshold: number;
6347
+ } | undefined;
6348
+ } | undefined;
6349
+ readonly group?: string | undefined;
6350
+ readonly conditionalRequired?: string | undefined;
6351
+ readonly hidden?: boolean | undefined;
6352
+ readonly sortable?: boolean | undefined;
6353
+ readonly inlineHelpText?: string | undefined;
6354
+ readonly trackFeedHistory?: boolean | undefined;
6355
+ readonly caseSensitive?: boolean | undefined;
6356
+ readonly autonumberFormat?: string | undefined;
6357
+ readonly index?: boolean | undefined;
6358
+ readonly externalId?: boolean | undefined;
6359
+ readonly type: "text";
6360
+ };
6361
+ /** User who made this change */
6362
+ readonly recorded_by: {
6363
+ readonly format?: string | undefined;
6364
+ readonly expression?: string | undefined;
6365
+ readonly readonly?: boolean | undefined;
6366
+ readonly defaultValue?: unknown;
6367
+ readonly min?: number | undefined;
6368
+ readonly max?: number | undefined;
6369
+ readonly name?: string | undefined;
6370
+ readonly encryptionConfig?: {
6371
+ enabled: boolean;
6372
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
6373
+ keyManagement: {
6374
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
6375
+ keyId?: string | undefined;
6376
+ rotationPolicy?: {
6377
+ enabled: boolean;
6378
+ frequencyDays: number;
6379
+ retainOldVersions: number;
6380
+ autoRotate: boolean;
6381
+ } | undefined;
6382
+ };
6383
+ scope: "table" | "record" | "field" | "database";
6384
+ deterministicEncryption: boolean;
6385
+ searchableEncryption: boolean;
6386
+ } | undefined;
6387
+ readonly label?: string | undefined;
6388
+ readonly precision?: number | undefined;
6389
+ readonly description?: string | undefined;
6390
+ readonly columnName?: string | undefined;
6391
+ readonly required?: boolean | undefined;
6392
+ readonly searchable?: boolean | undefined;
6393
+ readonly multiple?: boolean | undefined;
6394
+ readonly unique?: boolean | undefined;
6395
+ readonly maxLength?: number | undefined;
6396
+ readonly minLength?: number | undefined;
6397
+ readonly scale?: number | undefined;
6398
+ readonly options?: {
6399
+ label: string;
6400
+ value: string;
6401
+ color?: string | undefined;
6402
+ default?: boolean | undefined;
6403
+ }[] | undefined;
6404
+ readonly reference?: string | undefined;
6405
+ readonly referenceFilters?: string[] | undefined;
6406
+ readonly writeRequiresMasterRead?: boolean | undefined;
6407
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
6408
+ readonly summaryOperations?: {
6409
+ object: string;
6410
+ field: string;
6411
+ function: "count" | "sum" | "avg" | "min" | "max";
6412
+ } | undefined;
6413
+ readonly language?: string | undefined;
6414
+ readonly theme?: string | undefined;
6415
+ readonly lineNumbers?: boolean | undefined;
6416
+ readonly maxRating?: number | undefined;
6417
+ readonly allowHalf?: boolean | undefined;
6418
+ readonly displayMap?: boolean | undefined;
6419
+ readonly allowGeocoding?: boolean | undefined;
6420
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
6421
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
6422
+ readonly allowAlpha?: boolean | undefined;
6423
+ readonly presetColors?: string[] | undefined;
6424
+ readonly step?: number | undefined;
6425
+ readonly showValue?: boolean | undefined;
6426
+ readonly marks?: Record<string, string> | undefined;
6427
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
6428
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
6429
+ readonly displayValue?: boolean | undefined;
6430
+ readonly allowScanning?: boolean | undefined;
6431
+ readonly currencyConfig?: {
6432
+ precision: number;
6433
+ currencyMode: "dynamic" | "fixed";
6434
+ defaultCurrency: string;
6435
+ } | undefined;
6436
+ readonly vectorConfig?: {
6437
+ dimensions: number;
6438
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
6439
+ normalized: boolean;
6440
+ indexed: boolean;
6441
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
6442
+ } | undefined;
6443
+ readonly fileAttachmentConfig?: {
6444
+ virusScan: boolean;
6445
+ virusScanOnUpload: boolean;
6446
+ quarantineOnThreat: boolean;
6447
+ allowMultiple: boolean;
6448
+ allowReplace: boolean;
6449
+ allowDelete: boolean;
6450
+ requireUpload: boolean;
6451
+ extractMetadata: boolean;
6452
+ extractText: boolean;
6453
+ versioningEnabled: boolean;
6454
+ publicRead: boolean;
6455
+ presignedUrlExpiry: number;
6456
+ minSize?: number | undefined;
6457
+ maxSize?: number | undefined;
6458
+ allowedTypes?: string[] | undefined;
6459
+ blockedTypes?: string[] | undefined;
6460
+ allowedMimeTypes?: string[] | undefined;
6461
+ blockedMimeTypes?: string[] | undefined;
6462
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
6463
+ storageProvider?: string | undefined;
6464
+ storageBucket?: string | undefined;
6465
+ storagePrefix?: string | undefined;
6466
+ imageValidation?: {
6467
+ generateThumbnails: boolean;
6468
+ preserveMetadata: boolean;
6469
+ autoRotate: boolean;
6470
+ minWidth?: number | undefined;
6471
+ maxWidth?: number | undefined;
6472
+ minHeight?: number | undefined;
6473
+ maxHeight?: number | undefined;
6474
+ aspectRatio?: string | undefined;
6475
+ thumbnailSizes?: {
6476
+ name: string;
6477
+ width: number;
6478
+ height: number;
6479
+ crop: boolean;
6480
+ }[] | undefined;
6481
+ } | undefined;
6482
+ maxVersions?: number | undefined;
6483
+ } | undefined;
6484
+ readonly maskingRule?: {
6485
+ field: string;
6486
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
6487
+ preserveFormat: boolean;
6488
+ preserveLength: boolean;
6489
+ pattern?: string | undefined;
6490
+ roles?: string[] | undefined;
6491
+ exemptRoles?: string[] | undefined;
6492
+ } | undefined;
6493
+ readonly auditTrail?: boolean | undefined;
6494
+ readonly dependencies?: string[] | undefined;
6495
+ readonly cached?: {
6496
+ enabled: boolean;
6497
+ ttl: number;
6498
+ invalidateOn: string[];
6499
+ } | undefined;
6500
+ readonly dataQuality?: {
6501
+ uniqueness: boolean;
6502
+ completeness: number;
6503
+ accuracy?: {
6504
+ source: string;
6505
+ threshold: number;
6506
+ } | undefined;
6507
+ } | undefined;
6508
+ readonly group?: string | undefined;
6509
+ readonly conditionalRequired?: string | undefined;
6510
+ readonly hidden?: boolean | undefined;
6511
+ readonly sortable?: boolean | undefined;
6512
+ readonly inlineHelpText?: string | undefined;
6513
+ readonly trackFeedHistory?: boolean | undefined;
6514
+ readonly caseSensitive?: boolean | undefined;
6515
+ readonly autonumberFormat?: string | undefined;
6516
+ readonly index?: boolean | undefined;
6517
+ readonly externalId?: boolean | undefined;
6518
+ readonly type: "text";
6519
+ };
6520
+ /** When was this version recorded */
6521
+ readonly recorded_at: {
6522
+ readonly format?: string | undefined;
6523
+ readonly expression?: string | undefined;
6524
+ readonly readonly?: boolean | undefined;
6525
+ readonly defaultValue?: unknown;
6526
+ readonly min?: number | undefined;
6527
+ readonly max?: number | undefined;
6528
+ readonly name?: string | undefined;
6529
+ readonly encryptionConfig?: {
6530
+ enabled: boolean;
6531
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
6532
+ keyManagement: {
6533
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
6534
+ keyId?: string | undefined;
6535
+ rotationPolicy?: {
6536
+ enabled: boolean;
6537
+ frequencyDays: number;
6538
+ retainOldVersions: number;
6539
+ autoRotate: boolean;
6540
+ } | undefined;
6541
+ };
6542
+ scope: "table" | "record" | "field" | "database";
6543
+ deterministicEncryption: boolean;
6544
+ searchableEncryption: boolean;
6545
+ } | undefined;
6546
+ readonly label?: string | undefined;
6547
+ readonly precision?: number | undefined;
6548
+ readonly description?: string | undefined;
6549
+ readonly columnName?: string | undefined;
6550
+ readonly required?: boolean | undefined;
6551
+ readonly searchable?: boolean | undefined;
6552
+ readonly multiple?: boolean | undefined;
6553
+ readonly unique?: boolean | undefined;
6554
+ readonly maxLength?: number | undefined;
6555
+ readonly minLength?: number | undefined;
6556
+ readonly scale?: number | undefined;
6557
+ readonly options?: {
6558
+ label: string;
6559
+ value: string;
6560
+ color?: string | undefined;
6561
+ default?: boolean | undefined;
6562
+ }[] | undefined;
6563
+ readonly reference?: string | undefined;
6564
+ readonly referenceFilters?: string[] | undefined;
6565
+ readonly writeRequiresMasterRead?: boolean | undefined;
6566
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
6567
+ readonly summaryOperations?: {
6568
+ object: string;
6569
+ field: string;
6570
+ function: "count" | "sum" | "avg" | "min" | "max";
6571
+ } | undefined;
6572
+ readonly language?: string | undefined;
6573
+ readonly theme?: string | undefined;
6574
+ readonly lineNumbers?: boolean | undefined;
6575
+ readonly maxRating?: number | undefined;
6576
+ readonly allowHalf?: boolean | undefined;
6577
+ readonly displayMap?: boolean | undefined;
6578
+ readonly allowGeocoding?: boolean | undefined;
6579
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
6580
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
6581
+ readonly allowAlpha?: boolean | undefined;
6582
+ readonly presetColors?: string[] | undefined;
6583
+ readonly step?: number | undefined;
6584
+ readonly showValue?: boolean | undefined;
6585
+ readonly marks?: Record<string, string> | undefined;
6586
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
6587
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
6588
+ readonly displayValue?: boolean | undefined;
6589
+ readonly allowScanning?: boolean | undefined;
6590
+ readonly currencyConfig?: {
6591
+ precision: number;
6592
+ currencyMode: "dynamic" | "fixed";
6593
+ defaultCurrency: string;
6594
+ } | undefined;
6595
+ readonly vectorConfig?: {
6596
+ dimensions: number;
6597
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
6598
+ normalized: boolean;
6599
+ indexed: boolean;
6600
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
6601
+ } | undefined;
6602
+ readonly fileAttachmentConfig?: {
6603
+ virusScan: boolean;
6604
+ virusScanOnUpload: boolean;
6605
+ quarantineOnThreat: boolean;
6606
+ allowMultiple: boolean;
6607
+ allowReplace: boolean;
6608
+ allowDelete: boolean;
6609
+ requireUpload: boolean;
6610
+ extractMetadata: boolean;
6611
+ extractText: boolean;
6612
+ versioningEnabled: boolean;
6613
+ publicRead: boolean;
6614
+ presignedUrlExpiry: number;
6615
+ minSize?: number | undefined;
6616
+ maxSize?: number | undefined;
6617
+ allowedTypes?: string[] | undefined;
6618
+ blockedTypes?: string[] | undefined;
6619
+ allowedMimeTypes?: string[] | undefined;
6620
+ blockedMimeTypes?: string[] | undefined;
6621
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
6622
+ storageProvider?: string | undefined;
6623
+ storageBucket?: string | undefined;
6624
+ storagePrefix?: string | undefined;
6625
+ imageValidation?: {
6626
+ generateThumbnails: boolean;
6627
+ preserveMetadata: boolean;
6628
+ autoRotate: boolean;
6629
+ minWidth?: number | undefined;
6630
+ maxWidth?: number | undefined;
6631
+ minHeight?: number | undefined;
6632
+ maxHeight?: number | undefined;
6633
+ aspectRatio?: string | undefined;
6634
+ thumbnailSizes?: {
6635
+ name: string;
6636
+ width: number;
6637
+ height: number;
6638
+ crop: boolean;
6639
+ }[] | undefined;
6640
+ } | undefined;
6641
+ maxVersions?: number | undefined;
6642
+ } | undefined;
6643
+ readonly maskingRule?: {
6644
+ field: string;
6645
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
6646
+ preserveFormat: boolean;
6647
+ preserveLength: boolean;
6648
+ pattern?: string | undefined;
6649
+ roles?: string[] | undefined;
6650
+ exemptRoles?: string[] | undefined;
6651
+ } | undefined;
6652
+ readonly auditTrail?: boolean | undefined;
6653
+ readonly dependencies?: string[] | undefined;
6654
+ readonly cached?: {
6655
+ enabled: boolean;
6656
+ ttl: number;
6657
+ invalidateOn: string[];
6658
+ } | undefined;
6659
+ readonly dataQuality?: {
6660
+ uniqueness: boolean;
6661
+ completeness: number;
6662
+ accuracy?: {
6663
+ source: string;
6664
+ threshold: number;
6665
+ } | undefined;
6666
+ } | undefined;
6667
+ readonly group?: string | undefined;
6668
+ readonly conditionalRequired?: string | undefined;
6669
+ readonly hidden?: boolean | undefined;
6670
+ readonly sortable?: boolean | undefined;
6671
+ readonly inlineHelpText?: string | undefined;
6672
+ readonly trackFeedHistory?: boolean | undefined;
6673
+ readonly caseSensitive?: boolean | undefined;
6674
+ readonly autonumberFormat?: string | undefined;
6675
+ readonly index?: boolean | undefined;
6676
+ readonly externalId?: boolean | undefined;
6677
+ readonly type: "datetime";
6678
+ };
6679
+ };
6680
+ readonly indexes: [{
6681
+ readonly fields: ["metadata_id", "version"];
6682
+ readonly unique: true;
6683
+ }, {
6684
+ readonly fields: ["metadata_id", "recorded_at"];
6685
+ }, {
6686
+ readonly fields: ["type", "name"];
6687
+ }, {
6688
+ readonly fields: ["recorded_at"];
6689
+ }, {
6690
+ readonly fields: ["operation_type"];
6691
+ }, {
6692
+ readonly fields: ["tenant_id"];
6693
+ }];
6694
+ readonly enable: {
6695
+ readonly trackHistory: false;
6696
+ readonly searchable: false;
6697
+ readonly apiEnabled: true;
6698
+ readonly apiMethods: ["get", "list"];
6699
+ readonly trash: false;
6700
+ };
6701
+ }, "fields">;
6702
+
6703
+ /**
6704
+ * Metadata History API Routes
6705
+ *
6706
+ * REST API endpoints for metadata version history, rollback, and diff operations.
6707
+ * These routes extend the standard metadata API with history-specific functionality.
6708
+ *
6709
+ * Routes:
6710
+ * - GET /api/v1/metadata/:type/:name/history - Get version history
6711
+ * - POST /api/v1/metadata/:type/:name/rollback - Rollback to a specific version
6712
+ * - GET /api/v1/metadata/:type/:name/diff - Compare two versions
6713
+ */
6714
+
6715
+ /**
6716
+ * Register metadata history routes on a Hono app or any HTTP server.
6717
+ *
6718
+ * @param app - The HTTP server/router instance (Hono-compatible)
6719
+ * @param metadataService - The metadata service instance
6720
+ */
6721
+ declare function registerMetadataHistoryRoutes(app: any, // Hono app or compatible
6722
+ metadataService: IMetadataService): void;
6723
+
6724
+ /**
6725
+ * Metadata History Utilities
6726
+ *
6727
+ * Utility functions for metadata versioning and history tracking,
6728
+ * including checksum calculation, JSON normalization, and diff generation.
6729
+ */
6730
+ /**
6731
+ * Calculate SHA-256 checksum of normalized JSON metadata.
6732
+ * Normalizes the JSON by sorting keys and removing whitespace
6733
+ * to ensure consistent checksums across identical content.
6734
+ *
6735
+ * @param metadata - The metadata object to checksum
6736
+ * @returns SHA-256 hex string
6737
+ */
6738
+ declare function calculateChecksum(metadata: unknown): Promise<string>;
6739
+ /**
6740
+ * Generate a simple JSON patch between two objects.
6741
+ * Returns an array of operations showing what changed.
6742
+ *
6743
+ * @param oldObj - Original object
6744
+ * @param newObj - New object
6745
+ * @param path - Current path (for recursion)
6746
+ * @returns Array of change operations
6747
+ */
6748
+ declare function generateSimpleDiff(oldObj: unknown, newObj: unknown, path?: string): Array<{
6749
+ op: string;
6750
+ path: string;
6751
+ value?: unknown;
6752
+ oldValue?: unknown;
6753
+ }>;
6754
+ /**
6755
+ * Generate a human-readable summary of changes.
6756
+ *
6757
+ * @param diff - The diff operations
6758
+ * @returns Human-readable summary
6759
+ */
6760
+ declare function generateDiffSummary(diff: Array<{
6761
+ op: string;
6762
+ path: string;
6763
+ value?: unknown;
6764
+ oldValue?: unknown;
6765
+ }>): string;
6766
+
6767
+ /**
6768
+ * History Cleanup Manager
6769
+ *
6770
+ * Handles automatic cleanup of metadata history records based on
6771
+ * configured retention policies.
6772
+ */
6773
+ declare class HistoryCleanupManager {
6774
+ private policy;
6775
+ private dbLoader;
6776
+ private cleanupTimer?;
6777
+ constructor(policy: MetadataHistoryRetentionPolicy, dbLoader: DatabaseLoader);
6778
+ /**
6779
+ * Start automatic cleanup if enabled in the policy.
6780
+ */
6781
+ start(): void;
6782
+ /**
6783
+ * Stop automatic cleanup.
6784
+ */
6785
+ stop(): void;
6786
+ /**
6787
+ * Run cleanup based on the retention policy.
6788
+ * Removes history records that exceed the configured limits.
6789
+ */
6790
+ runCleanup(): Promise<{
6791
+ deleted: number;
6792
+ errors: number;
6793
+ }>;
6794
+ /**
6795
+ * Delete records matching a filter using the most efficient method available on the driver.
6796
+ */
6797
+ private bulkDeleteByFilter;
6798
+ /**
6799
+ * Delete records by IDs using bulkDelete when available, otherwise one-by-one.
6800
+ */
6801
+ private bulkDeleteByIds;
6802
+ /**
6803
+ * Get cleanup statistics without actually deleting anything.
6804
+ * Useful for previewing what would be cleaned up.
6805
+ */
6806
+ getCleanupStats(): Promise<{
6807
+ recordsByAge: number;
6808
+ recordsByCount: number;
6809
+ total: number;
6810
+ }>;
6811
+ }
6812
+
4231
6813
  /**
4232
6814
  * JSON Metadata Serializer
4233
6815
  *
@@ -4283,4 +6865,4 @@ declare class TypeScriptSerializer implements MetadataSerializer {
4283
6865
  getFormat(): MetadataFormat;
4284
6866
  }
4285
6867
 
4286
- export { DatabaseLoader, type DatabaseLoaderOptions, JSONSerializer, MemoryLoader, type MetadataLoader, MetadataManager, type MetadataManagerOptions, MetadataPlugin, type MetadataSerializer, index as Migration, RemoteLoader, type SerializeOptions, SysMetadataObject, TypeScriptSerializer, type WatchCallback, YAMLSerializer };
6868
+ export { DatabaseLoader, type DatabaseLoaderOptions, HistoryCleanupManager, JSONSerializer, MemoryLoader, type MetadataLoader, MetadataManager, type MetadataManagerOptions, MetadataPlugin, type MetadataSerializer, index as Migration, RemoteLoader, type SerializeOptions, SysMetadataHistoryObject, SysMetadataObject, TypeScriptSerializer, type WatchCallback, YAMLSerializer, calculateChecksum, generateDiffSummary, generateSimpleDiff, registerMetadataHistoryRoutes };