@epilot/sdk 2.3.10 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/definitions/entity-runtime.json +1 -1
  2. package/definitions/entity.json +391 -4
  3. package/dist/apis/access-token.cjs +6 -6
  4. package/dist/apis/access-token.js +1 -1
  5. package/dist/apis/address-suggestions.cjs +6 -6
  6. package/dist/apis/address-suggestions.js +1 -1
  7. package/dist/apis/address.cjs +6 -6
  8. package/dist/apis/address.js +1 -1
  9. package/dist/apis/ai-agents.cjs +6 -6
  10. package/dist/apis/ai-agents.js +1 -1
  11. package/dist/apis/app.cjs +6 -6
  12. package/dist/apis/app.js +1 -1
  13. package/dist/apis/audit-logs.cjs +6 -6
  14. package/dist/apis/audit-logs.js +1 -1
  15. package/dist/apis/automation.cjs +6 -6
  16. package/dist/apis/automation.js +1 -1
  17. package/dist/apis/billing.cjs +6 -6
  18. package/dist/apis/billing.js +1 -1
  19. package/dist/apis/blueprint-manifest.cjs +6 -6
  20. package/dist/apis/blueprint-manifest.js +1 -1
  21. package/dist/apis/configuration-hub.cjs +6 -6
  22. package/dist/apis/configuration-hub.js +1 -1
  23. package/dist/apis/consent.cjs +6 -6
  24. package/dist/apis/consent.js +1 -1
  25. package/dist/apis/customer-portal.cjs +6 -6
  26. package/dist/apis/customer-portal.js +1 -1
  27. package/dist/apis/dashboard.cjs +6 -6
  28. package/dist/apis/dashboard.js +1 -1
  29. package/dist/apis/data-governance.cjs +6 -6
  30. package/dist/apis/data-governance.js +1 -1
  31. package/dist/apis/deduplication.cjs +6 -6
  32. package/dist/apis/deduplication.js +1 -1
  33. package/dist/apis/design.cjs +6 -6
  34. package/dist/apis/design.js +1 -1
  35. package/dist/apis/document.cjs +6 -6
  36. package/dist/apis/document.js +1 -1
  37. package/dist/apis/email-settings.cjs +6 -6
  38. package/dist/apis/email-settings.js +1 -1
  39. package/dist/apis/email-template.cjs +6 -6
  40. package/dist/apis/email-template.js +1 -1
  41. package/dist/apis/entity-mapping.cjs +6 -6
  42. package/dist/apis/entity-mapping.js +1 -1
  43. package/dist/apis/entity.cjs +8 -8
  44. package/dist/apis/entity.d.cts +2 -2
  45. package/dist/apis/entity.d.ts +2 -2
  46. package/dist/apis/entity.js +2 -2
  47. package/dist/apis/environments.cjs +6 -6
  48. package/dist/apis/environments.js +1 -1
  49. package/dist/apis/event-catalog.cjs +6 -6
  50. package/dist/apis/event-catalog.js +1 -1
  51. package/dist/apis/file.cjs +6 -6
  52. package/dist/apis/file.js +1 -1
  53. package/dist/apis/iban.cjs +6 -6
  54. package/dist/apis/iban.js +1 -1
  55. package/dist/apis/integration-toolkit.cjs +6 -6
  56. package/dist/apis/integration-toolkit.js +1 -1
  57. package/dist/apis/journey.cjs +6 -6
  58. package/dist/apis/journey.js +1 -1
  59. package/dist/apis/kanban.cjs +6 -6
  60. package/dist/apis/kanban.js +1 -1
  61. package/dist/apis/message.cjs +6 -6
  62. package/dist/apis/message.js +1 -1
  63. package/dist/apis/metering.cjs +6 -6
  64. package/dist/apis/metering.js +1 -1
  65. package/dist/apis/notes.cjs +6 -6
  66. package/dist/apis/notes.js +1 -1
  67. package/dist/apis/notification.cjs +6 -6
  68. package/dist/apis/notification.js +1 -1
  69. package/dist/apis/organization.cjs +6 -6
  70. package/dist/apis/organization.js +1 -1
  71. package/dist/apis/partner-directory.cjs +6 -6
  72. package/dist/apis/partner-directory.js +1 -1
  73. package/dist/apis/permissions.cjs +6 -6
  74. package/dist/apis/permissions.js +1 -1
  75. package/dist/apis/pricing-tier.cjs +6 -6
  76. package/dist/apis/pricing-tier.js +1 -1
  77. package/dist/apis/pricing.cjs +6 -6
  78. package/dist/apis/pricing.js +1 -1
  79. package/dist/apis/purpose.cjs +6 -6
  80. package/dist/apis/purpose.js +1 -1
  81. package/dist/apis/query.cjs +6 -6
  82. package/dist/apis/query.js +1 -1
  83. package/dist/apis/sandbox.cjs +6 -6
  84. package/dist/apis/sandbox.js +1 -1
  85. package/dist/apis/sharing.cjs +6 -6
  86. package/dist/apis/sharing.js +1 -1
  87. package/dist/apis/submission.cjs +6 -6
  88. package/dist/apis/submission.js +1 -1
  89. package/dist/apis/target.cjs +6 -6
  90. package/dist/apis/target.js +1 -1
  91. package/dist/apis/targeting.cjs +6 -6
  92. package/dist/apis/targeting.js +1 -1
  93. package/dist/apis/template-variables.cjs +6 -6
  94. package/dist/apis/template-variables.js +1 -1
  95. package/dist/apis/user.cjs +6 -6
  96. package/dist/apis/user.js +1 -1
  97. package/dist/apis/validation-rules.cjs +6 -6
  98. package/dist/apis/validation-rules.js +1 -1
  99. package/dist/apis/webhooks.cjs +6 -6
  100. package/dist/apis/webhooks.js +1 -1
  101. package/dist/apis/workflow-definition.cjs +6 -6
  102. package/dist/apis/workflow-definition.js +1 -1
  103. package/dist/apis/workflow.cjs +6 -6
  104. package/dist/apis/workflow.js +1 -1
  105. package/dist/bin/cli.js +1 -1
  106. package/dist/chunk-M6Z6ES3I.js +14 -0
  107. package/dist/{chunk-W7YCS4FU.js → chunk-O2AUZKUD.js} +2 -2
  108. package/dist/{chunk-MDLNRFJV.cjs → chunk-OK74PNHY.cjs} +2 -2
  109. package/dist/chunk-UBQCDPW6.cjs +14 -0
  110. package/dist/entity-H6ESUH3Y.js +7 -0
  111. package/dist/entity-ZVDKWQSF.cjs +7 -0
  112. package/dist/entity-runtime-3J5EDLXP.cjs +5 -0
  113. package/dist/{entity-runtime-D4DV5XRM.js → entity-runtime-LNAZILIN.js} +1 -1
  114. package/dist/{entity.d-ByufVI16.d.cts → entity.d-BHR9dEon.d.cts} +2020 -15
  115. package/dist/{entity.d-ByufVI16.d.ts → entity.d-BHR9dEon.d.ts} +2020 -15
  116. package/dist/index.cjs +10 -10
  117. package/dist/index.d.cts +1 -1
  118. package/dist/index.d.ts +1 -1
  119. package/dist/index.js +2 -2
  120. package/dist/{js-yaml-DLCVPJ7G.js → js-yaml-UPZKYVRY.js} +15 -17
  121. package/docs/entity.md +1156 -40
  122. package/package.json +1 -1
  123. package/dist/chunk-F7W62NKV.js +0 -14
  124. package/dist/chunk-QA2OYK7N.cjs +0 -14
  125. package/dist/entity-CK76MXVN.js +0 -7
  126. package/dist/entity-TFMH5VTZ.cjs +0 -7
  127. package/dist/entity-runtime-DUJTRYLQ.cjs +0 -5
package/docs/entity.md CHANGED
@@ -72,6 +72,9 @@ const { data } = await entityClient.listSchemas(...)
72
72
  - [`deleteEntity`](#deleteentity)
73
73
  - [`autocomplete`](#autocomplete)
74
74
  - [`wipeAllEntities`](#wipeallentities)
75
+ - [`applyChangeset`](#applychangeset)
76
+ - [`dismissChangeset`](#dismisschangeset)
77
+ - [`listChangesets`](#listchangesets)
75
78
 
76
79
  **Activity**
77
80
  - [`createActivity`](#createactivity)
@@ -255,6 +258,12 @@ const { data } = await entityClient.listSchemas(...)
255
258
  - [`ESClusterAssignment`](#esclusterassignment)
256
259
  - [`SettingFlag`](#settingflag)
257
260
  - [`ErrorObject`](#errorobject)
261
+ - [`ChangesetCreator`](#changesetcreator)
262
+ - [`Changeset`](#changeset)
263
+ - [`ChangesetMap`](#changesetmap)
264
+ - [`EditModeConfig`](#editmodeconfig)
265
+ - [`FuzzyConfig`](#fuzzyconfig)
266
+ - [`MatchStrategy`](#matchstrategy)
258
267
 
259
268
  ### `listSchemas`
260
269
 
@@ -1726,7 +1735,8 @@ const { data } = await client.queryEntityGraph(
1726
1735
  }
1727
1736
  ]
1728
1737
  },
1729
- hydrate: false
1738
+ hydrate: false,
1739
+ apply_changesets: false
1730
1740
  },
1731
1741
  )
1732
1742
  ```
@@ -2048,6 +2058,7 @@ const { data } = await client.getEntityV2({
2048
2058
  slug: 'example',
2049
2059
  hydrate: true,
2050
2060
  fields: ['...'],
2061
+ apply_changesets: true,
2051
2062
  })
2052
2063
  ```
2053
2064
 
@@ -2257,6 +2268,7 @@ const { data } = await client.updateEntity(
2257
2268
  fill_activity: true,
2258
2269
  async: true,
2259
2270
  validate: true,
2271
+ direct: true,
2260
2272
  },
2261
2273
  {
2262
2274
  _id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
@@ -2327,6 +2339,7 @@ const { data } = await client.patchEntity(
2327
2339
  dry_run: true,
2328
2340
  async: true,
2329
2341
  validate: true,
2342
+ direct: true,
2330
2343
  },
2331
2344
  {
2332
2345
  _id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
@@ -2630,6 +2643,124 @@ const { data } = await client.attachActivity({
2630
2643
 
2631
2644
  ---
2632
2645
 
2646
+ ### `applyChangeset`
2647
+
2648
+ Applies the proposed value from a pending changeset to the entity attribute
2649
+ and removes the changeset. Used for human approval of pending changes.
2650
+
2651
+ `POST /v1/entity/{slug}/{id}/changesets/{attribute}:apply`
2652
+
2653
+ ```ts
2654
+ const { data } = await client.applyChangeset({
2655
+ slug: 'example',
2656
+ id: '123e4567-e89b-12d3-a456-426614174000',
2657
+ attribute: 'example',
2658
+ })
2659
+ ```
2660
+
2661
+ <details>
2662
+ <summary>Response</summary>
2663
+
2664
+ ```json
2665
+ {
2666
+ "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
2667
+ "_org": "123",
2668
+ "_owners": [
2669
+ {
2670
+ "org_id": "123",
2671
+ "user_id": "123"
2672
+ }
2673
+ ],
2674
+ "_schema": "contact",
2675
+ "_tags": ["example", "mock"],
2676
+ "_created_at": "2021-02-09T12:41:43.662Z",
2677
+ "_updated_at": "2021-02-09T12:41:43.662Z",
2678
+ "_acl": {
2679
+ "view": ["org:456", "org:789"],
2680
+ "edit": ["org:456"],
2681
+ "delete": ["org:456"]
2682
+ },
2683
+ "_manifest": ["123e4567-e89b-12d3-a456-426614174000"]
2684
+ }
2685
+ ```
2686
+
2687
+ </details>
2688
+
2689
+ ---
2690
+
2691
+ ### `dismissChangeset`
2692
+
2693
+ Removes a pending changeset without applying it. The attribute value remains unchanged.
2694
+
2695
+ `POST /v1/entity/{slug}/{id}/changesets/{attribute}:dismiss`
2696
+
2697
+ ```ts
2698
+ const { data } = await client.dismissChangeset(
2699
+ {
2700
+ slug: 'example',
2701
+ id: '123e4567-e89b-12d3-a456-426614174000',
2702
+ attribute: 'example',
2703
+ },
2704
+ {
2705
+ reason: 'string'
2706
+ },
2707
+ )
2708
+ ```
2709
+
2710
+ <details>
2711
+ <summary>Response</summary>
2712
+
2713
+ ```json
2714
+ {
2715
+ "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
2716
+ "_org": "123",
2717
+ "_owners": [
2718
+ {
2719
+ "org_id": "123",
2720
+ "user_id": "123"
2721
+ }
2722
+ ],
2723
+ "_schema": "contact",
2724
+ "_tags": ["example", "mock"],
2725
+ "_created_at": "2021-02-09T12:41:43.662Z",
2726
+ "_updated_at": "2021-02-09T12:41:43.662Z",
2727
+ "_acl": {
2728
+ "view": ["org:456", "org:789"],
2729
+ "edit": ["org:456"],
2730
+ "delete": ["org:456"]
2731
+ },
2732
+ "_manifest": ["123e4567-e89b-12d3-a456-426614174000"]
2733
+ }
2734
+ ```
2735
+
2736
+ </details>
2737
+
2738
+ ---
2739
+
2740
+ ### `listChangesets`
2741
+
2742
+ Returns all pending changesets for an entity.
2743
+
2744
+ `GET /v1/entity/{slug}/{id}/changesets`
2745
+
2746
+ ```ts
2747
+ const { data } = await client.listChangesets({
2748
+ slug: 'example',
2749
+ id: '123e4567-e89b-12d3-a456-426614174000',
2750
+ })
2751
+ ```
2752
+
2753
+ <details>
2754
+ <summary>Response</summary>
2755
+
2756
+ ```json
2757
+ {}
2758
+ ```
2759
+
2760
+ </details>
2761
+
2762
+ ---
2763
+
2633
2764
  ### `getEntityActivityFeed`
2634
2765
 
2635
2766
  Get activity feed for an entity
@@ -4363,6 +4494,23 @@ const { data } = await client.createSchemaAttribute(
4363
4494
  exclude_from_search: false,
4364
4495
  repeatable: true,
4365
4496
  has_primary: true,
4497
+ edit_mode: 'direct',
4498
+ edit_mode_config: {
4499
+ match_strategy: 'exact',
4500
+ fuzzy_config: {
4501
+ type: 'suffix',
4502
+ suffix_length: 0,
4503
+ fields_to_ignore: ['string'],
4504
+ regex_flags: 'string',
4505
+ country_code: 'string',
4506
+ match_on: 'string',
4507
+ key: 'string',
4508
+ mode: 'subset',
4509
+ ordered: true,
4510
+ require_tags_match: true,
4511
+ pattern: 'string'
4512
+ }
4513
+ },
4366
4514
  type: 'string',
4367
4515
  multiline: true,
4368
4516
  rich_text: true,
@@ -4419,6 +4567,23 @@ const { data } = await client.createSchemaAttribute(
4419
4567
  "exclude_from_search": false,
4420
4568
  "repeatable": true,
4421
4569
  "has_primary": true,
4570
+ "edit_mode": "direct",
4571
+ "edit_mode_config": {
4572
+ "match_strategy": "exact",
4573
+ "fuzzy_config": {
4574
+ "type": "suffix",
4575
+ "suffix_length": 0,
4576
+ "fields_to_ignore": ["string"],
4577
+ "regex_flags": "string",
4578
+ "country_code": "string",
4579
+ "match_on": "string",
4580
+ "key": "string",
4581
+ "mode": "subset",
4582
+ "ordered": true,
4583
+ "require_tags_match": true,
4584
+ "pattern": "string"
4585
+ }
4586
+ },
4422
4587
  "type": "string",
4423
4588
  "multiline": true,
4424
4589
  "rich_text": true,
@@ -4490,6 +4655,23 @@ const { data } = await client.getSchemaAttribute({
4490
4655
  "exclude_from_search": false,
4491
4656
  "repeatable": true,
4492
4657
  "has_primary": true,
4658
+ "edit_mode": "direct",
4659
+ "edit_mode_config": {
4660
+ "match_strategy": "exact",
4661
+ "fuzzy_config": {
4662
+ "type": "suffix",
4663
+ "suffix_length": 0,
4664
+ "fields_to_ignore": ["string"],
4665
+ "regex_flags": "string",
4666
+ "country_code": "string",
4667
+ "match_on": "string",
4668
+ "key": "string",
4669
+ "mode": "subset",
4670
+ "ordered": true,
4671
+ "require_tags_match": true,
4672
+ "pattern": "string"
4673
+ }
4674
+ },
4493
4675
  "type": "string",
4494
4676
  "multiline": true,
4495
4677
  "rich_text": true,
@@ -4556,6 +4738,23 @@ const { data } = await client.putSchemaAttribute(
4556
4738
  exclude_from_search: false,
4557
4739
  repeatable: true,
4558
4740
  has_primary: true,
4741
+ edit_mode: 'direct',
4742
+ edit_mode_config: {
4743
+ match_strategy: 'exact',
4744
+ fuzzy_config: {
4745
+ type: 'suffix',
4746
+ suffix_length: 0,
4747
+ fields_to_ignore: ['string'],
4748
+ regex_flags: 'string',
4749
+ country_code: 'string',
4750
+ match_on: 'string',
4751
+ key: 'string',
4752
+ mode: 'subset',
4753
+ ordered: true,
4754
+ require_tags_match: true,
4755
+ pattern: 'string'
4756
+ }
4757
+ },
4559
4758
  type: 'string',
4560
4759
  multiline: true,
4561
4760
  rich_text: true,
@@ -4612,6 +4811,23 @@ const { data } = await client.putSchemaAttribute(
4612
4811
  "exclude_from_search": false,
4613
4812
  "repeatable": true,
4614
4813
  "has_primary": true,
4814
+ "edit_mode": "direct",
4815
+ "edit_mode_config": {
4816
+ "match_strategy": "exact",
4817
+ "fuzzy_config": {
4818
+ "type": "suffix",
4819
+ "suffix_length": 0,
4820
+ "fields_to_ignore": ["string"],
4821
+ "regex_flags": "string",
4822
+ "country_code": "string",
4823
+ "match_on": "string",
4824
+ "key": "string",
4825
+ "mode": "subset",
4826
+ "ordered": true,
4827
+ "require_tags_match": true,
4828
+ "pattern": "string"
4829
+ }
4830
+ },
4615
4831
  "type": "string",
4616
4832
  "multiline": true,
4617
4833
  "rich_text": true,
@@ -4683,6 +4899,23 @@ const { data } = await client.deleteSchemaAttribute({
4683
4899
  "exclude_from_search": false,
4684
4900
  "repeatable": true,
4685
4901
  "has_primary": true,
4902
+ "edit_mode": "direct",
4903
+ "edit_mode_config": {
4904
+ "match_strategy": "exact",
4905
+ "fuzzy_config": {
4906
+ "type": "suffix",
4907
+ "suffix_length": 0,
4908
+ "fields_to_ignore": ["string"],
4909
+ "regex_flags": "string",
4910
+ "country_code": "string",
4911
+ "match_on": "string",
4912
+ "key": "string",
4913
+ "mode": "subset",
4914
+ "ordered": true,
4915
+ "require_tags_match": true,
4916
+ "pattern": "string"
4917
+ }
4918
+ },
4686
4919
  "type": "string",
4687
4920
  "multiline": true,
4688
4921
  "rich_text": true,
@@ -4740,6 +4973,8 @@ const { data } = await client.createSchemaCapability(
4740
4973
  exclude_from_search: false,
4741
4974
  repeatable: true,
4742
4975
  has_primary: true,
4976
+ edit_mode: 'direct',
4977
+ edit_mode_config: { /* ... */ },
4743
4978
  type: 'string',
4744
4979
  multiline: true,
4745
4980
  rich_text: true,
@@ -4777,6 +5012,8 @@ const { data } = await client.createSchemaCapability(
4777
5012
  exclude_from_search: false,
4778
5013
  repeatable: true,
4779
5014
  has_primary: true,
5015
+ edit_mode: 'direct',
5016
+ edit_mode_config: { /* ... */ },
4780
5017
  type: 'link'
4781
5018
  },
4782
5019
  /* ... 33 more */
@@ -4862,6 +5099,8 @@ const { data } = await client.createSchemaCapability(
4862
5099
  "exclude_from_search": false,
4863
5100
  "repeatable": true,
4864
5101
  "has_primary": true,
5102
+ "edit_mode": "direct",
5103
+ "edit_mode_config": {},
4865
5104
  "type": "string",
4866
5105
  "multiline": true,
4867
5106
  "rich_text": true,
@@ -4899,6 +5138,8 @@ const { data } = await client.createSchemaCapability(
4899
5138
  "exclude_from_search": false,
4900
5139
  "repeatable": true,
4901
5140
  "has_primary": true,
5141
+ "edit_mode": "direct",
5142
+ "edit_mode_config": {},
4902
5143
  "type": "link"
4903
5144
  }
4904
5145
  ],
@@ -4998,6 +5239,8 @@ const { data } = await client.getSchemaCapability({
4998
5239
  "exclude_from_search": false,
4999
5240
  "repeatable": true,
5000
5241
  "has_primary": true,
5242
+ "edit_mode": "direct",
5243
+ "edit_mode_config": {},
5001
5244
  "type": "string",
5002
5245
  "multiline": true,
5003
5246
  "rich_text": true,
@@ -5035,6 +5278,8 @@ const { data } = await client.getSchemaCapability({
5035
5278
  "exclude_from_search": false,
5036
5279
  "repeatable": true,
5037
5280
  "has_primary": true,
5281
+ "edit_mode": "direct",
5282
+ "edit_mode_config": {},
5038
5283
  "type": "link"
5039
5284
  }
5040
5285
  ],
@@ -5129,6 +5374,8 @@ const { data } = await client.putSchemaCapability(
5129
5374
  exclude_from_search: false,
5130
5375
  repeatable: true,
5131
5376
  has_primary: true,
5377
+ edit_mode: 'direct',
5378
+ edit_mode_config: { /* ... */ },
5132
5379
  type: 'string',
5133
5380
  multiline: true,
5134
5381
  rich_text: true,
@@ -5166,6 +5413,8 @@ const { data } = await client.putSchemaCapability(
5166
5413
  exclude_from_search: false,
5167
5414
  repeatable: true,
5168
5415
  has_primary: true,
5416
+ edit_mode: 'direct',
5417
+ edit_mode_config: { /* ... */ },
5169
5418
  type: 'link'
5170
5419
  },
5171
5420
  /* ... 33 more */
@@ -5251,6 +5500,8 @@ const { data } = await client.putSchemaCapability(
5251
5500
  "exclude_from_search": false,
5252
5501
  "repeatable": true,
5253
5502
  "has_primary": true,
5503
+ "edit_mode": "direct",
5504
+ "edit_mode_config": {},
5254
5505
  "type": "string",
5255
5506
  "multiline": true,
5256
5507
  "rich_text": true,
@@ -5288,6 +5539,8 @@ const { data } = await client.putSchemaCapability(
5288
5539
  "exclude_from_search": false,
5289
5540
  "repeatable": true,
5290
5541
  "has_primary": true,
5542
+ "edit_mode": "direct",
5543
+ "edit_mode_config": {},
5291
5544
  "type": "link"
5292
5545
  }
5293
5546
  ],
@@ -5387,6 +5640,8 @@ const { data } = await client.deleteSchemaCapability({
5387
5640
  "exclude_from_search": false,
5388
5641
  "repeatable": true,
5389
5642
  "has_primary": true,
5643
+ "edit_mode": "direct",
5644
+ "edit_mode_config": {},
5390
5645
  "type": "string",
5391
5646
  "multiline": true,
5392
5647
  "rich_text": true,
@@ -5424,6 +5679,8 @@ const { data } = await client.deleteSchemaCapability({
5424
5679
  "exclude_from_search": false,
5425
5680
  "repeatable": true,
5426
5681
  "has_primary": true,
5682
+ "edit_mode": "direct",
5683
+ "edit_mode_config": {},
5427
5684
  "type": "link"
5428
5685
  }
5429
5686
  ],
@@ -6289,6 +6546,23 @@ type Attribute = {
6289
6546
  exclude_from_search?: boolean
6290
6547
  repeatable?: boolean
6291
6548
  has_primary?: boolean
6549
+ edit_mode?: "direct" | "external" | "approval"
6550
+ edit_mode_config?: {
6551
+ match_strategy?: "exact" | "fuzzy" | "any"
6552
+ fuzzy_config?: {
6553
+ type: { ... }
6554
+ suffix_length?: { ... }
6555
+ fields_to_ignore?: { ... }
6556
+ regex_flags?: { ... }
6557
+ country_code?: { ... }
6558
+ match_on?: { ... }
6559
+ key?: { ... }
6560
+ mode?: { ... }
6561
+ ordered?: { ... }
6562
+ require_tags_match?: { ... }
6563
+ pattern?: { ... }
6564
+ }
6565
+ }
6292
6566
  type: "string"
6293
6567
  multiline?: boolean
6294
6568
  rich_text?: boolean
@@ -6332,23 +6606,6 @@ type Attribute = {
6332
6606
  explicit_searchable?: boolean
6333
6607
  exclude_from_search?: boolean
6334
6608
  repeatable?: boolean
6335
- has_primary?: boolean
6336
- type: "link"
6337
- } | {
6338
- id?: string
6339
- name: string
6340
- label: string
6341
- placeholder?: string
6342
- hidden?: boolean
6343
- show_in_table?: boolean
6344
- sortable?: boolean
6345
- required?: boolean
6346
- readonly?: boolean
6347
- deprecated?: boolean
6348
- default_value?: unknown
6349
- group?: string
6350
- order?: number
6351
- layout?: string
6352
6609
  // ...
6353
6610
  }
6354
6611
  ```
@@ -6405,6 +6662,23 @@ type BaseAttribute = {
6405
6662
  exclude_from_search?: boolean
6406
6663
  repeatable?: boolean
6407
6664
  has_primary?: boolean
6665
+ edit_mode?: "direct" | "external" | "approval"
6666
+ edit_mode_config?: {
6667
+ match_strategy?: "exact" | "fuzzy" | "any"
6668
+ fuzzy_config?: {
6669
+ type: { ... }
6670
+ suffix_length?: { ... }
6671
+ fields_to_ignore?: { ... }
6672
+ regex_flags?: { ... }
6673
+ country_code?: { ... }
6674
+ match_on?: { ... }
6675
+ key?: { ... }
6676
+ mode?: { ... }
6677
+ ordered?: { ... }
6678
+ require_tags_match?: { ... }
6679
+ pattern?: { ... }
6680
+ }
6681
+ }
6408
6682
  }
6409
6683
  ```
6410
6684
 
@@ -6451,6 +6725,23 @@ type TextAttribute = {
6451
6725
  exclude_from_search?: boolean
6452
6726
  repeatable?: boolean
6453
6727
  has_primary?: boolean
6728
+ edit_mode?: "direct" | "external" | "approval"
6729
+ edit_mode_config?: {
6730
+ match_strategy?: "exact" | "fuzzy" | "any"
6731
+ fuzzy_config?: {
6732
+ type: { ... }
6733
+ suffix_length?: { ... }
6734
+ fields_to_ignore?: { ... }
6735
+ regex_flags?: { ... }
6736
+ country_code?: { ... }
6737
+ match_on?: { ... }
6738
+ key?: { ... }
6739
+ mode?: { ... }
6740
+ ordered?: { ... }
6741
+ require_tags_match?: { ... }
6742
+ pattern?: { ... }
6743
+ }
6744
+ }
6454
6745
  type: "string"
6455
6746
  multiline?: boolean
6456
6747
  rich_text?: boolean
@@ -6501,6 +6792,23 @@ type LinkAttribute = {
6501
6792
  exclude_from_search?: boolean
6502
6793
  repeatable?: boolean
6503
6794
  has_primary?: boolean
6795
+ edit_mode?: "direct" | "external" | "approval"
6796
+ edit_mode_config?: {
6797
+ match_strategy?: "exact" | "fuzzy" | "any"
6798
+ fuzzy_config?: {
6799
+ type: { ... }
6800
+ suffix_length?: { ... }
6801
+ fields_to_ignore?: { ... }
6802
+ regex_flags?: { ... }
6803
+ country_code?: { ... }
6804
+ match_on?: { ... }
6805
+ key?: { ... }
6806
+ mode?: { ... }
6807
+ ordered?: { ... }
6808
+ require_tags_match?: { ... }
6809
+ pattern?: { ... }
6810
+ }
6811
+ }
6504
6812
  type: "link"
6505
6813
  }
6506
6814
  ```
@@ -6548,6 +6856,23 @@ type InternalAttribute = {
6548
6856
  exclude_from_search?: boolean
6549
6857
  repeatable?: boolean
6550
6858
  has_primary?: boolean
6859
+ edit_mode?: "direct" | "external" | "approval"
6860
+ edit_mode_config?: {
6861
+ match_strategy?: "exact" | "fuzzy" | "any"
6862
+ fuzzy_config?: {
6863
+ type: { ... }
6864
+ suffix_length?: { ... }
6865
+ fields_to_ignore?: { ... }
6866
+ regex_flags?: { ... }
6867
+ country_code?: { ... }
6868
+ match_on?: { ... }
6869
+ key?: { ... }
6870
+ mode?: { ... }
6871
+ ordered?: { ... }
6872
+ require_tags_match?: { ... }
6873
+ pattern?: { ... }
6874
+ }
6875
+ }
6551
6876
  type: "internal"
6552
6877
  }
6553
6878
  ```
@@ -6595,6 +6920,23 @@ type BooleanAttribute = {
6595
6920
  exclude_from_search?: boolean
6596
6921
  repeatable?: boolean
6597
6922
  has_primary?: boolean
6923
+ edit_mode?: "direct" | "external" | "approval"
6924
+ edit_mode_config?: {
6925
+ match_strategy?: "exact" | "fuzzy" | "any"
6926
+ fuzzy_config?: {
6927
+ type: { ... }
6928
+ suffix_length?: { ... }
6929
+ fields_to_ignore?: { ... }
6930
+ regex_flags?: { ... }
6931
+ country_code?: { ... }
6932
+ match_on?: { ... }
6933
+ key?: { ... }
6934
+ mode?: { ... }
6935
+ ordered?: { ... }
6936
+ require_tags_match?: { ... }
6937
+ pattern?: { ... }
6938
+ }
6939
+ }
6598
6940
  type: "boolean"
6599
6941
  display_type?: "switch" | "checkbox"
6600
6942
  }
@@ -6643,6 +6985,23 @@ type DateAttribute = {
6643
6985
  exclude_from_search?: boolean
6644
6986
  repeatable?: boolean
6645
6987
  has_primary?: boolean
6988
+ edit_mode?: "direct" | "external" | "approval"
6989
+ edit_mode_config?: {
6990
+ match_strategy?: "exact" | "fuzzy" | "any"
6991
+ fuzzy_config?: {
6992
+ type: { ... }
6993
+ suffix_length?: { ... }
6994
+ fields_to_ignore?: { ... }
6995
+ regex_flags?: { ... }
6996
+ country_code?: { ... }
6997
+ match_on?: { ... }
6998
+ key?: { ... }
6999
+ mode?: { ... }
7000
+ ordered?: { ... }
7001
+ require_tags_match?: { ... }
7002
+ pattern?: { ... }
7003
+ }
7004
+ }
6646
7005
  type: "date" | "datetime"
6647
7006
  }
6648
7007
  ```
@@ -6690,6 +7049,23 @@ type CountryAttribute = {
6690
7049
  exclude_from_search?: boolean
6691
7050
  repeatable?: boolean
6692
7051
  has_primary?: boolean
7052
+ edit_mode?: "direct" | "external" | "approval"
7053
+ edit_mode_config?: {
7054
+ match_strategy?: "exact" | "fuzzy" | "any"
7055
+ fuzzy_config?: {
7056
+ type: { ... }
7057
+ suffix_length?: { ... }
7058
+ fields_to_ignore?: { ... }
7059
+ regex_flags?: { ... }
7060
+ country_code?: { ... }
7061
+ match_on?: { ... }
7062
+ key?: { ... }
7063
+ mode?: { ... }
7064
+ ordered?: { ... }
7065
+ require_tags_match?: { ... }
7066
+ pattern?: { ... }
7067
+ }
7068
+ }
6693
7069
  type: "country"
6694
7070
  }
6695
7071
  ```
@@ -6737,6 +7113,23 @@ type SelectAttribute = {
6737
7113
  exclude_from_search?: boolean
6738
7114
  repeatable?: boolean
6739
7115
  has_primary?: boolean
7116
+ edit_mode?: "direct" | "external" | "approval"
7117
+ edit_mode_config?: {
7118
+ match_strategy?: "exact" | "fuzzy" | "any"
7119
+ fuzzy_config?: {
7120
+ type: { ... }
7121
+ suffix_length?: { ... }
7122
+ fields_to_ignore?: { ... }
7123
+ regex_flags?: { ... }
7124
+ country_code?: { ... }
7125
+ match_on?: { ... }
7126
+ key?: { ... }
7127
+ mode?: { ... }
7128
+ ordered?: { ... }
7129
+ require_tags_match?: { ... }
7130
+ pattern?: { ... }
7131
+ }
7132
+ }
6740
7133
  type: "select" | "radio"
6741
7134
  options?: Array<{
6742
7135
  value: string
@@ -6789,6 +7182,23 @@ type MultiSelectAttribute = {
6789
7182
  exclude_from_search?: boolean
6790
7183
  repeatable?: boolean
6791
7184
  has_primary?: boolean
7185
+ edit_mode?: "direct" | "external" | "approval"
7186
+ edit_mode_config?: {
7187
+ match_strategy?: "exact" | "fuzzy" | "any"
7188
+ fuzzy_config?: {
7189
+ type: { ... }
7190
+ suffix_length?: { ... }
7191
+ fields_to_ignore?: { ... }
7192
+ regex_flags?: { ... }
7193
+ country_code?: { ... }
7194
+ match_on?: { ... }
7195
+ key?: { ... }
7196
+ mode?: { ... }
7197
+ ordered?: { ... }
7198
+ require_tags_match?: { ... }
7199
+ pattern?: { ... }
7200
+ }
7201
+ }
6792
7202
  type: "multiselect" | "checkbox"
6793
7203
  disable_case_sensitive?: boolean
6794
7204
  allow_extra_options?: boolean
@@ -6843,6 +7253,23 @@ type StatusAttribute = {
6843
7253
  exclude_from_search?: boolean
6844
7254
  repeatable?: boolean
6845
7255
  has_primary?: boolean
7256
+ edit_mode?: "direct" | "external" | "approval"
7257
+ edit_mode_config?: {
7258
+ match_strategy?: "exact" | "fuzzy" | "any"
7259
+ fuzzy_config?: {
7260
+ type: { ... }
7261
+ suffix_length?: { ... }
7262
+ fields_to_ignore?: { ... }
7263
+ regex_flags?: { ... }
7264
+ country_code?: { ... }
7265
+ match_on?: { ... }
7266
+ key?: { ... }
7267
+ mode?: { ... }
7268
+ ordered?: { ... }
7269
+ require_tags_match?: { ... }
7270
+ pattern?: { ... }
7271
+ }
7272
+ }
6846
7273
  type: "status"
6847
7274
  options?: Array<string | {
6848
7275
  value: string
@@ -6894,6 +7321,23 @@ type SequenceAttribute = {
6894
7321
  exclude_from_search?: boolean
6895
7322
  repeatable?: boolean
6896
7323
  has_primary?: boolean
7324
+ edit_mode?: "direct" | "external" | "approval"
7325
+ edit_mode_config?: {
7326
+ match_strategy?: "exact" | "fuzzy" | "any"
7327
+ fuzzy_config?: {
7328
+ type: { ... }
7329
+ suffix_length?: { ... }
7330
+ fields_to_ignore?: { ... }
7331
+ regex_flags?: { ... }
7332
+ country_code?: { ... }
7333
+ match_on?: { ... }
7334
+ key?: { ... }
7335
+ mode?: { ... }
7336
+ ordered?: { ... }
7337
+ require_tags_match?: { ... }
7338
+ pattern?: { ... }
7339
+ }
7340
+ }
6897
7341
  type: "sequence"
6898
7342
  prefix?: string
6899
7343
  start_number?: number
@@ -6943,6 +7387,23 @@ type FileAttribute = {
6943
7387
  exclude_from_search?: boolean
6944
7388
  repeatable?: boolean
6945
7389
  has_primary?: boolean
7390
+ edit_mode?: "direct" | "external" | "approval"
7391
+ edit_mode_config?: {
7392
+ match_strategy?: "exact" | "fuzzy" | "any"
7393
+ fuzzy_config?: {
7394
+ type: { ... }
7395
+ suffix_length?: { ... }
7396
+ fields_to_ignore?: { ... }
7397
+ regex_flags?: { ... }
7398
+ country_code?: { ... }
7399
+ match_on?: { ... }
7400
+ key?: { ... }
7401
+ mode?: { ... }
7402
+ ordered?: { ... }
7403
+ require_tags_match?: { ... }
7404
+ pattern?: { ... }
7405
+ }
7406
+ }
6946
7407
  type: "image" | "file"
6947
7408
  multiple?: boolean
6948
7409
  allowed_extensions?: string[]
@@ -6996,6 +7457,23 @@ type CurrencyAttribute = {
6996
7457
  exclude_from_search?: boolean
6997
7458
  repeatable?: boolean
6998
7459
  has_primary?: boolean
7460
+ edit_mode?: "direct" | "external" | "approval"
7461
+ edit_mode_config?: {
7462
+ match_strategy?: "exact" | "fuzzy" | "any"
7463
+ fuzzy_config?: {
7464
+ type: { ... }
7465
+ suffix_length?: { ... }
7466
+ fields_to_ignore?: { ... }
7467
+ regex_flags?: { ... }
7468
+ country_code?: { ... }
7469
+ match_on?: { ... }
7470
+ key?: { ... }
7471
+ mode?: { ... }
7472
+ ordered?: { ... }
7473
+ require_tags_match?: { ... }
7474
+ pattern?: { ... }
7475
+ }
7476
+ }
6999
7477
  type: "currency"
7000
7478
  currency_selector_only?: boolean
7001
7479
  currency: Array<{
@@ -7074,12 +7552,28 @@ type RelationAttribute = {
7074
7552
  exclude_from_search?: boolean
7075
7553
  repeatable?: boolean
7076
7554
  has_primary?: boolean
7555
+ edit_mode?: "list-view"
7556
+ edit_mode_config?: {
7557
+ match_strategy?: "exact" | "fuzzy" | "any"
7558
+ fuzzy_config?: {
7559
+ type: { ... }
7560
+ suffix_length?: { ... }
7561
+ fields_to_ignore?: { ... }
7562
+ regex_flags?: { ... }
7563
+ country_code?: { ... }
7564
+ match_on?: { ... }
7565
+ key?: { ... }
7566
+ mode?: { ... }
7567
+ ordered?: { ... }
7568
+ require_tags_match?: { ... }
7569
+ pattern?: { ... }
7570
+ }
7571
+ }
7077
7572
  type: "relation"
7078
7573
  relation_type?: "has_many" | "has_one"
7079
7574
  reverse_attributes?: Record<string, string>
7080
7575
  relation_affinity_mode?: "weak" | "strong"
7081
7576
  enable_relation_picker?: boolean
7082
- edit_mode?: "list-view"
7083
7577
  details_view_mode_enabled?: boolean
7084
7578
  relation_picker_filter?: {
7085
7579
  q: string
@@ -7150,6 +7644,23 @@ type UserRelationAttribute = {
7150
7644
  exclude_from_search?: boolean
7151
7645
  repeatable?: boolean
7152
7646
  has_primary?: boolean
7647
+ edit_mode?: "direct" | "external" | "approval"
7648
+ edit_mode_config?: {
7649
+ match_strategy?: "exact" | "fuzzy" | "any"
7650
+ fuzzy_config?: {
7651
+ type: { ... }
7652
+ suffix_length?: { ... }
7653
+ fields_to_ignore?: { ... }
7654
+ regex_flags?: { ... }
7655
+ country_code?: { ... }
7656
+ match_on?: { ... }
7657
+ key?: { ... }
7658
+ mode?: { ... }
7659
+ ordered?: { ... }
7660
+ require_tags_match?: { ... }
7661
+ pattern?: { ... }
7662
+ }
7663
+ }
7153
7664
  type: "relation_user"
7154
7665
  multiple?: boolean
7155
7666
  }
@@ -7198,6 +7709,23 @@ type PartnerOrganisationAttribute = {
7198
7709
  exclude_from_search?: boolean
7199
7710
  repeatable?: boolean
7200
7711
  has_primary?: boolean
7712
+ edit_mode?: "direct" | "external" | "approval"
7713
+ edit_mode_config?: {
7714
+ match_strategy?: "exact" | "fuzzy" | "any"
7715
+ fuzzy_config?: {
7716
+ type: { ... }
7717
+ suffix_length?: { ... }
7718
+ fields_to_ignore?: { ... }
7719
+ regex_flags?: { ... }
7720
+ country_code?: { ... }
7721
+ match_on?: { ... }
7722
+ key?: { ... }
7723
+ mode?: { ... }
7724
+ ordered?: { ... }
7725
+ require_tags_match?: { ... }
7726
+ pattern?: { ... }
7727
+ }
7728
+ }
7201
7729
  type: "partner_organisation"
7202
7730
  }
7203
7731
  ```
@@ -7245,6 +7773,23 @@ type PortalAccessAttribute = {
7245
7773
  exclude_from_search?: boolean
7246
7774
  repeatable?: boolean
7247
7775
  has_primary?: boolean
7776
+ edit_mode?: "direct" | "external" | "approval"
7777
+ edit_mode_config?: {
7778
+ match_strategy?: "exact" | "fuzzy" | "any"
7779
+ fuzzy_config?: {
7780
+ type: { ... }
7781
+ suffix_length?: { ... }
7782
+ fields_to_ignore?: { ... }
7783
+ regex_flags?: { ... }
7784
+ country_code?: { ... }
7785
+ match_on?: { ... }
7786
+ key?: { ... }
7787
+ mode?: { ... }
7788
+ ordered?: { ... }
7789
+ require_tags_match?: { ... }
7790
+ pattern?: { ... }
7791
+ }
7792
+ }
7248
7793
  type: "portal_access"
7249
7794
  }
7250
7795
  ```
@@ -7317,6 +7862,23 @@ type AddressAttribute = {
7317
7862
  exclude_from_search?: boolean
7318
7863
  repeatable?: boolean
7319
7864
  has_primary?: boolean
7865
+ edit_mode?: "direct" | "external" | "approval"
7866
+ edit_mode_config?: {
7867
+ match_strategy?: "exact" | "fuzzy" | "any"
7868
+ fuzzy_config?: {
7869
+ type: { ... }
7870
+ suffix_length?: { ... }
7871
+ fields_to_ignore?: { ... }
7872
+ regex_flags?: { ... }
7873
+ country_code?: { ... }
7874
+ match_on?: { ... }
7875
+ key?: { ... }
7876
+ mode?: { ... }
7877
+ ordered?: { ... }
7878
+ require_tags_match?: { ... }
7879
+ pattern?: { ... }
7880
+ }
7881
+ }
7320
7882
  type: "address"
7321
7883
  default_address_fields?: string[]
7322
7884
  }
@@ -7365,6 +7927,23 @@ type AddressRelationAttribute = {
7365
7927
  exclude_from_search?: boolean
7366
7928
  repeatable?: boolean
7367
7929
  has_primary?: boolean
7930
+ edit_mode?: "direct" | "external" | "approval"
7931
+ edit_mode_config?: {
7932
+ match_strategy?: "exact" | "fuzzy" | "any"
7933
+ fuzzy_config?: {
7934
+ type: { ... }
7935
+ suffix_length?: { ... }
7936
+ fields_to_ignore?: { ... }
7937
+ regex_flags?: { ... }
7938
+ country_code?: { ... }
7939
+ match_on?: { ... }
7940
+ key?: { ... }
7941
+ mode?: { ... }
7942
+ ordered?: { ... }
7943
+ require_tags_match?: { ... }
7944
+ pattern?: { ... }
7945
+ }
7946
+ }
7368
7947
  type: "relation_address"
7369
7948
  default_address_fields?: string[]
7370
7949
  }
@@ -7413,6 +7992,23 @@ type PaymentMethodRelationAttribute = {
7413
7992
  exclude_from_search?: boolean
7414
7993
  repeatable?: boolean
7415
7994
  has_primary?: boolean
7995
+ edit_mode?: "direct" | "external" | "approval"
7996
+ edit_mode_config?: {
7997
+ match_strategy?: "exact" | "fuzzy" | "any"
7998
+ fuzzy_config?: {
7999
+ type: { ... }
8000
+ suffix_length?: { ... }
8001
+ fields_to_ignore?: { ... }
8002
+ regex_flags?: { ... }
8003
+ country_code?: { ... }
8004
+ match_on?: { ... }
8005
+ key?: { ... }
8006
+ mode?: { ... }
8007
+ ordered?: { ... }
8008
+ require_tags_match?: { ... }
8009
+ pattern?: { ... }
8010
+ }
8011
+ }
7416
8012
  type: "relation_payment_method"
7417
8013
  }
7418
8014
  ```
@@ -7460,6 +8056,23 @@ type InvitationEmailAttribute = {
7460
8056
  exclude_from_search?: boolean
7461
8057
  repeatable?: boolean
7462
8058
  has_primary?: boolean
8059
+ edit_mode?: "direct" | "external" | "approval"
8060
+ edit_mode_config?: {
8061
+ match_strategy?: "exact" | "fuzzy" | "any"
8062
+ fuzzy_config?: {
8063
+ type: { ... }
8064
+ suffix_length?: { ... }
8065
+ fields_to_ignore?: { ... }
8066
+ regex_flags?: { ... }
8067
+ country_code?: { ... }
8068
+ match_on?: { ... }
8069
+ key?: { ... }
8070
+ mode?: { ... }
8071
+ ordered?: { ... }
8072
+ require_tags_match?: { ... }
8073
+ pattern?: { ... }
8074
+ }
8075
+ }
7463
8076
  type: "invitation_email"
7464
8077
  }
7465
8078
  ```
@@ -7507,6 +8120,23 @@ type AutomationAttribute = {
7507
8120
  exclude_from_search?: boolean
7508
8121
  repeatable?: boolean
7509
8122
  has_primary?: boolean
8123
+ edit_mode?: "direct" | "external" | "approval"
8124
+ edit_mode_config?: {
8125
+ match_strategy?: "exact" | "fuzzy" | "any"
8126
+ fuzzy_config?: {
8127
+ type: { ... }
8128
+ suffix_length?: { ... }
8129
+ fields_to_ignore?: { ... }
8130
+ regex_flags?: { ... }
8131
+ country_code?: { ... }
8132
+ match_on?: { ... }
8133
+ key?: { ... }
8134
+ mode?: { ... }
8135
+ ordered?: { ... }
8136
+ require_tags_match?: { ... }
8137
+ pattern?: { ... }
8138
+ }
8139
+ }
7510
8140
  type: "automation"
7511
8141
  }
7512
8142
  ```
@@ -7554,6 +8184,23 @@ type InternalUserAttribute = {
7554
8184
  exclude_from_search?: boolean
7555
8185
  repeatable?: boolean
7556
8186
  has_primary?: boolean
8187
+ edit_mode?: "direct" | "external" | "approval"
8188
+ edit_mode_config?: {
8189
+ match_strategy?: "exact" | "fuzzy" | "any"
8190
+ fuzzy_config?: {
8191
+ type: { ... }
8192
+ suffix_length?: { ... }
8193
+ fields_to_ignore?: { ... }
8194
+ regex_flags?: { ... }
8195
+ country_code?: { ... }
8196
+ match_on?: { ... }
8197
+ key?: { ... }
8198
+ mode?: { ... }
8199
+ ordered?: { ... }
8200
+ require_tags_match?: { ... }
8201
+ pattern?: { ... }
8202
+ }
8203
+ }
7557
8204
  type: "internal_user"
7558
8205
  }
7559
8206
  ```
@@ -7601,6 +8248,23 @@ type PurposeAttribute = {
7601
8248
  exclude_from_search?: boolean
7602
8249
  repeatable?: boolean
7603
8250
  has_primary?: boolean
8251
+ edit_mode?: "direct" | "external" | "approval"
8252
+ edit_mode_config?: {
8253
+ match_strategy?: "exact" | "fuzzy" | "any"
8254
+ fuzzy_config?: {
8255
+ type: { ... }
8256
+ suffix_length?: { ... }
8257
+ fields_to_ignore?: { ... }
8258
+ regex_flags?: { ... }
8259
+ country_code?: { ... }
8260
+ match_on?: { ... }
8261
+ key?: { ... }
8262
+ mode?: { ... }
8263
+ ordered?: { ... }
8264
+ require_tags_match?: { ... }
8265
+ pattern?: { ... }
8266
+ }
8267
+ }
7604
8268
  type: "purpose"
7605
8269
  }
7606
8270
  ```
@@ -7648,6 +8312,23 @@ type RepeatableAttribute = {
7648
8312
  exclude_from_search?: boolean
7649
8313
  repeatable?: boolean
7650
8314
  has_primary?: boolean
8315
+ edit_mode?: "direct" | "external" | "approval"
8316
+ edit_mode_config?: {
8317
+ match_strategy?: "exact" | "fuzzy" | "any"
8318
+ fuzzy_config?: {
8319
+ type: { ... }
8320
+ suffix_length?: { ... }
8321
+ fields_to_ignore?: { ... }
8322
+ regex_flags?: { ... }
8323
+ country_code?: { ... }
8324
+ match_on?: { ... }
8325
+ key?: { ... }
8326
+ mode?: { ... }
8327
+ ordered?: { ... }
8328
+ require_tags_match?: { ... }
8329
+ pattern?: { ... }
8330
+ }
8331
+ }
7651
8332
  }
7652
8333
  ```
7653
8334
 
@@ -7694,6 +8375,23 @@ type TagsAttribute = {
7694
8375
  exclude_from_search?: boolean
7695
8376
  repeatable?: boolean
7696
8377
  has_primary?: boolean
8378
+ edit_mode?: "direct" | "external" | "approval"
8379
+ edit_mode_config?: {
8380
+ match_strategy?: "exact" | "fuzzy" | "any"
8381
+ fuzzy_config?: {
8382
+ type: { ... }
8383
+ suffix_length?: { ... }
8384
+ fields_to_ignore?: { ... }
8385
+ regex_flags?: { ... }
8386
+ country_code?: { ... }
8387
+ match_on?: { ... }
8388
+ key?: { ... }
8389
+ mode?: { ... }
8390
+ ordered?: { ... }
8391
+ require_tags_match?: { ... }
8392
+ pattern?: { ... }
8393
+ }
8394
+ }
7697
8395
  type: "tags"
7698
8396
  options?: string[]
7699
8397
  suggestions?: string[]
@@ -7743,6 +8441,23 @@ type MessageEmailAddressAttribute = {
7743
8441
  exclude_from_search?: boolean
7744
8442
  repeatable?: boolean
7745
8443
  has_primary?: boolean
8444
+ edit_mode?: "direct" | "external" | "approval"
8445
+ edit_mode_config?: {
8446
+ match_strategy?: "exact" | "fuzzy" | "any"
8447
+ fuzzy_config?: {
8448
+ type: { ... }
8449
+ suffix_length?: { ... }
8450
+ fields_to_ignore?: { ... }
8451
+ regex_flags?: { ... }
8452
+ country_code?: { ... }
8453
+ match_on?: { ... }
8454
+ key?: { ... }
8455
+ mode?: { ... }
8456
+ ordered?: { ... }
8457
+ require_tags_match?: { ... }
8458
+ pattern?: { ... }
8459
+ }
8460
+ }
7746
8461
  type: "message_email_address"
7747
8462
  address?: string
7748
8463
  send_status?: string
@@ -7793,6 +8508,23 @@ type NumberAttribute = {
7793
8508
  exclude_from_search?: boolean
7794
8509
  repeatable?: boolean
7795
8510
  has_primary?: boolean
8511
+ edit_mode?: "direct" | "external" | "approval"
8512
+ edit_mode_config?: {
8513
+ match_strategy?: "exact" | "fuzzy" | "any"
8514
+ fuzzy_config?: {
8515
+ type: { ... }
8516
+ suffix_length?: { ... }
8517
+ fields_to_ignore?: { ... }
8518
+ regex_flags?: { ... }
8519
+ country_code?: { ... }
8520
+ match_on?: { ... }
8521
+ key?: { ... }
8522
+ mode?: { ... }
8523
+ ordered?: { ... }
8524
+ require_tags_match?: { ... }
8525
+ pattern?: { ... }
8526
+ }
8527
+ }
7796
8528
  type: "number"
7797
8529
  data_type?: "number" | "string"
7798
8530
  format?: string
@@ -7843,6 +8575,23 @@ type TableAttribute = {
7843
8575
  exclude_from_search?: boolean
7844
8576
  repeatable?: boolean
7845
8577
  has_primary?: boolean
8578
+ edit_mode?: "direct" | "external" | "approval"
8579
+ edit_mode_config?: {
8580
+ match_strategy?: "exact" | "fuzzy" | "any"
8581
+ fuzzy_config?: {
8582
+ type: { ... }
8583
+ suffix_length?: { ... }
8584
+ fields_to_ignore?: { ... }
8585
+ regex_flags?: { ... }
8586
+ country_code?: { ... }
8587
+ match_on?: { ... }
8588
+ key?: { ... }
8589
+ mode?: { ... }
8590
+ ordered?: { ... }
8591
+ require_tags_match?: { ... }
8592
+ pattern?: { ... }
8593
+ }
8594
+ }
7846
8595
  type: "table"
7847
8596
  columns?: Array<{
7848
8597
  name: string
@@ -7905,6 +8654,23 @@ type ConsentAttribute = {
7905
8654
  exclude_from_search?: boolean
7906
8655
  repeatable?: boolean
7907
8656
  has_primary?: boolean
8657
+ edit_mode?: "direct" | "external" | "approval"
8658
+ edit_mode_config?: {
8659
+ match_strategy?: "exact" | "fuzzy" | "any"
8660
+ fuzzy_config?: {
8661
+ type: { ... }
8662
+ suffix_length?: { ... }
8663
+ fields_to_ignore?: { ... }
8664
+ regex_flags?: { ... }
8665
+ country_code?: { ... }
8666
+ match_on?: { ... }
8667
+ key?: { ... }
8668
+ mode?: { ... }
8669
+ ordered?: { ... }
8670
+ require_tags_match?: { ... }
8671
+ pattern?: { ... }
8672
+ }
8673
+ }
7908
8674
  type: "consent"
7909
8675
  topic: string
7910
8676
  identifiers?: string[]
@@ -7954,6 +8720,23 @@ type OrderedListAttribute = {
7954
8720
  exclude_from_search?: boolean
7955
8721
  repeatable?: boolean
7956
8722
  has_primary?: boolean
8723
+ edit_mode?: "direct" | "external" | "approval"
8724
+ edit_mode_config?: {
8725
+ match_strategy?: "exact" | "fuzzy" | "any"
8726
+ fuzzy_config?: {
8727
+ type: { ... }
8728
+ suffix_length?: { ... }
8729
+ fields_to_ignore?: { ... }
8730
+ regex_flags?: { ... }
8731
+ country_code?: { ... }
8732
+ match_on?: { ... }
8733
+ key?: { ... }
8734
+ mode?: { ... }
8735
+ ordered?: { ... }
8736
+ require_tags_match?: { ... }
8737
+ pattern?: { ... }
8738
+ }
8739
+ }
7957
8740
  type: "ordered_list"
7958
8741
  }
7959
8742
  ```
@@ -8001,6 +8784,23 @@ type EmailAttribute = {
8001
8784
  exclude_from_search?: boolean
8002
8785
  repeatable?: boolean
8003
8786
  has_primary?: boolean
8787
+ edit_mode?: "direct" | "external" | "approval"
8788
+ edit_mode_config?: {
8789
+ match_strategy?: "exact" | "fuzzy" | "any"
8790
+ fuzzy_config?: {
8791
+ type: { ... }
8792
+ suffix_length?: { ... }
8793
+ fields_to_ignore?: { ... }
8794
+ regex_flags?: { ... }
8795
+ country_code?: { ... }
8796
+ match_on?: { ... }
8797
+ key?: { ... }
8798
+ mode?: { ... }
8799
+ ordered?: { ... }
8800
+ require_tags_match?: { ... }
8801
+ pattern?: { ... }
8802
+ }
8803
+ }
8004
8804
  type: "email"
8005
8805
  }
8006
8806
  ```
@@ -8048,6 +8848,23 @@ type PhoneAttribute = {
8048
8848
  exclude_from_search?: boolean
8049
8849
  repeatable?: boolean
8050
8850
  has_primary?: boolean
8851
+ edit_mode?: "direct" | "external" | "approval"
8852
+ edit_mode_config?: {
8853
+ match_strategy?: "exact" | "fuzzy" | "any"
8854
+ fuzzy_config?: {
8855
+ type: { ... }
8856
+ suffix_length?: { ... }
8857
+ fields_to_ignore?: { ... }
8858
+ regex_flags?: { ... }
8859
+ country_code?: { ... }
8860
+ match_on?: { ... }
8861
+ key?: { ... }
8862
+ mode?: { ... }
8863
+ ordered?: { ... }
8864
+ require_tags_match?: { ... }
8865
+ pattern?: { ... }
8866
+ }
8867
+ }
8051
8868
  type: "phone"
8052
8869
  }
8053
8870
  ```
@@ -8095,6 +8912,23 @@ type PaymentAttribute = {
8095
8912
  exclude_from_search?: boolean
8096
8913
  repeatable?: boolean
8097
8914
  has_primary?: boolean
8915
+ edit_mode?: "direct" | "external" | "approval"
8916
+ edit_mode_config?: {
8917
+ match_strategy?: "exact" | "fuzzy" | "any"
8918
+ fuzzy_config?: {
8919
+ type: { ... }
8920
+ suffix_length?: { ... }
8921
+ fields_to_ignore?: { ... }
8922
+ regex_flags?: { ... }
8923
+ country_code?: { ... }
8924
+ match_on?: { ... }
8925
+ key?: { ... }
8926
+ mode?: { ... }
8927
+ ordered?: { ... }
8928
+ require_tags_match?: { ... }
8929
+ pattern?: { ... }
8930
+ }
8931
+ }
8098
8932
  type: "payment"
8099
8933
  }
8100
8934
  ```
@@ -8142,6 +8976,23 @@ type PriceComponentAttribute = {
8142
8976
  exclude_from_search?: boolean
8143
8977
  repeatable?: boolean
8144
8978
  has_primary?: boolean
8979
+ edit_mode?: "direct" | "external" | "approval"
8980
+ edit_mode_config?: {
8981
+ match_strategy?: "exact" | "fuzzy" | "any"
8982
+ fuzzy_config?: {
8983
+ type: { ... }
8984
+ suffix_length?: { ... }
8985
+ fields_to_ignore?: { ... }
8986
+ regex_flags?: { ... }
8987
+ country_code?: { ... }
8988
+ match_on?: { ... }
8989
+ key?: { ... }
8990
+ mode?: { ... }
8991
+ ordered?: { ... }
8992
+ require_tags_match?: { ... }
8993
+ pattern?: { ... }
8994
+ }
8995
+ }
8145
8996
  type: "price_component"
8146
8997
  }
8147
8998
  ```
@@ -8189,6 +9040,23 @@ type ComputedAttribute = {
8189
9040
  exclude_from_search?: boolean
8190
9041
  repeatable?: boolean
8191
9042
  has_primary?: boolean
9043
+ edit_mode?: "direct" | "external" | "approval"
9044
+ edit_mode_config?: {
9045
+ match_strategy?: "exact" | "fuzzy" | "any"
9046
+ fuzzy_config?: {
9047
+ type: { ... }
9048
+ suffix_length?: { ... }
9049
+ fields_to_ignore?: { ... }
9050
+ regex_flags?: { ... }
9051
+ country_code?: { ... }
9052
+ match_on?: { ... }
9053
+ key?: { ... }
9054
+ mode?: { ... }
9055
+ ordered?: { ... }
9056
+ require_tags_match?: { ... }
9057
+ pattern?: { ... }
9058
+ }
9059
+ }
8192
9060
  type: "computed"
8193
9061
  computed?: boolean
8194
9062
  amount_field?: string
@@ -8239,6 +9107,23 @@ type PartnerStatusAttribute = {
8239
9107
  exclude_from_search?: boolean
8240
9108
  repeatable?: boolean
8241
9109
  has_primary?: boolean
9110
+ edit_mode?: "direct" | "external" | "approval"
9111
+ edit_mode_config?: {
9112
+ match_strategy?: "exact" | "fuzzy" | "any"
9113
+ fuzzy_config?: {
9114
+ type: { ... }
9115
+ suffix_length?: { ... }
9116
+ fields_to_ignore?: { ... }
9117
+ regex_flags?: { ... }
9118
+ country_code?: { ... }
9119
+ match_on?: { ... }
9120
+ key?: { ... }
9121
+ mode?: { ... }
9122
+ ordered?: { ... }
9123
+ require_tags_match?: { ... }
9124
+ pattern?: { ... }
9125
+ }
9126
+ }
8242
9127
  type: "partner_status"
8243
9128
  }
8244
9129
  ```
@@ -8369,6 +9254,11 @@ type EntityCapability = {
8369
9254
  exclude_from_search?: boolean
8370
9255
  repeatable?: boolean
8371
9256
  has_primary?: boolean
9257
+ edit_mode?: "direct" | "external" | "approval"
9258
+ edit_mode_config?: {
9259
+ match_strategy?: { ... }
9260
+ fuzzy_config?: { ... }
9261
+ }
8372
9262
  type: "string"
8373
9263
  multiline?: boolean
8374
9264
  rich_text?: boolean
@@ -8413,18 +9303,13 @@ type EntityCapability = {
8413
9303
  exclude_from_search?: boolean
8414
9304
  repeatable?: boolean
8415
9305
  has_primary?: boolean
9306
+ edit_mode?: "direct" | "external" | "approval"
9307
+ edit_mode_config?: {
9308
+ match_strategy?: { ... }
9309
+ fuzzy_config?: { ... }
9310
+ }
8416
9311
  type: "link"
8417
9312
  } | {
8418
- id?: string
8419
- name: string
8420
- label: string
8421
- placeholder?: string
8422
- hidden?: boolean
8423
- show_in_table?: boolean
8424
- sortable?: boolean
8425
- required?: boolean
8426
- readonly?: boolean
8427
- deprecated?: boolean
8428
9313
  // ...
8429
9314
  }
8430
9315
  ```
@@ -8476,6 +9361,11 @@ type EntityCapabilityWithCompositeID = {
8476
9361
  exclude_from_search?: boolean
8477
9362
  repeatable?: boolean
8478
9363
  has_primary?: boolean
9364
+ edit_mode?: "direct" | "external" | "approval"
9365
+ edit_mode_config?: {
9366
+ match_strategy?: { ... }
9367
+ fuzzy_config?: { ... }
9368
+ }
8479
9369
  type: "string"
8480
9370
  multiline?: boolean
8481
9371
  rich_text?: boolean
@@ -8520,18 +9410,13 @@ type EntityCapabilityWithCompositeID = {
8520
9410
  exclude_from_search?: boolean
8521
9411
  repeatable?: boolean
8522
9412
  has_primary?: boolean
9413
+ edit_mode?: "direct" | "external" | "approval"
9414
+ edit_mode_config?: {
9415
+ match_strategy?: { ... }
9416
+ fuzzy_config?: { ... }
9417
+ }
8523
9418
  type: "link"
8524
9419
  } | {
8525
- id?: string
8526
- name: string
8527
- label: string
8528
- placeholder?: string
8529
- hidden?: boolean
8530
- show_in_table?: boolean
8531
- sortable?: boolean
8532
- required?: boolean
8533
- readonly?: boolean
8534
- deprecated?: boolean
8535
9420
  // ...
8536
9421
  }
8537
9422
  ```
@@ -8630,6 +9515,22 @@ type BaseEntity = {
8630
9515
  _purpose?: string[]
8631
9516
  _purpose_name?: string[]
8632
9517
  _manifest?: string // uuid[]
9518
+ _changesets?: Record<string, {
9519
+ proposed_value: unknown
9520
+ previous_value?: unknown
9521
+ created_at: string // date-time
9522
+ created_by?: {
9523
+ type?: { ... }
9524
+ id?: { ... }
9525
+ }
9526
+ edit_mode: "external" | "approval"
9527
+ match_strategy?: "exact" | "fuzzy" | "any"
9528
+ source?: string
9529
+ related_values?: Record<string, {
9530
+ proposed_value?: { ... }
9531
+ previous_value?: { ... }
9532
+ }>
9533
+ }>
8633
9534
  }
8634
9535
  ```
8635
9536
 
@@ -8657,6 +9558,22 @@ type Entity = {
8657
9558
  _purpose?: string[]
8658
9559
  _purpose_name?: string[]
8659
9560
  _manifest?: string // uuid[]
9561
+ _changesets?: Record<string, {
9562
+ proposed_value: unknown
9563
+ previous_value?: unknown
9564
+ created_at: string // date-time
9565
+ created_by?: {
9566
+ type?: { ... }
9567
+ id?: { ... }
9568
+ }
9569
+ edit_mode: "external" | "approval"
9570
+ match_strategy?: "exact" | "fuzzy" | "any"
9571
+ source?: string
9572
+ related_values?: Record<string, {
9573
+ proposed_value?: { ... }
9574
+ previous_value?: { ... }
9575
+ }>
9576
+ }>
8660
9577
  }
8661
9578
  ```
8662
9579
 
@@ -8684,6 +9601,22 @@ type NullableEntity = {
8684
9601
  _purpose?: string[]
8685
9602
  _purpose_name?: string[]
8686
9603
  _manifest?: string // uuid[]
9604
+ _changesets?: Record<string, {
9605
+ proposed_value: unknown
9606
+ previous_value?: unknown
9607
+ created_at: string // date-time
9608
+ created_by?: {
9609
+ type?: { ... }
9610
+ id?: { ... }
9611
+ }
9612
+ edit_mode: "external" | "approval"
9613
+ match_strategy?: "exact" | "fuzzy" | "any"
9614
+ source?: string
9615
+ related_values?: Record<string, {
9616
+ proposed_value?: { ... }
9617
+ previous_value?: { ... }
9618
+ }>
9619
+ }>
8687
9620
  }
8688
9621
  ```
8689
9622
 
@@ -8749,6 +9682,22 @@ type EntityItem = {
8749
9682
  _purpose?: string[]
8750
9683
  _purpose_name?: string[]
8751
9684
  _manifest?: string // uuid[]
9685
+ _changesets?: Record<string, {
9686
+ proposed_value: unknown
9687
+ previous_value?: unknown
9688
+ created_at: string // date-time
9689
+ created_by?: {
9690
+ type?: { ... }
9691
+ id?: { ... }
9692
+ }
9693
+ edit_mode: "external" | "approval"
9694
+ match_strategy?: "exact" | "fuzzy" | "any"
9695
+ source?: string
9696
+ related_values?: Record<string, {
9697
+ proposed_value?: { ... }
9698
+ previous_value?: { ... }
9699
+ }>
9700
+ }>
8752
9701
  }
8753
9702
  ```
8754
9703
 
@@ -9306,6 +10255,7 @@ type GraphQueryRequest = {
9306
10255
  }>
9307
10256
  }
9308
10257
  hydrate?: boolean
10258
+ apply_changesets?: boolean
9309
10259
  }
9310
10260
  ```
9311
10261
 
@@ -9381,6 +10331,16 @@ type GraphQueryResponse = {
9381
10331
  _purpose?: string[]
9382
10332
  _purpose_name?: string[]
9383
10333
  _manifest?: string // uuid[]
10334
+ _changesets?: Record<string, {
10335
+ proposed_value: { ... }
10336
+ previous_value?: { ... }
10337
+ created_at: { ... }
10338
+ created_by?: { ... }
10339
+ edit_mode: { ... }
10340
+ match_strategy?: { ... }
10341
+ source?: { ... }
10342
+ related_values?: { ... }
10343
+ }>
9384
10344
  } | Array<{
9385
10345
  _id?: object
9386
10346
  _org?: string
@@ -9402,6 +10362,16 @@ type GraphQueryResponse = {
9402
10362
  _purpose?: string[]
9403
10363
  _purpose_name?: string[]
9404
10364
  _manifest?: string // uuid[]
10365
+ _changesets?: Record<string, {
10366
+ proposed_value: { ... }
10367
+ previous_value?: { ... }
10368
+ created_at: { ... }
10369
+ created_by?: { ... }
10370
+ edit_mode: { ... }
10371
+ match_strategy?: { ... }
10372
+ source?: { ... }
10373
+ related_values?: { ... }
10374
+ }>
9405
10375
  }>>
9406
10376
  edges: Array<{
9407
10377
  from: string
@@ -9436,6 +10406,16 @@ type EntitySearchResults = {
9436
10406
  _purpose?: string[]
9437
10407
  _purpose_name?: string[]
9438
10408
  _manifest?: string // uuid[]
10409
+ _changesets?: Record<string, {
10410
+ proposed_value: { ... }
10411
+ previous_value?: { ... }
10412
+ created_at: { ... }
10413
+ created_by?: { ... }
10414
+ edit_mode: { ... }
10415
+ match_strategy?: { ... }
10416
+ source?: { ... }
10417
+ related_values?: { ... }
10418
+ }>
9439
10419
  }>
9440
10420
  aggregations?: object
9441
10421
  stable_query_id?: string
@@ -9451,8 +10431,9 @@ Advanced: explicit Elasticsearch index mapping definitions for entity data
9451
10431
  ```ts
9452
10432
  type SearchMappings = Record<string, {
9453
10433
  index?: boolean
9454
- type?: "keyword" | "text" | "boolean" | "integer" | "long" | "float" | "date" | "flattened" | "nested"
10434
+ type?: "keyword" | "text" | "boolean" | "integer" | "long" | "float" | "date" | "flattened" | "nested" | "object"
9455
10435
  fields?: unknown
10436
+ dynamic?: boolean
9456
10437
  }>
9457
10438
  ```
9458
10439
 
@@ -9542,6 +10523,16 @@ type EntityOperation = {
9542
10523
  _purpose?: string[]
9543
10524
  _purpose_name?: string[]
9544
10525
  _manifest?: string // uuid[]
10526
+ _changesets?: Record<string, {
10527
+ proposed_value: { ... }
10528
+ previous_value?: { ... }
10529
+ created_at: { ... }
10530
+ created_by?: { ... }
10531
+ edit_mode: { ... }
10532
+ match_strategy?: { ... }
10533
+ source?: { ... }
10534
+ related_values?: { ... }
10535
+ }>
9545
10536
  }
9546
10537
  diff?: {
9547
10538
  added?: {
@@ -9558,6 +10549,7 @@ type EntityOperation = {
9558
10549
  _purpose?: { ... }
9559
10550
  _purpose_name?: { ... }
9560
10551
  _manifest?: { ... }
10552
+ _changesets?: { ... }
9561
10553
  }
9562
10554
  updated?: {
9563
10555
  _id?: { ... }
@@ -9573,6 +10565,7 @@ type EntityOperation = {
9573
10565
  _purpose?: { ... }
9574
10566
  _purpose_name?: { ... }
9575
10567
  _manifest?: { ... }
10568
+ _changesets?: { ... }
9576
10569
  }
9577
10570
  deleted?: {
9578
10571
  _id?: { ... }
@@ -9588,6 +10581,7 @@ type EntityOperation = {
9588
10581
  _purpose?: { ... }
9589
10582
  _purpose_name?: { ... }
9590
10583
  _manifest?: { ... }
10584
+ _changesets?: { ... }
9591
10585
  }
9592
10586
  }
9593
10587
  _workflow_origin?: {
@@ -9645,6 +10639,7 @@ type ActivityItem = {
9645
10639
  _purpose?: { ... }
9646
10640
  _purpose_name?: { ... }
9647
10641
  _manifest?: { ... }
10642
+ _changesets?: { ... }
9648
10643
  }
9649
10644
  diff?: {
9650
10645
  added?: { ... }
@@ -9943,3 +10938,124 @@ type ErrorObject = {
9943
10938
  error?: string
9944
10939
  }
9945
10940
  ```
10941
+
10942
+ ### `ChangesetCreator`
10943
+
10944
+ Identifies the actor that created the changeset.
10945
+
10946
+ ```ts
10947
+ type ChangesetCreator = {
10948
+ type?: "user" | "portal_user" | "api_client" | "automation"
10949
+ id?: string
10950
+ }
10951
+ ```
10952
+
10953
+ ### `Changeset`
10954
+
10955
+ A pending proposed change for a single entity attribute, awaiting external confirmation or human approval.
10956
+
10957
+ ```ts
10958
+ type Changeset = {
10959
+ proposed_value: unknown
10960
+ previous_value?: unknown
10961
+ created_at: string // date-time
10962
+ created_by?: {
10963
+ type?: "user" | "portal_user" | "api_client" | "automation"
10964
+ id?: string
10965
+ }
10966
+ edit_mode: "external" | "approval"
10967
+ match_strategy?: "exact" | "fuzzy" | "any"
10968
+ source?: string
10969
+ related_values?: Record<string, {
10970
+ proposed_value?: unknown
10971
+ previous_value?: unknown
10972
+ }>
10973
+ }
10974
+ ```
10975
+
10976
+ ### `ChangesetMap`
10977
+
10978
+ Map of attribute name to pending changeset. At most one changeset per attribute.
10979
+
10980
+ ```ts
10981
+ type ChangesetMap = Record<string, {
10982
+ proposed_value: unknown
10983
+ previous_value?: unknown
10984
+ created_at: string // date-time
10985
+ created_by?: {
10986
+ type?: "user" | "portal_user" | "api_client" | "automation"
10987
+ id?: string
10988
+ }
10989
+ edit_mode: "external" | "approval"
10990
+ match_strategy?: "exact" | "fuzzy" | "any"
10991
+ source?: string
10992
+ related_values?: Record<string, {
10993
+ proposed_value?: unknown
10994
+ previous_value?: unknown
10995
+ }>
10996
+ }>
10997
+ ```
10998
+
10999
+ ### `EditModeConfig`
11000
+
11001
+ Configuration for `edit_mode: external` auto-clear matching.
11002
+ Fields here (`match_strategy`, `fuzzy_config`) only take effect when
11003
+ `edit_mode` is `external`. They are ignored for `edit_mode: approval`,
11004
+ which never auto-clears and is resolved exclusively via the
11005
+ `:apply` / `:dismiss` changeset endpoin
11006
+
11007
+ ```ts
11008
+ type EditModeConfig = {
11009
+ match_strategy?: "exact" | "fuzzy" | "any"
11010
+ fuzzy_config?: {
11011
+ type: "suffix" | "digits_only" | "normalize_phone" | "ignore_fields" | "set_equivalent" | "entry_match" | "relation_set" | "regex"
11012
+ suffix_length?: number
11013
+ fields_to_ignore?: string[]
11014
+ regex_flags?: string
11015
+ country_code?: string
11016
+ match_on?: string
11017
+ key?: string | string[]
11018
+ mode?: "subset" | "exact_set"
11019
+ ordered?: boolean
11020
+ require_tags_match?: boolean
11021
+ pattern?: string
11022
+ }
11023
+ }
11024
+ ```
11025
+
11026
+ ### `FuzzyConfig`
11027
+
11028
+ Configuration for fuzzy auto-clear matching on `edit_mode: external` attributes.
11029
+ Not used for `edit_mode: approval`.
11030
+
11031
+ Type compatibility with attribute shape is enforced at schema save time:
11032
+ - scalar string attributes: `suffix`, `digits_only`, `regex`
11033
+ - repeatable attributes: `set_equivalent`, `entr
11034
+
11035
+ ```ts
11036
+ type FuzzyConfig = {
11037
+ type: "suffix" | "digits_only" | "normalize_phone" | "ignore_fields" | "set_equivalent" | "entry_match" | "relation_set" | "regex"
11038
+ suffix_length?: number
11039
+ fields_to_ignore?: string[]
11040
+ regex_flags?: string
11041
+ country_code?: string
11042
+ match_on?: string
11043
+ key?: string | string[]
11044
+ mode?: "subset" | "exact_set"
11045
+ ordered?: boolean
11046
+ require_tags_match?: boolean
11047
+ pattern?: string
11048
+ }
11049
+ ```
11050
+
11051
+ ### `MatchStrategy`
11052
+
11053
+ Strategy for auto-clearing a changeset on an `edit_mode: external` attribute
11054
+ when a direct write (`?direct=true`) arrives — typically an ERP inbound sync.
11055
+ Ignored for `edit_mode: approval`, which does not auto-clear and is resolved
11056
+ exclusively via the `:apply` / `:dismiss` changeset endpoints.
11057
+ - `ex
11058
+
11059
+ ```ts
11060
+ type MatchStrategy = "exact" | "fuzzy" | "any"
11061
+ ```