@objectstack/platform-objects 7.2.1 → 7.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/apps/index.d.mts +45 -19
  2. package/dist/apps/index.d.ts +45 -19
  3. package/dist/apps/index.js +1443 -3403
  4. package/dist/apps/index.js.map +1 -1
  5. package/dist/apps/index.mjs +1443 -3404
  6. package/dist/apps/index.mjs.map +1 -1
  7. package/dist/audit/index.d.mts +4595 -26176
  8. package/dist/audit/index.d.ts +4595 -26176
  9. package/dist/audit/index.js +63 -1063
  10. package/dist/audit/index.js.map +1 -1
  11. package/dist/audit/index.mjs +64 -1057
  12. package/dist/audit/index.mjs.map +1 -1
  13. package/dist/identity/index.d.mts +839 -1281
  14. package/dist/identity/index.d.ts +839 -1281
  15. package/dist/index.d.mts +3 -8
  16. package/dist/index.d.ts +3 -8
  17. package/dist/index.js +2350 -6776
  18. package/dist/index.js.map +1 -1
  19. package/dist/index.mjs +2349 -6761
  20. package/dist/index.mjs.map +1 -1
  21. package/dist/integration/index.d.mts +1 -2947
  22. package/dist/integration/index.d.ts +1 -2947
  23. package/dist/integration/index.js +0 -136
  24. package/dist/integration/index.js.map +1 -1
  25. package/dist/integration/index.mjs +0 -135
  26. package/dist/integration/index.mjs.map +1 -1
  27. package/dist/metadata/index.d.mts +3924 -261
  28. package/dist/metadata/index.d.ts +3924 -261
  29. package/dist/metadata/index.js +101 -0
  30. package/dist/metadata/index.js.map +1 -1
  31. package/dist/metadata/index.mjs +101 -1
  32. package/dist/metadata/index.mjs.map +1 -1
  33. package/dist/metadata-translations/index.js +597 -505
  34. package/dist/metadata-translations/index.js.map +1 -1
  35. package/dist/metadata-translations/index.mjs +597 -505
  36. package/dist/metadata-translations/index.mjs.map +1 -1
  37. package/dist/plugin.js +1790 -3614
  38. package/dist/plugin.js.map +1 -1
  39. package/dist/plugin.mjs +1790 -3614
  40. package/dist/plugin.mjs.map +1 -1
  41. package/dist/security/index.d.mts +1 -18850
  42. package/dist/security/index.d.ts +1 -18850
  43. package/dist/security/index.js +0 -1531
  44. package/dist/security/index.js.map +1 -1
  45. package/dist/security/index.mjs +0 -1523
  46. package/dist/security/index.mjs.map +1 -1
  47. package/dist/system/index.d.mts +144 -212
  48. package/dist/system/index.d.ts +144 -212
  49. package/package.json +2 -2
  50. package/dist/state-machine.zod-BNanU03M.d-Ek3_yo9P.d.mts +0 -41
  51. package/dist/state-machine.zod-BNanU03M.d-Ek3_yo9P.d.ts +0 -41
@@ -53,18 +53,123 @@ var enMetadataForms = {
53
53
  fields: {
54
54
  helpText: "Add the columns this object will store"
55
55
  },
56
- "fields.name": {
57
- helpText: "snake_case identifier"
58
- },
59
56
  "fields.label": {
60
57
  helpText: "Display label"
61
58
  },
62
59
  "fields.type": {
63
60
  helpText: "Field type"
64
61
  },
62
+ "fields.description": {
63
+ helpText: "Developer documentation for this column"
64
+ },
65
+ "fields.required": {
66
+ helpText: "Must be set on every record"
67
+ },
68
+ "fields.unique": {
69
+ helpText: "Disallow duplicate values"
70
+ },
71
+ "fields.indexed": {
72
+ helpText: "Create a database index for faster querying"
73
+ },
74
+ "fields.readonly": {
75
+ helpText: "Visible but never user-editable"
76
+ },
77
+ "fields.immutable": {
78
+ helpText: "Editable on create, locked thereafter"
79
+ },
80
+ "fields.hidden": {
81
+ helpText: "Hidden from default UI"
82
+ },
83
+ "fields.searchable": {
84
+ helpText: "Include in full-text search"
85
+ },
86
+ "fields.sortable": {
87
+ helpText: "Allow sorting on this column"
88
+ },
89
+ "fields.filterable": {
90
+ helpText: "Allow filtering on this column"
91
+ },
92
+ "fields.defaultValue": {
93
+ helpText: "Default value for new records (JSON literal)"
94
+ },
95
+ "fields.placeholder": {
96
+ helpText: "Placeholder hint"
97
+ },
98
+ "fields.maxLength": {
99
+ helpText: "Max characters"
100
+ },
101
+ "fields.minLength": {
102
+ helpText: "Min characters"
103
+ },
104
+ "fields.min": {
105
+ helpText: "Minimum value"
106
+ },
107
+ "fields.max": {
108
+ helpText: "Maximum value"
109
+ },
110
+ "fields.precision": {
111
+ helpText: "Total digits"
112
+ },
113
+ "fields.scale": {
114
+ helpText: "Decimal places"
115
+ },
116
+ "fields.options": {
117
+ helpText: "Available choices"
118
+ },
119
+ "fields.options.icon": {
120
+ helpText: "Lucide icon name"
121
+ },
65
122
  "fields.reference": {
66
123
  helpText: "Target object (for lookup/master_detail)"
67
124
  },
125
+ "fields.referenceFilter": {
126
+ helpText: "CEL filter applied to the picker"
127
+ },
128
+ "fields.cascadeDelete": {
129
+ helpText: "Delete children when parent is deleted"
130
+ },
131
+ "fields.multiple": {
132
+ helpText: "Allow selecting multiple records"
133
+ },
134
+ "fields.formula": {
135
+ helpText: "CEL formula expression"
136
+ },
137
+ "fields.returnType": {
138
+ helpText: "Result type for formulas"
139
+ },
140
+ "fields.summaryType": {
141
+ helpText: "Aggregation"
142
+ },
143
+ "fields.summaryField": {
144
+ helpText: "Field on child object to aggregate"
145
+ },
146
+ "fields.displayFormat": {
147
+ helpText: 'e.g. "INV-{0000}"'
148
+ },
149
+ "fields.startingNumber": {
150
+ helpText: "Starting sequence value"
151
+ },
152
+ "fields.language": {
153
+ helpText: "Editor language (e.g. sql, javascript)"
154
+ },
155
+ "fields.validation": {
156
+ helpText: "CEL predicate \u2014 must evaluate true"
157
+ },
158
+ "fields.errorMessage": {
159
+ helpText: "Shown when validation fails"
160
+ },
161
+ "fields.audit": {
162
+ helpText: "Audit changes to this field"
163
+ },
164
+ "fields.trackHistory": {
165
+ helpText: "Keep change history"
166
+ },
167
+ "fields.pii": {
168
+ helpText: "Personally identifiable information"
169
+ },
170
+ "fields.encrypted": {
171
+ helpText: "Encrypt at rest"
172
+ },
68
173
  capabilities: {
69
174
  helpText: "Enable/disable system features"
70
175
  },
@@ -735,117 +840,15 @@ var enMetadataForms = {
735
840
  }
736
841
  }
737
842
  },
738
- workflow: {
739
- label: "Workflow",
740
- sections: {
741
- basics: {
742
- label: "Basics",
743
- description: "Identity and the object/event that triggers it."
744
- },
745
- actions: {
746
- label: "Actions",
747
- description: "What this workflow does when fired."
748
- },
749
- advanced: {
750
- label: "Advanced",
751
- description: "Ordering and execution behaviour."
752
- }
753
- },
754
- fields: {
755
- name: {
756
- helpText: "Unique identifier (snake_case)"
757
- },
758
- objectName: {
759
- helpText: "Which object triggers this workflow"
760
- },
761
- triggerType: {
762
- helpText: "When to run: on_create, on_update, on_delete, schedule"
763
- },
764
- active: {
765
- helpText: "Enable/disable this workflow"
766
- },
767
- description: {
768
- helpText: "What this workflow does"
769
- },
770
- criteria: {
771
- helpText: "CEL expression: only run when this condition is true"
772
- },
773
- actions: {
774
- helpText: "Actions to execute immediately (field update, email, API call, etc.)"
775
- },
776
- timeTriggers: {
777
- helpText: "Scheduled actions (e.g., send reminder 1 day before deadline)"
778
- },
779
- executionOrder: {
780
- helpText: "Run order when multiple workflows match (lower = earlier)"
781
- }
782
- }
783
- },
784
- approval: {
785
- label: "Approval Process",
786
- sections: {
787
- basics: {
788
- label: "Basics",
789
- description: "Approval process identity and the object it gates."
790
- },
791
- entry_rules: {
792
- label: "Entry rules",
793
- description: "Who can submit, and what happens to the record while pending."
794
- },
795
- steps: {
796
- label: "Steps",
797
- description: "Ordered approval chain \u2014 each step picks the approver and decides routing."
798
- },
799
- escalation_and_outcomes: {
800
- label: "Escalation & outcomes",
801
- description: "SLA, escalation, and post-decision actions."
802
- }
803
- },
804
- fields: {
805
- name: {
806
- helpText: "Unique identifier (snake_case)"
807
- },
808
- label: {
809
- helpText: 'Display name (e.g., "Contract Approval")'
810
- },
811
- object: {
812
- helpText: "Which object needs approval"
813
- },
814
- active: {
815
- helpText: "Enable/disable this approval process"
816
- },
817
- description: {
818
- helpText: "What gets approved and why"
819
- },
820
- entryCriteria: {
821
- helpText: "CEL expression: users can submit only when this is true"
822
- },
823
- lockRecord: {
824
- helpText: "Lock record from editing while approval is pending"
825
- },
826
- approvalStatusField: {
827
- helpText: 'Field name to mirror approval status (e.g., "approval_status")'
828
- },
829
- steps: {
830
- helpText: "Approval steps in order \u2014 each step defines who approves and what happens"
831
- },
832
- escalation: {
833
- helpText: "Auto-escalate or auto-approve after timeout"
834
- },
835
- onFinalApprove: {
836
- helpText: "Actions when all steps approved (e.g., update status)"
837
- },
838
- onFinalReject: {
839
- helpText: "Actions when rejected (e.g., notify submitter)"
840
- }
841
- }
842
- },
843
843
  job: {
844
844
  label: "Background Job"
845
845
  },
846
846
  datasource: {
847
847
  label: "Datasource"
848
848
  },
849
+ external_catalog: {
850
+ label: "External Catalog"
851
+ },
849
852
  translation: {
850
853
  label: "Translation"
851
854
  },
@@ -869,27 +872,47 @@ var enMetadataForms = {
869
872
  label: "Subject",
870
873
  description: "Subject line. Supports {{var.path}} interpolation."
871
874
  },
872
- body: {
873
- label: "Body",
874
- description: "Email body. Use {{var}} for variables. Editor highlights based on body type."
875
+ html_body: {
876
+ label: "HTML body",
877
+ description: "Rich HTML body. Most clients strip <head>, so use inline styles."
878
+ },
879
+ plain_text_body: {
880
+ label: "Plain-text body",
881
+ description: "Optional plain-text alternative. When omitted, the service strips tags from the HTML body to derive one. Providing one improves spam scoring."
882
+ },
883
+ variables: {
884
+ label: "Variables",
885
+ description: "Declared variables. Rendered as hints in Studio and validated by sendTemplate() when required."
875
886
  },
876
- variables_and_attachments: {
877
- label: "Variables & Attachments",
878
- description: "Declared template variables and optional file attachments."
887
+ delivery_overrides: {
888
+ label: "Delivery overrides",
889
+ description: "Optional per-template overrides for From / Reply-To."
890
+ },
891
+ status: {
892
+ label: "Status"
879
893
  }
880
894
  },
881
895
  fields: {
882
- id: {
883
- helpText: "Template id (e.g. auth.password_reset)"
896
+ name: {
897
+ helpText: "Dotted snake_case (e.g. auth.password_reset, crm.welcome)"
884
898
  },
885
- body: {
886
- helpText: "Body content. Will be rendered as HTML, plain text, or Markdown based on Body Type."
899
+ locale: {
900
+ helpText: "BCP-47 tag \u2014 e.g. en-US, zh-CN"
887
901
  },
888
902
  variables: {
889
903
  helpText: "List of variable names referenced in subject/body"
890
904
  },
891
- attachments: {
892
- helpText: '[{ "name": "...", "url": "..." }]'
905
+ fromOverride: {
906
+ helpText: '{ "name": "Acme Sales", "address": "sales@acme.com" }'
907
+ },
908
+ replyTo: {
909
+ helpText: "Reply-To email address"
910
+ },
911
+ active: {
912
+ helpText: "When unchecked, sendTemplate() returns TEMPLATE_INACTIVE."
913
+ },
914
+ isSystem: {
915
+ helpText: "Built-in template; tenants may override but should not delete."
893
916
  }
894
917
  }
895
918
  },
@@ -1244,18 +1267,123 @@ var zhCNMetadataForms = {
1244
1267
  fields: {
1245
1268
  helpText: "\u6DFB\u52A0\u8BE5\u5BF9\u8C61\u5C06\u5B58\u50A8\u7684\u5217"
1246
1269
  },
1247
- "fields.name": {
1248
- helpText: "snake_case \u6807\u8BC6\u7B26"
1249
- },
1250
1270
  "fields.label": {
1251
1271
  helpText: "\u5C55\u793A\u7528\u6807\u7B7E"
1252
1272
  },
1253
1273
  "fields.type": {
1254
1274
  helpText: "\u5B57\u6BB5\u7C7B\u578B"
1255
1275
  },
1276
+ "fields.description": {
1277
+ helpText: "Developer documentation for this column"
1278
+ },
1279
+ "fields.required": {
1280
+ helpText: "Must be set on every record"
1281
+ },
1282
+ "fields.unique": {
1283
+ helpText: "Disallow duplicate values"
1284
+ },
1285
+ "fields.indexed": {
1286
+ helpText: "Create a database index for faster querying"
1287
+ },
1288
+ "fields.readonly": {
1289
+ helpText: "Visible but never user-editable"
1290
+ },
1291
+ "fields.immutable": {
1292
+ helpText: "Editable on create, locked thereafter"
1293
+ },
1294
+ "fields.hidden": {
1295
+ helpText: "Hidden from default UI"
1296
+ },
1297
+ "fields.searchable": {
1298
+ helpText: "Include in full-text search"
1299
+ },
1300
+ "fields.sortable": {
1301
+ helpText: "Allow sorting on this column"
1302
+ },
1303
+ "fields.filterable": {
1304
+ helpText: "Allow filtering on this column"
1305
+ },
1306
+ "fields.defaultValue": {
1307
+ helpText: "Default value for new records (JSON literal)"
1308
+ },
1309
+ "fields.placeholder": {
1310
+ helpText: "Placeholder hint"
1311
+ },
1312
+ "fields.maxLength": {
1313
+ helpText: "Max characters"
1314
+ },
1315
+ "fields.minLength": {
1316
+ helpText: "Min characters"
1317
+ },
1318
+ "fields.min": {
1319
+ helpText: "Minimum value"
1320
+ },
1321
+ "fields.max": {
1322
+ helpText: "Maximum value"
1323
+ },
1324
+ "fields.precision": {
1325
+ helpText: "Total digits"
1326
+ },
1327
+ "fields.scale": {
1328
+ helpText: "Decimal places"
1329
+ },
1330
+ "fields.options": {
1331
+ helpText: "Available choices"
1332
+ },
1333
+ "fields.options.icon": {
1334
+ helpText: "Lucide icon name"
1335
+ },
1256
1336
  "fields.reference": {
1257
1337
  helpText: "\u76EE\u6807\u5BF9\u8C61\uFF08\u7528\u4E8E lookup / master_detail\uFF09"
1258
1338
  },
1339
+ "fields.referenceFilter": {
1340
+ helpText: "CEL filter applied to the picker"
1341
+ },
1342
+ "fields.cascadeDelete": {
1343
+ helpText: "Delete children when parent is deleted"
1344
+ },
1345
+ "fields.multiple": {
1346
+ helpText: "Allow selecting multiple records"
1347
+ },
1348
+ "fields.formula": {
1349
+ helpText: "CEL formula expression"
1350
+ },
1351
+ "fields.returnType": {
1352
+ helpText: "Result type for formulas"
1353
+ },
1354
+ "fields.summaryType": {
1355
+ helpText: "Aggregation"
1356
+ },
1357
+ "fields.summaryField": {
1358
+ helpText: "Field on child object to aggregate"
1359
+ },
1360
+ "fields.displayFormat": {
1361
+ helpText: 'e.g. "INV-{0000}"'
1362
+ },
1363
+ "fields.startingNumber": {
1364
+ helpText: "Starting sequence value"
1365
+ },
1366
+ "fields.language": {
1367
+ helpText: "Editor language (e.g. sql, javascript)"
1368
+ },
1369
+ "fields.validation": {
1370
+ helpText: "CEL predicate \u2014 must evaluate true"
1371
+ },
1372
+ "fields.errorMessage": {
1373
+ helpText: "Shown when validation fails"
1374
+ },
1375
+ "fields.audit": {
1376
+ helpText: "Audit changes to this field"
1377
+ },
1378
+ "fields.trackHistory": {
1379
+ helpText: "Keep change history"
1380
+ },
1381
+ "fields.pii": {
1382
+ helpText: "Personally identifiable information"
1383
+ },
1384
+ "fields.encrypted": {
1385
+ helpText: "Encrypt at rest"
1386
+ },
1259
1387
  capabilities: {
1260
1388
  helpText: "\u542F\u7528\u6216\u7981\u7528\u7CFB\u7EDF\u529F\u80FD"
1261
1389
  },
@@ -1387,10 +1515,10 @@ var zhCNMetadataForms = {
1387
1515
  }
1388
1516
  },
1389
1517
  trigger: {
1390
- label: "Trigger"
1518
+ label: "\u89E6\u53D1\u5668"
1391
1519
  },
1392
1520
  validation: {
1393
- label: "Validation Rule"
1521
+ label: "\u9A8C\u8BC1\u89C4\u5219"
1394
1522
  },
1395
1523
  hook: {
1396
1524
  label: "\u94A9\u5B50",
@@ -1609,7 +1737,7 @@ var zhCNMetadataForms = {
1609
1737
  },
1610
1738
  fields: {
1611
1739
  name: {
1612
- helpText: "snake_case unique identifier"
1740
+ helpText: "snake_case \u552F\u4E00\u6807\u8BC6\u7B26"
1613
1741
  },
1614
1742
  label: {
1615
1743
  helpText: "\u663E\u793A\u540D"
@@ -1926,128 +2054,26 @@ var zhCNMetadataForms = {
1926
2054
  }
1927
2055
  }
1928
2056
  },
1929
- workflow: {
1930
- label: "\u5DE5\u4F5C\u6D41",
1931
- sections: {
1932
- basics: {
1933
- label: "\u57FA\u7840\u4FE1\u606F",
1934
- description: "\u540D\u79F0\u4E0E\u89E6\u53D1\u6761\u4EF6"
1935
- },
1936
- actions: {
1937
- label: "\u6267\u884C\u52A8\u4F5C",
1938
- description: "\u6EE1\u8DB3\u6761\u4EF6\u540E\u505A\u4EC0\u4E48"
1939
- },
1940
- advanced: {
1941
- label: "\u9AD8\u7EA7\u8BBE\u7F6E",
1942
- description: "\u6267\u884C\u987A\u5E8F\u4E0E\u9519\u8BEF\u5904\u7406"
1943
- }
1944
- },
1945
- fields: {
1946
- name: {
1947
- helpText: "\u552F\u4E00\u6807\u8BC6\u7B26\uFF08snake_case\uFF09"
1948
- },
1949
- objectName: {
1950
- helpText: "\u89E6\u53D1\u6B64\u5DE5\u4F5C\u6D41\u7684\u5BF9\u8C61"
1951
- },
1952
- triggerType: {
1953
- helpText: "\u4F55\u65F6\u89E6\u53D1\uFF1Aon_create\u3001on_update\u3001on_delete\u3001schedule"
1954
- },
1955
- active: {
1956
- helpText: "\u542F\u7528\u6216\u7981\u7528\u6B64\u5DE5\u4F5C\u6D41"
1957
- },
1958
- description: {
1959
- helpText: "\u6B64\u5DE5\u4F5C\u6D41\u7684\u7528\u9014\u8BF4\u660E"
1960
- },
1961
- criteria: {
1962
- helpText: "CEL \u8868\u8FBE\u5F0F\uFF1A\u4EC5\u5F53\u6761\u4EF6\u4E3A\u771F\u65F6\u6267\u884C"
1963
- },
1964
- actions: {
1965
- helpText: "\u7ACB\u5373\u6267\u884C\u7684\u52A8\u4F5C\uFF08\u5B57\u6BB5\u66F4\u65B0\u3001\u90AE\u4EF6\u3001API \u8C03\u7528\u7B49\uFF09"
1966
- },
1967
- timeTriggers: {
1968
- helpText: "\u5B9A\u65F6\u52A8\u4F5C\uFF08\u5982\u622A\u6B62\u524D 1 \u5929\u53D1\u63D0\u9192\uFF09"
1969
- },
1970
- executionOrder: {
1971
- helpText: "\u540C\u65F6\u5339\u914D\u591A\u4E2A\u5DE5\u4F5C\u6D41\u65F6\u7684\u6267\u884C\u987A\u5E8F\uFF08\u6570\u5B57\u8D8A\u5C0F\u8D8A\u5148\u6267\u884C\uFF09"
1972
- }
1973
- }
1974
- },
1975
- approval: {
1976
- label: "\u5BA1\u6279\u6D41",
1977
- sections: {
1978
- basics: {
1979
- label: "\u57FA\u7840\u4FE1\u606F",
1980
- description: "\u540D\u79F0\u4E0E\u76EE\u6807\u5BF9\u8C61"
1981
- },
1982
- entry_rules: {
1983
- label: "\u8FDB\u5165\u89C4\u5219",
1984
- description: "\u4F55\u65F6\u8FDB\u5165\u5BA1\u6279"
1985
- },
1986
- steps: {
1987
- label: "\u5BA1\u6279\u6B65\u9AA4",
1988
- description: "\u9010\u7EA7\u5BA1\u6279\u914D\u7F6E"
1989
- },
1990
- escalation_and_outcomes: {
1991
- label: "\u5347\u7EA7\u4E0E\u7ED3\u679C",
1992
- description: "\u8D85\u65F6\u5347\u7EA7\u4E0E\u6700\u7EC8\u5904\u7406"
1993
- }
1994
- },
1995
- fields: {
1996
- name: {
1997
- helpText: "\u552F\u4E00\u6807\u8BC6\u7B26\uFF08snake_case\uFF09"
1998
- },
1999
- label: {
2000
- helpText: '\u663E\u793A\u540D\uFF08\u5982\uFF1A"\u5408\u540C\u5BA1\u6279"\uFF09'
2001
- },
2002
- object: {
2003
- helpText: "\u9700\u8981\u5BA1\u6279\u7684\u5BF9\u8C61"
2004
- },
2005
- active: {
2006
- helpText: "\u542F\u7528\u6216\u7981\u7528\u6B64\u5BA1\u6279\u6D41"
2007
- },
2008
- description: {
2009
- helpText: "\u5BA1\u6279\u7684\u5BF9\u8C61\u4E0E\u539F\u56E0"
2010
- },
2011
- entryCriteria: {
2012
- helpText: "CEL \u8868\u8FBE\u5F0F\uFF1A\u6EE1\u8DB3\u65F6\u7528\u6237\u53EF\u63D0\u4EA4"
2013
- },
2014
- lockRecord: {
2015
- helpText: "\u5BA1\u6279\u5F85\u5904\u7406\u671F\u95F4\u9501\u5B9A\u8BB0\u5F55\uFF0C\u7981\u6B62\u7F16\u8F91"
2016
- },
2017
- approvalStatusField: {
2018
- helpText: '\u7528\u4E8E\u955C\u50CF\u5BA1\u6279\u72B6\u6001\u7684\u5B57\u6BB5\u540D\uFF08\u5982 "approval_status"\uFF09'
2019
- },
2020
- steps: {
2021
- helpText: "\u6309\u987A\u5E8F\u6392\u5217\u7684\u5BA1\u6279\u6B65\u9AA4\u2014\u2014\u6BCF\u4E00\u6B65\u5B9A\u4E49\u7531\u8C01\u5BA1\u6279\u4EE5\u53CA\u7ED3\u679C"
2022
- },
2023
- escalation: {
2024
- helpText: "\u8D85\u65F6\u540E\u81EA\u52A8\u5347\u7EA7\u6216\u81EA\u52A8\u901A\u8FC7"
2025
- },
2026
- onFinalApprove: {
2027
- helpText: "\u6240\u6709\u6B65\u9AA4\u901A\u8FC7\u540E\u7684\u52A8\u4F5C\uFF08\u5982\u66F4\u65B0\u72B6\u6001\uFF09"
2028
- },
2029
- onFinalReject: {
2030
- helpText: "\u88AB\u62D2\u7EDD\u540E\u7684\u52A8\u4F5C\uFF08\u5982\u901A\u77E5\u63D0\u4EA4\u4EBA\uFF09"
2031
- }
2032
- }
2033
- },
2034
2057
  job: {
2035
- label: "Background Job"
2058
+ label: "\u540E\u53F0\u4F5C\u4E1A"
2036
2059
  },
2037
2060
  datasource: {
2038
- label: "Datasource"
2061
+ label: "\u6570\u636E\u6E90"
2062
+ },
2063
+ external_catalog: {
2064
+ label: "External Catalog"
2039
2065
  },
2040
2066
  translation: {
2041
- label: "Translation"
2067
+ label: "\u7FFB\u8BD1"
2042
2068
  },
2043
2069
  router: {
2044
- label: "Router"
2070
+ label: "\u8DEF\u7531\u5668"
2045
2071
  },
2046
2072
  function: {
2047
- label: "Function"
2073
+ label: "\u51FD\u6570"
2048
2074
  },
2049
2075
  service: {
2050
- label: "Service"
2076
+ label: "\u670D\u52A1"
2051
2077
  },
2052
2078
  email_template: {
2053
2079
  label: "\u90AE\u4EF6\u6A21\u677F",
@@ -2060,27 +2086,47 @@ var zhCNMetadataForms = {
2060
2086
  label: "\u4E3B\u9898",
2061
2087
  description: "\u90AE\u4EF6\u4E3B\u9898\u6A21\u677F"
2062
2088
  },
2063
- body: {
2064
- label: "\u6B63\u6587",
2065
- description: "\u90AE\u4EF6\u6B63\u6587\u5185\u5BB9"
2089
+ html_body: {
2090
+ label: "HTML body",
2091
+ description: "Rich HTML body. Most clients strip <head>, so use inline styles."
2092
+ },
2093
+ plain_text_body: {
2094
+ label: "Plain-text body",
2095
+ description: "Optional plain-text alternative. When omitted, the service strips tags from the HTML body to derive one. Providing one improves spam scoring."
2096
+ },
2097
+ variables: {
2098
+ label: "Variables",
2099
+ description: "Declared variables. Rendered as hints in Studio and validated by sendTemplate() when required."
2100
+ },
2101
+ delivery_overrides: {
2102
+ label: "Delivery overrides",
2103
+ description: "Optional per-template overrides for From / Reply-To."
2066
2104
  },
2067
- variables_and_attachments: {
2068
- label: "\u53D8\u91CF\u4E0E\u9644\u4EF6",
2069
- description: "\u53EF\u6CE8\u5165\u7684\u53D8\u91CF\u4E0E\u9644\u4EF6\u5217\u8868"
2105
+ status: {
2106
+ label: "Status"
2070
2107
  }
2071
2108
  },
2072
2109
  fields: {
2073
- id: {
2074
- helpText: "\u552F\u4E00\u6807\u8BC6\u7B26\uFF08snake_case\uFF09"
2110
+ name: {
2111
+ helpText: "Dotted snake_case (e.g. auth.password_reset, crm.welcome)"
2075
2112
  },
2076
- body: {
2077
- helpText: "\u652F\u6301\u53D8\u91CF\u63D2\u503C\u7684\u90AE\u4EF6\u6B63\u6587"
2113
+ locale: {
2114
+ helpText: "BCP-47 tag \u2014 e.g. en-US, zh-CN"
2078
2115
  },
2079
2116
  variables: {
2080
2117
  helpText: "\u6A21\u677F\u5185\u53EF\u5F15\u7528\u7684\u53D8\u91CF\u4E0E\u9ED8\u8BA4\u503C"
2081
2118
  },
2082
- attachments: {
2083
- helpText: "\u9644\u4EF6\u5217\u8868\uFF08\u6587\u4EF6\u5F15\u7528\u6216 URL\uFF09"
2119
+ fromOverride: {
2120
+ helpText: '{ "name": "Acme Sales", "address": "sales@acme.com" }'
2121
+ },
2122
+ replyTo: {
2123
+ helpText: "Reply-To email address"
2124
+ },
2125
+ active: {
2126
+ helpText: "When unchecked, sendTemplate() returns TEMPLATE_INACTIVE."
2127
+ },
2128
+ isSystem: {
2129
+ helpText: "Built-in template; tenants may override but should not delete."
2084
2130
  }
2085
2131
  }
2086
2132
  },
@@ -2135,37 +2181,37 @@ var zhCNMetadataForms = {
2135
2181
  }
2136
2182
  },
2137
2183
  profile: {
2138
- label: "Profile",
2184
+ label: "\u914D\u7F6E\u6587\u4EF6",
2139
2185
  sections: {
2140
2186
  identity: {
2141
- label: "Identity",
2142
- description: "Permission Sets stack on top of a Profile to grant additional access. Profiles are the base set assigned 1:1 to each user."
2187
+ label: "\u6807\u8BC6",
2188
+ description: "\u6743\u9650\u96C6\u53E0\u52A0\u5728\u914D\u7F6E\u6587\u4EF6\u4E4B\u4E0A\u4EE5\u6388\u4E88\u989D\u5916\u7684\u8BBF\u95EE\u6743\u9650\u3002\u914D\u7F6E\u6587\u4EF6\u662F\u6309 1:1 \u5206\u914D\u7ED9\u6BCF\u4E2A\u7528\u6237\u7684\u57FA\u7840\u96C6\u5408\u3002"
2143
2189
  },
2144
2190
  system_permissions: {
2145
- label: "System Permissions",
2146
- description: "High-level capabilities not tied to a specific object \u2014 e.g. manage_users, view_audit_logs."
2191
+ label: "\u7CFB\u7EDF\u6743\u9650",
2192
+ description: "\u4E0E\u7279\u5B9A\u5BF9\u8C61\u65E0\u5173\u7684\u9AD8\u7EA7\u80FD\u529B\u2014\u2014\u4F8B\u5982 manage_users\u3001view_audit_logs\u3002"
2147
2193
  },
2148
2194
  object_and_field_permissions: {
2149
- label: "Object & Field Permissions",
2150
- description: "Per-object CRUD + per-field FLS. Edit via the matrix editor or paste JSON here."
2195
+ label: "\u5BF9\u8C61\u4E0E\u5B57\u6BB5\u6743\u9650",
2196
+ description: "\u6309\u5BF9\u8C61\u7684\u589E\u5220\u6539\u67E5 + \u6309\u5B57\u6BB5\u7684\u5B57\u6BB5\u7EA7\u5B89\u5168\uFF08FLS\uFF09\u3002\u53EF\u901A\u8FC7\u77E9\u9635\u7F16\u8F91\u5668\u7F16\u8F91\uFF0C\u6216\u5728\u6B64\u5904\u7C98\u8D34 JSON\u3002"
2151
2197
  },
2152
2198
  tab_and_row_level_security: {
2153
- label: "Tab & Row-Level Security",
2154
- description: "Tab visibility, RLS policies, and custom context variables for predicate evaluation."
2199
+ label: "\u6807\u7B7E\u9875\u4E0E\u884C\u7EA7\u5B89\u5168",
2200
+ description: "\u6807\u7B7E\u9875\u53EF\u89C1\u6027\u3001RLS \u7B56\u7565\uFF0C\u4EE5\u53CA\u7528\u4E8E\u8C13\u8BCD\u6C42\u503C\u7684\u81EA\u5B9A\u4E49\u4E0A\u4E0B\u6587\u53D8\u91CF\u3002"
2155
2201
  }
2156
2202
  },
2157
2203
  fields: {
2158
2204
  name: {
2159
- helpText: "Machine name (snake_case)"
2205
+ helpText: "\u673A\u5668\u540D\uFF08snake_case\uFF09"
2160
2206
  },
2161
2207
  label: {
2162
- helpText: "Display label for admins"
2208
+ helpText: "\u9762\u5411\u7BA1\u7406\u5458\u663E\u793A\u7684\u6807\u7B7E"
2163
2209
  },
2164
2210
  isProfile: {
2165
- helpText: "Profile = base set assigned to users. Permission Set = additive grant."
2211
+ helpText: "\u914D\u7F6E\u6587\u4EF6 = \u5206\u914D\u7ED9\u7528\u6237\u7684\u57FA\u7840\u96C6\u5408\u3002\u6743\u9650\u96C6 = \u9644\u52A0\u6388\u4E88\u3002"
2166
2212
  },
2167
2213
  systemPermissions: {
2168
- helpText: "List of system capability keys"
2214
+ helpText: "\u7CFB\u7EDF\u80FD\u529B\u952E\u5217\u8868"
2169
2215
  },
2170
2216
  objects: {
2171
2217
  helpText: '{ "account": { allowRead: true, allowEdit: true, ... } }'
@@ -2177,10 +2223,10 @@ var zhCNMetadataForms = {
2177
2223
  helpText: '{ "app_crm": "visible", "app_admin": "hidden" }'
2178
2224
  },
2179
2225
  rowLevelSecurity: {
2180
- helpText: "Array of RLS policies (see rls.zod.ts)"
2226
+ helpText: "RLS \u7B56\u7565\u6570\u7EC4\uFF08\u53C2\u89C1 rls.zod.ts\uFF09"
2181
2227
  },
2182
2228
  contextVariables: {
2183
- helpText: "Custom variables referenced in RLS predicates"
2229
+ helpText: "RLS \u8C13\u8BCD\u4E2D\u5F15\u7528\u7684\u81EA\u5B9A\u4E49\u53D8\u91CF"
2184
2230
  }
2185
2231
  }
2186
2232
  },
@@ -2435,18 +2481,123 @@ var jaJPMetadataForms = {
2435
2481
  fields: {
2436
2482
  helpText: "\u3053\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u4FDD\u5B58\u3059\u308B\u5217\u3092\u8FFD\u52A0"
2437
2483
  },
2438
- "fields.name": {
2439
- helpText: "snake_case \u8B58\u5225\u5B50"
2440
- },
2441
2484
  "fields.label": {
2442
2485
  helpText: "\u8868\u793A\u30E9\u30D9\u30EB"
2443
2486
  },
2444
2487
  "fields.type": {
2445
2488
  helpText: "\u30D5\u30A3\u30FC\u30EB\u30C9\u578B"
2446
2489
  },
2490
+ "fields.description": {
2491
+ helpText: "Developer documentation for this column"
2492
+ },
2493
+ "fields.required": {
2494
+ helpText: "Must be set on every record"
2495
+ },
2496
+ "fields.unique": {
2497
+ helpText: "Disallow duplicate values"
2498
+ },
2499
+ "fields.indexed": {
2500
+ helpText: "Create a database index for faster querying"
2501
+ },
2502
+ "fields.readonly": {
2503
+ helpText: "Visible but never user-editable"
2504
+ },
2505
+ "fields.immutable": {
2506
+ helpText: "Editable on create, locked thereafter"
2507
+ },
2508
+ "fields.hidden": {
2509
+ helpText: "Hidden from default UI"
2510
+ },
2511
+ "fields.searchable": {
2512
+ helpText: "Include in full-text search"
2513
+ },
2514
+ "fields.sortable": {
2515
+ helpText: "Allow sorting on this column"
2516
+ },
2517
+ "fields.filterable": {
2518
+ helpText: "Allow filtering on this column"
2519
+ },
2520
+ "fields.defaultValue": {
2521
+ helpText: "Default value for new records (JSON literal)"
2522
+ },
2523
+ "fields.placeholder": {
2524
+ helpText: "Placeholder hint"
2525
+ },
2526
+ "fields.maxLength": {
2527
+ helpText: "Max characters"
2528
+ },
2529
+ "fields.minLength": {
2530
+ helpText: "Min characters"
2531
+ },
2532
+ "fields.min": {
2533
+ helpText: "Minimum value"
2534
+ },
2535
+ "fields.max": {
2536
+ helpText: "Maximum value"
2537
+ },
2538
+ "fields.precision": {
2539
+ helpText: "Total digits"
2540
+ },
2541
+ "fields.scale": {
2542
+ helpText: "Decimal places"
2543
+ },
2544
+ "fields.options": {
2545
+ helpText: "Available choices"
2546
+ },
2547
+ "fields.options.icon": {
2548
+ helpText: "Lucide icon name"
2549
+ },
2447
2550
  "fields.reference": {
2448
2551
  helpText: "\u5BFE\u8C61\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\uFF08lookup/master_detail \u7528\uFF09"
2449
2552
  },
2553
+ "fields.referenceFilter": {
2554
+ helpText: "CEL filter applied to the picker"
2555
+ },
2556
+ "fields.cascadeDelete": {
2557
+ helpText: "Delete children when parent is deleted"
2558
+ },
2559
+ "fields.multiple": {
2560
+ helpText: "Allow selecting multiple records"
2561
+ },
2562
+ "fields.formula": {
2563
+ helpText: "CEL formula expression"
2564
+ },
2565
+ "fields.returnType": {
2566
+ helpText: "Result type for formulas"
2567
+ },
2568
+ "fields.summaryType": {
2569
+ helpText: "Aggregation"
2570
+ },
2571
+ "fields.summaryField": {
2572
+ helpText: "Field on child object to aggregate"
2573
+ },
2574
+ "fields.displayFormat": {
2575
+ helpText: 'e.g. "INV-{0000}"'
2576
+ },
2577
+ "fields.startingNumber": {
2578
+ helpText: "Starting sequence value"
2579
+ },
2580
+ "fields.language": {
2581
+ helpText: "Editor language (e.g. sql, javascript)"
2582
+ },
2583
+ "fields.validation": {
2584
+ helpText: "CEL predicate \u2014 must evaluate true"
2585
+ },
2586
+ "fields.errorMessage": {
2587
+ helpText: "Shown when validation fails"
2588
+ },
2589
+ "fields.audit": {
2590
+ helpText: "Audit changes to this field"
2591
+ },
2592
+ "fields.trackHistory": {
2593
+ helpText: "Keep change history"
2594
+ },
2595
+ "fields.pii": {
2596
+ helpText: "Personally identifiable information"
2597
+ },
2598
+ "fields.encrypted": {
2599
+ helpText: "Encrypt at rest"
2600
+ },
2450
2601
  capabilities: {
2451
2602
  helpText: "\u30B7\u30B9\u30C6\u30E0\u6A5F\u80FD\u306E\u6709\u52B9/\u7121\u52B9"
2452
2603
  },
@@ -3117,117 +3268,15 @@ var jaJPMetadataForms = {
3117
3268
  }
3118
3269
  }
3119
3270
  },
3120
- workflow: {
3121
- label: "\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC",
3122
- sections: {
3123
- basics: {
3124
- label: "\u57FA\u672C",
3125
- description: "ID \u3068\u767A\u706B\u5143\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8/\u30A4\u30D9\u30F3\u30C8\u3002"
3126
- },
3127
- actions: {
3128
- label: "\u30A2\u30AF\u30B7\u30E7\u30F3",
3129
- description: "\u767A\u706B\u6642\u306B\u3053\u306E\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u304C\u884C\u3046\u51E6\u7406\u3002"
3130
- },
3131
- advanced: {
3132
- label: "\u8A73\u7D30",
3133
- description: "\u9806\u5E8F\u3068\u5B9F\u884C\u52D5\u4F5C\u3002"
3134
- }
3135
- },
3136
- fields: {
3137
- name: {
3138
- helpText: "\u4E00\u610F\u8B58\u5225\u5B50\uFF08snake_case\uFF09"
3139
- },
3140
- objectName: {
3141
- helpText: "\u3053\u306E\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u767A\u706B\u3059\u308B\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8"
3142
- },
3143
- triggerType: {
3144
- helpText: "\u5B9F\u884C\u30BF\u30A4\u30DF\u30F3\u30B0: on_create, on_update, on_delete, schedule"
3145
- },
3146
- active: {
3147
- helpText: "\u3053\u306E\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306E\u6709\u52B9/\u7121\u52B9"
3148
- },
3149
- description: {
3150
- helpText: "\u3053\u306E\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306E\u51E6\u7406\u5185\u5BB9"
3151
- },
3152
- criteria: {
3153
- helpText: "CEL \u5F0F: \u3053\u306E\u6761\u4EF6\u304C true \u306E\u5834\u5408\u306E\u307F\u5B9F\u884C"
3154
- },
3155
- actions: {
3156
- helpText: "\u5373\u6642\u5B9F\u884C\u3059\u308B\u30A2\u30AF\u30B7\u30E7\u30F3\uFF08field update, email, API call \u306A\u3069\uFF09"
3157
- },
3158
- timeTriggers: {
3159
- helpText: "\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u30A2\u30AF\u30B7\u30E7\u30F3\uFF08\u4F8B: \u671F\u9650 1 \u65E5\u524D\u306B\u30EA\u30DE\u30A4\u30F3\u30C0\u30FC\u9001\u4FE1\uFF09"
3160
- },
3161
- executionOrder: {
3162
- helpText: "\u8907\u6570\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u4E00\u81F4\u6642\u306E\u5B9F\u884C\u9806\uFF08\u5C0F\u3055\u3044\u307B\u3069\u65E9\u3044\uFF09"
3163
- }
3164
- }
3165
- },
3166
- approval: {
3167
- label: "\u627F\u8A8D\u30D7\u30ED\u30BB\u30B9",
3168
- sections: {
3169
- basics: {
3170
- label: "\u57FA\u672C",
3171
- description: "\u627F\u8A8D\u30D7\u30ED\u30BB\u30B9 ID \u3068\u5BFE\u8C61\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3002"
3172
- },
3173
- entry_rules: {
3174
- label: "\u30A8\u30F3\u30C8\u30EA\u30FC\u30EB\u30FC\u30EB",
3175
- description: "\u9001\u4FE1\u53EF\u80FD\u8005\u3068\u4FDD\u7559\u4E2D\u30EC\u30B3\u30FC\u30C9\u306E\u52D5\u4F5C\u3002"
3176
- },
3177
- steps: {
3178
- label: "\u30B9\u30C6\u30C3\u30D7",
3179
- description: "\u9806\u5E8F\u4ED8\u304D\u627F\u8A8D\u30C1\u30A7\u30FC\u30F3 \u2014 \u5404\u30B9\u30C6\u30C3\u30D7\u3067\u627F\u8A8D\u8005\u3068\u30EB\u30FC\u30C6\u30A3\u30F3\u30B0\u3092\u6C7A\u5B9A\u3002"
3180
- },
3181
- escalation_and_outcomes: {
3182
- label: "\u30A8\u30B9\u30AB\u30EC\u30FC\u30B7\u30E7\u30F3\u3068\u7D50\u679C",
3183
- description: "SLA\u3001\u30A8\u30B9\u30AB\u30EC\u30FC\u30B7\u30E7\u30F3\u3001\u6C7A\u5B9A\u5F8C\u30A2\u30AF\u30B7\u30E7\u30F3\u3002"
3184
- }
3185
- },
3186
- fields: {
3187
- name: {
3188
- helpText: "\u4E00\u610F\u8B58\u5225\u5B50\uFF08snake_case\uFF09"
3189
- },
3190
- label: {
3191
- helpText: '\u8868\u793A\u540D\uFF08\u4F8B: "Contract Approval"\uFF09'
3192
- },
3193
- object: {
3194
- helpText: "\u627F\u8A8D\u304C\u5FC5\u8981\u306A\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8"
3195
- },
3196
- active: {
3197
- helpText: "\u3053\u306E\u627F\u8A8D\u30D7\u30ED\u30BB\u30B9\u306E\u6709\u52B9/\u7121\u52B9"
3198
- },
3199
- description: {
3200
- helpText: "\u627F\u8A8D\u5BFE\u8C61\u3068\u7406\u7531"
3201
- },
3202
- entryCriteria: {
3203
- helpText: "CEL \u5F0F: \u3053\u308C\u304C true \u306E\u5834\u5408\u306E\u307F\u30E6\u30FC\u30B6\u30FC\u304C\u9001\u4FE1\u53EF\u80FD"
3204
- },
3205
- lockRecord: {
3206
- helpText: "\u627F\u8A8D\u4FDD\u7559\u4E2D\u306F\u30EC\u30B3\u30FC\u30C9\u7DE8\u96C6\u3092\u30ED\u30C3\u30AF"
3207
- },
3208
- approvalStatusField: {
3209
- helpText: '\u627F\u8A8D\u72B6\u614B\u3092\u53CD\u6620\u3059\u308B\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\uFF08\u4F8B: "approval_status"\uFF09'
3210
- },
3211
- steps: {
3212
- helpText: "\u9806\u5E8F\u4ED8\u304D\u627F\u8A8D\u30B9\u30C6\u30C3\u30D7 \u2014 \u5404\u30B9\u30C6\u30C3\u30D7\u3067\u627F\u8A8D\u8005\u3068\u51E6\u7406\u3092\u5B9A\u7FA9"
3213
- },
3214
- escalation: {
3215
- helpText: "\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u5F8C\u306B\u81EA\u52D5\u30A8\u30B9\u30AB\u30EC\u30FC\u30B7\u30E7\u30F3\u307E\u305F\u306F\u81EA\u52D5\u627F\u8A8D"
3216
- },
3217
- onFinalApprove: {
3218
- helpText: "\u5168\u30B9\u30C6\u30C3\u30D7\u627F\u8A8D\u6642\u306E\u30A2\u30AF\u30B7\u30E7\u30F3\uFF08\u4F8B: \u30B9\u30C6\u30FC\u30BF\u30B9\u66F4\u65B0\uFF09"
3219
- },
3220
- onFinalReject: {
3221
- helpText: "\u5374\u4E0B\u6642\u306E\u30A2\u30AF\u30B7\u30E7\u30F3\uFF08\u4F8B: \u7533\u8ACB\u8005\u3078\u901A\u77E5\uFF09"
3222
- }
3223
- }
3224
- },
3225
3271
  job: {
3226
3272
  label: "\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u30B8\u30E7\u30D6"
3227
3273
  },
3228
3274
  datasource: {
3229
3275
  label: "\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9"
3230
3276
  },
3277
+ external_catalog: {
3278
+ label: "External Catalog"
3279
+ },
3231
3280
  translation: {
3232
3281
  label: "\u7FFB\u8A33"
3233
3282
  },
@@ -3251,27 +3300,47 @@ var jaJPMetadataForms = {
3251
3300
  label: "\u4EF6\u540D",
3252
3301
  description: "\u4EF6\u540D\u884C\u3002{{var.path}} \u88DC\u9593\u3092\u30B5\u30DD\u30FC\u30C8\u3002"
3253
3302
  },
3254
- body: {
3255
- label: "\u672C\u6587",
3256
- description: "\u30E1\u30FC\u30EB\u672C\u6587\u3002\u5909\u6570\u306B\u306F {{var}} \u3092\u4F7F\u7528\u3002\u30A8\u30C7\u30A3\u30BF\u30FC\u306F body \u578B\u306B\u57FA\u3065\u304D\u30CF\u30A4\u30E9\u30A4\u30C8\u3002"
3303
+ html_body: {
3304
+ label: "HTML body",
3305
+ description: "Rich HTML body. Most clients strip <head>, so use inline styles."
3306
+ },
3307
+ plain_text_body: {
3308
+ label: "Plain-text body",
3309
+ description: "Optional plain-text alternative. When omitted, the service strips tags from the HTML body to derive one. Providing one improves spam scoring."
3310
+ },
3311
+ variables: {
3312
+ label: "Variables",
3313
+ description: "Declared variables. Rendered as hints in Studio and validated by sendTemplate() when required."
3257
3314
  },
3258
- variables_and_attachments: {
3259
- label: "\u5909\u6570\u3068\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB",
3260
- description: "\u5BA3\u8A00\u6E08\u307F\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u5909\u6570\u3068\u4EFB\u610F\u306E\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB\u3002"
3315
+ delivery_overrides: {
3316
+ label: "Delivery overrides",
3317
+ description: "Optional per-template overrides for From / Reply-To."
3318
+ },
3319
+ status: {
3320
+ label: "Status"
3261
3321
  }
3262
3322
  },
3263
3323
  fields: {
3264
- id: {
3265
- helpText: "\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 id\uFF08\u4F8B: auth.password_reset\uFF09"
3324
+ name: {
3325
+ helpText: "Dotted snake_case (e.g. auth.password_reset, crm.welcome)"
3266
3326
  },
3267
- body: {
3268
- helpText: "\u672C\u6587\u30B3\u30F3\u30C6\u30F3\u30C4\u3002Body Type \u306B\u57FA\u3065\u304D HTML\u3001\u30D7\u30EC\u30FC\u30F3\u30C6\u30AD\u30B9\u30C8\u3001Markdown \u3068\u3057\u3066\u30EC\u30F3\u30C0\u30EA\u30F3\u30B0\u3002"
3327
+ locale: {
3328
+ helpText: "BCP-47 tag \u2014 e.g. en-US, zh-CN"
3269
3329
  },
3270
3330
  variables: {
3271
3331
  helpText: "subject/body \u3067\u53C2\u7167\u3059\u308B\u5909\u6570\u540D\u30EA\u30B9\u30C8"
3272
3332
  },
3273
- attachments: {
3274
- helpText: '[{ "name": "...", "url": "..." }]'
3333
+ fromOverride: {
3334
+ helpText: '{ "name": "Acme Sales", "address": "sales@acme.com" }'
3335
+ },
3336
+ replyTo: {
3337
+ helpText: "Reply-To email address"
3338
+ },
3339
+ active: {
3340
+ helpText: "When unchecked, sendTemplate() returns TEMPLATE_INACTIVE."
3341
+ },
3342
+ isSystem: {
3343
+ helpText: "Built-in template; tenants may override but should not delete."
3275
3344
  }
3276
3345
  }
3277
3346
  },
@@ -3626,18 +3695,123 @@ var esESMetadataForms = {
3626
3695
  fields: {
3627
3696
  helpText: "A\xF1ade las columnas que almacenar\xE1 este objeto"
3628
3697
  },
3629
- "fields.name": {
3630
- helpText: "Identificador snake_case"
3631
- },
3632
3698
  "fields.label": {
3633
3699
  helpText: "Etiqueta mostrada"
3634
3700
  },
3635
3701
  "fields.type": {
3636
3702
  helpText: "Tipo de campo"
3637
3703
  },
3704
+ "fields.description": {
3705
+ helpText: "Developer documentation for this column"
3706
+ },
3707
+ "fields.required": {
3708
+ helpText: "Must be set on every record"
3709
+ },
3710
+ "fields.unique": {
3711
+ helpText: "Disallow duplicate values"
3712
+ },
3713
+ "fields.indexed": {
3714
+ helpText: "Create a database index for faster querying"
3715
+ },
3716
+ "fields.readonly": {
3717
+ helpText: "Visible but never user-editable"
3718
+ },
3719
+ "fields.immutable": {
3720
+ helpText: "Editable on create, locked thereafter"
3721
+ },
3722
+ "fields.hidden": {
3723
+ helpText: "Hidden from default UI"
3724
+ },
3725
+ "fields.searchable": {
3726
+ helpText: "Include in full-text search"
3727
+ },
3728
+ "fields.sortable": {
3729
+ helpText: "Allow sorting on this column"
3730
+ },
3731
+ "fields.filterable": {
3732
+ helpText: "Allow filtering on this column"
3733
+ },
3734
+ "fields.defaultValue": {
3735
+ helpText: "Default value for new records (JSON literal)"
3736
+ },
3737
+ "fields.placeholder": {
3738
+ helpText: "Placeholder hint"
3739
+ },
3740
+ "fields.maxLength": {
3741
+ helpText: "Max characters"
3742
+ },
3743
+ "fields.minLength": {
3744
+ helpText: "Min characters"
3745
+ },
3746
+ "fields.min": {
3747
+ helpText: "Minimum value"
3748
+ },
3749
+ "fields.max": {
3750
+ helpText: "Maximum value"
3751
+ },
3752
+ "fields.precision": {
3753
+ helpText: "Total digits"
3754
+ },
3755
+ "fields.scale": {
3756
+ helpText: "Decimal places"
3757
+ },
3758
+ "fields.options": {
3759
+ helpText: "Available choices"
3760
+ },
3761
+ "fields.options.icon": {
3762
+ helpText: "Lucide icon name"
3763
+ },
3638
3764
  "fields.reference": {
3639
3765
  helpText: "Objeto de destino (para lookup/master_detail)"
3640
3766
  },
3767
+ "fields.referenceFilter": {
3768
+ helpText: "CEL filter applied to the picker"
3769
+ },
3770
+ "fields.cascadeDelete": {
3771
+ helpText: "Delete children when parent is deleted"
3772
+ },
3773
+ "fields.multiple": {
3774
+ helpText: "Allow selecting multiple records"
3775
+ },
3776
+ "fields.formula": {
3777
+ helpText: "CEL formula expression"
3778
+ },
3779
+ "fields.returnType": {
3780
+ helpText: "Result type for formulas"
3781
+ },
3782
+ "fields.summaryType": {
3783
+ helpText: "Aggregation"
3784
+ },
3785
+ "fields.summaryField": {
3786
+ helpText: "Field on child object to aggregate"
3787
+ },
3788
+ "fields.displayFormat": {
3789
+ helpText: 'e.g. "INV-{0000}"'
3790
+ },
3791
+ "fields.startingNumber": {
3792
+ helpText: "Starting sequence value"
3793
+ },
3794
+ "fields.language": {
3795
+ helpText: "Editor language (e.g. sql, javascript)"
3796
+ },
3797
+ "fields.validation": {
3798
+ helpText: "CEL predicate \u2014 must evaluate true"
3799
+ },
3800
+ "fields.errorMessage": {
3801
+ helpText: "Shown when validation fails"
3802
+ },
3803
+ "fields.audit": {
3804
+ helpText: "Audit changes to this field"
3805
+ },
3806
+ "fields.trackHistory": {
3807
+ helpText: "Keep change history"
3808
+ },
3809
+ "fields.pii": {
3810
+ helpText: "Personally identifiable information"
3811
+ },
3812
+ "fields.encrypted": {
3813
+ helpText: "Encrypt at rest"
3814
+ },
3641
3815
  capabilities: {
3642
3816
  helpText: "Activa/desactiva funciones del sistema"
3643
3817
  },
@@ -4308,122 +4482,20 @@ var esESMetadataForms = {
4308
4482
  }
4309
4483
  }
4310
4484
  },
4311
- workflow: {
4312
- label: "Flujo de trabajo",
4313
- sections: {
4314
- basics: {
4315
- label: "Aspectos b\xE1sicos",
4316
- description: "Identidad y objeto/evento que lo dispara."
4317
- },
4318
- actions: {
4319
- label: "Acciones",
4320
- description: "Qu\xE9 hace este flujo de trabajo cuando se dispara."
4321
- },
4322
- advanced: {
4323
- label: "Avanzado",
4324
- description: "Orden y comportamiento de ejecuci\xF3n."
4325
- }
4326
- },
4327
- fields: {
4328
- name: {
4329
- helpText: "Identificador \xFAnico (snake_case)"
4330
- },
4331
- objectName: {
4332
- helpText: "Qu\xE9 objeto dispara este flujo de trabajo"
4333
- },
4334
- triggerType: {
4335
- helpText: "Cu\xE1ndo ejecutar: on_create, on_update, on_delete, schedule"
4336
- },
4337
- active: {
4338
- helpText: "Activa/desactiva este flujo de trabajo"
4339
- },
4340
- description: {
4341
- helpText: "Qu\xE9 hace este flujo de trabajo"
4342
- },
4343
- criteria: {
4344
- helpText: "Expresi\xF3n CEL: ejecutar solo cuando esta condici\xF3n sea true"
4345
- },
4346
- actions: {
4347
- helpText: "Acciones que ejecutar inmediatamente (field update, email, API call, etc.)"
4348
- },
4349
- timeTriggers: {
4350
- helpText: "Acciones programadas (p. ej., enviar recordatorio 1 d\xEDa antes del plazo)"
4351
- },
4352
- executionOrder: {
4353
- helpText: "Orden de ejecuci\xF3n cuando coinciden varios flujos de trabajo (menor = antes)"
4354
- }
4355
- }
4356
- },
4357
- approval: {
4358
- label: "Proceso de aprobaci\xF3n",
4359
- sections: {
4360
- basics: {
4361
- label: "Aspectos b\xE1sicos",
4362
- description: "Identidad del proceso de aprobaci\xF3n y el objeto que controla."
4363
- },
4364
- entry_rules: {
4365
- label: "Reglas de entrada",
4366
- description: "Qui\xE9n puede enviar y qu\xE9 ocurre con el registro mientras est\xE1 pendiente."
4367
- },
4368
- steps: {
4369
- label: "Pasos",
4370
- description: "Cadena de aprobaci\xF3n ordenada \u2014 cada paso elige aprobador y decide el enrutado."
4371
- },
4372
- escalation_and_outcomes: {
4373
- label: "Escalado y resultados",
4374
- description: "SLA, escalado y acciones posteriores a la decisi\xF3n."
4375
- }
4376
- },
4377
- fields: {
4378
- name: {
4379
- helpText: "Identificador \xFAnico (snake_case)"
4380
- },
4381
- label: {
4382
- helpText: 'Nombre mostrado (p. ej., "Contract Approval")'
4383
- },
4384
- object: {
4385
- helpText: "Qu\xE9 objeto necesita aprobaci\xF3n"
4386
- },
4387
- active: {
4388
- helpText: "Activa/desactiva este proceso de aprobaci\xF3n"
4389
- },
4390
- description: {
4391
- helpText: "Qu\xE9 se aprueba y por qu\xE9"
4392
- },
4393
- entryCriteria: {
4394
- helpText: "Expresi\xF3n CEL: los usuarios solo pueden enviar cuando esto sea true"
4395
- },
4396
- lockRecord: {
4397
- helpText: "Bloquea la edici\xF3n del registro mientras la aprobaci\xF3n est\xE1 pendiente"
4398
- },
4399
- approvalStatusField: {
4400
- helpText: 'Nombre de campo para reflejar el estado de aprobaci\xF3n (p. ej., "approval_status")'
4401
- },
4402
- steps: {
4403
- helpText: "Pasos de aprobaci\xF3n en orden \u2014 cada paso define qui\xE9n aprueba y qu\xE9 ocurre"
4404
- },
4405
- escalation: {
4406
- helpText: "Escala o aprueba autom\xE1ticamente tras el tiempo de espera"
4407
- },
4408
- onFinalApprove: {
4409
- helpText: "Acciones cuando todos los pasos se aprueban (p. ej., actualizar estado)"
4410
- },
4411
- onFinalReject: {
4412
- helpText: "Acciones al rechazar (p. ej., notificar al remitente)"
4413
- }
4414
- }
4415
- },
4416
4485
  job: {
4417
4486
  label: "Trabajo en segundo plano"
4418
4487
  },
4419
4488
  datasource: {
4420
4489
  label: "Fuente de datos"
4421
4490
  },
4491
+ external_catalog: {
4492
+ label: "External Catalog"
4493
+ },
4422
4494
  translation: {
4423
4495
  label: "Traducci\xF3n"
4424
4496
  },
4425
4497
  router: {
4426
- label: "Router"
4498
+ label: "Enrutador"
4427
4499
  },
4428
4500
  function: {
4429
4501
  label: "Funci\xF3n"
@@ -4442,27 +4514,47 @@ var esESMetadataForms = {
4442
4514
  label: "Asunto",
4443
4515
  description: "L\xEDnea de asunto. Admite interpolaci\xF3n {{var.path}}."
4444
4516
  },
4445
- body: {
4446
- label: "Cuerpo",
4447
- description: "Cuerpo del email. Usa {{var}} para variables. El editor resalta seg\xFAn el tipo de body."
4517
+ html_body: {
4518
+ label: "HTML body",
4519
+ description: "Rich HTML body. Most clients strip <head>, so use inline styles."
4448
4520
  },
4449
- variables_and_attachments: {
4450
- label: "Variables y adjuntos",
4451
- description: "Variables de plantilla declaradas y adjuntos de archivo opcionales."
4521
+ plain_text_body: {
4522
+ label: "Plain-text body",
4523
+ description: "Optional plain-text alternative. When omitted, the service strips tags from the HTML body to derive one. Providing one improves spam scoring."
4524
+ },
4525
+ variables: {
4526
+ label: "Variables",
4527
+ description: "Declared variables. Rendered as hints in Studio and validated by sendTemplate() when required."
4528
+ },
4529
+ delivery_overrides: {
4530
+ label: "Delivery overrides",
4531
+ description: "Optional per-template overrides for From / Reply-To."
4532
+ },
4533
+ status: {
4534
+ label: "Status"
4452
4535
  }
4453
4536
  },
4454
4537
  fields: {
4455
- id: {
4456
- helpText: "id de plantilla (p. ej. auth.password_reset)"
4538
+ name: {
4539
+ helpText: "Dotted snake_case (e.g. auth.password_reset, crm.welcome)"
4457
4540
  },
4458
- body: {
4459
- helpText: "Contenido del body. Se renderizar\xE1 como HTML, texto plano o Markdown seg\xFAn Body Type."
4541
+ locale: {
4542
+ helpText: "BCP-47 tag \u2014 e.g. en-US, zh-CN"
4460
4543
  },
4461
4544
  variables: {
4462
4545
  helpText: "Lista de nombres de variable referenciados en subject/body"
4463
4546
  },
4464
- attachments: {
4465
- helpText: '[{ "name": "...", "url": "..." }]'
4547
+ fromOverride: {
4548
+ helpText: '{ "name": "Acme Sales", "address": "sales@acme.com" }'
4549
+ },
4550
+ replyTo: {
4551
+ helpText: "Reply-To email address"
4552
+ },
4553
+ active: {
4554
+ helpText: "When unchecked, sendTemplate() returns TEMPLATE_INACTIVE."
4555
+ },
4556
+ isSystem: {
4557
+ helpText: "Built-in template; tenants may override but should not delete."
4466
4558
  }
4467
4559
  }
4468
4560
  },