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