twenty-app-intake 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/manifest.json ADDED
@@ -0,0 +1,1466 @@
1
+ {
2
+ "application": {
3
+ "universalIdentifier": "96a389dd-384a-43a1-a376-9d3cf01b6ab7",
4
+ "name": "twenty-app-intake",
5
+ "displayName": "Intake",
6
+ "description": "The missing ingestion layer for Twenty CRM. Wire any contact form, pipeline app, or webhook source to Twenty — fields normalize automatically, schema extends on the fly, duplicates never land twice.",
7
+ "category": "data",
8
+ "logoUrl": "https://raw.githubusercontent.com/FranciscoContreras/twenty-app-intake/main/public/logo.svg",
9
+ "websiteUrl": "https://github.com/FranciscoContreras/twenty-app-intake",
10
+ "defaultRoleUniversalIdentifier": "3dd2cdb0-32c7-44b4-9f7b-0a9c667ec249",
11
+ "settingsCustomTabFrontComponentUniversalIdentifier": "4e4cfb3b-508c-413b-a1b2-192a51c31ed4",
12
+ "postInstallLogicFunction": {
13
+ "universalIdentifier": "e836fdd6-fd54-4aa4-ba6d-87d5a02148ef",
14
+ "shouldRunOnVersionUpgrade": false,
15
+ "shouldRunSynchronously": false
16
+ },
17
+ "applicationVariables": {
18
+ "INTAKE_FIELD_CREATION_ENABLED": {
19
+ "universalIdentifier": "3f4e8f8b-12aa-4c86-95b3-1a6620102a9d",
20
+ "value": "true",
21
+ "description": "Auto-create custom fields when unknown keys appear in a payload. Set to false to disable schema extension and route unknown fields to the note instead."
22
+ },
23
+ "INTAKE_MAX_EXT_FIELDS": {
24
+ "universalIdentifier": "0978faf5-37d5-4287-a2c9-b4069cb17e38",
25
+ "value": "50",
26
+ "description": "Maximum number of custom ext fields allowed per object before additional unknown fields are forced into the note. Prevents schema bloat."
27
+ },
28
+ "INTAKE_DEFAULT_OPP_STAGE": {
29
+ "universalIdentifier": "d0404ff9-abe1-4a4e-a8d3-b240600dd77d",
30
+ "value": "NEW",
31
+ "description": "Stage assigned to auto-created Opportunities. Must match an existing stage value in your workspace (e.g. NEW, SCREENING, MEETING, PROPOSAL, CUSTOMER)."
32
+ },
33
+ "INTAKE_DEDUP_WINDOW_MINUTES": {
34
+ "universalIdentifier": "55afed19-0d39-4c60-8955-35af5e883c39",
35
+ "value": "5",
36
+ "description": "How many minutes to suppress duplicate payloads with the same content hash. Set to 0 to disable deduplication."
37
+ },
38
+ "INTAKE_REQUIRE_HMAC": {
39
+ "universalIdentifier": "a2f575a1-8e11-4517-87c7-df45ff165951",
40
+ "value": "false",
41
+ "description": "When true, every source must have a webhook secret configured and all requests must be signed. Unsigned requests are rejected with 401."
42
+ },
43
+ "INTAKE_APP_LABEL": {
44
+ "universalIdentifier": "b3e6a2d8-9f1c-4b5e-8d7a-2c4f6e8b0a1d",
45
+ "value": "Intake",
46
+ "description": "Display name used in generated content — note titles, opportunity names, and system messages. Change to match your team's terminology (e.g. \"Leads\", \"Inbound\", \"Pipeline\")."
47
+ }
48
+ },
49
+ "yarnLockChecksum": "7dced8c0bfa9b803fa206e8556d7fb12",
50
+ "packageJsonChecksum": "028e98795de1b242d2d465a5320d448c"
51
+ },
52
+ "objects": [
53
+ {
54
+ "universalIdentifier": "8c1c227c-db7d-4834-b328-cacbe8af0bfc",
55
+ "nameSingular": "intakeSource",
56
+ "namePlural": "intakeSources",
57
+ "labelSingular": "Intake Source",
58
+ "labelPlural": "Intake Sources",
59
+ "description": "A registered webhook source that sends leads into Intake.",
60
+ "icon": "IconRadar2",
61
+ "fields": [
62
+ {
63
+ "universalIdentifier": "0deb7e4b-bb90-4c86-b903-5208b42041e2",
64
+ "name": "name",
65
+ "type": "TEXT",
66
+ "label": "Name",
67
+ "description": "Human-readable name for this source.",
68
+ "icon": "IconTag"
69
+ },
70
+ {
71
+ "universalIdentifier": "18f7645b-2dce-4145-b1b6-9cc3332c0578",
72
+ "name": "slug",
73
+ "type": "TEXT",
74
+ "label": "Slug",
75
+ "description": "URL segment — must be unique. e.g. \"contact-form\"",
76
+ "icon": "IconLink"
77
+ },
78
+ {
79
+ "universalIdentifier": "65f3d7f7-a601-4375-9c67-684d0044620b",
80
+ "name": "targetObject",
81
+ "type": "SELECT",
82
+ "label": "Target Object",
83
+ "description": "Whether payloads create a Person, Company, or auto-detect.",
84
+ "icon": "IconTarget",
85
+ "options": [
86
+ {
87
+ "value": "AUTO",
88
+ "label": "Auto-detect",
89
+ "position": 0,
90
+ "color": "gray",
91
+ "id": "930200b0-ccab-523f-8f50-ad2a937fade4"
92
+ },
93
+ {
94
+ "value": "PERSON",
95
+ "label": "Person",
96
+ "position": 1,
97
+ "color": "blue",
98
+ "id": "4a83a096-6456-54ab-9796-6cc7683efa57"
99
+ },
100
+ {
101
+ "value": "COMPANY",
102
+ "label": "Company",
103
+ "position": 2,
104
+ "color": "green",
105
+ "id": "72b8d5a7-cf32-514a-9e44-828b0b350358"
106
+ }
107
+ ],
108
+ "defaultValue": "'AUTO'"
109
+ },
110
+ {
111
+ "universalIdentifier": "4c919402-07f5-4041-ade6-a42402f1881f",
112
+ "name": "webhookSecret",
113
+ "type": "TEXT",
114
+ "label": "Webhook Secret",
115
+ "description": "HMAC-SHA256 signing secret. Leave empty to skip signature verification.",
116
+ "icon": "IconLock",
117
+ "isNullable": true,
118
+ "defaultValue": null
119
+ },
120
+ {
121
+ "universalIdentifier": "6f1fa6fe-02b4-48ab-b1ee-97c600bbf483",
122
+ "name": "status",
123
+ "type": "SELECT",
124
+ "label": "Status",
125
+ "icon": "IconCircleDot",
126
+ "options": [
127
+ {
128
+ "value": "ACTIVE",
129
+ "label": "Active",
130
+ "position": 0,
131
+ "color": "green",
132
+ "id": "f0c5f558-a7bd-5a71-a893-dd6eba18618d"
133
+ },
134
+ {
135
+ "value": "PAUSED",
136
+ "label": "Paused",
137
+ "position": 1,
138
+ "color": "yellow",
139
+ "id": "a38ab20d-4c8d-5588-b26a-f29d22514830"
140
+ }
141
+ ],
142
+ "defaultValue": "'ACTIVE'"
143
+ },
144
+ {
145
+ "universalIdentifier": "67ae59aa-2275-4ef2-b594-137f6bfafd99",
146
+ "name": "createOpportunity",
147
+ "type": "BOOLEAN",
148
+ "label": "Auto-create Opportunity",
149
+ "description": "Automatically create an Opportunity linked to each new record.",
150
+ "icon": "IconTrendingUp",
151
+ "defaultValue": "'true'"
152
+ },
153
+ {
154
+ "universalIdentifier": "3907b346-77a6-4c79-a4d7-6e1cc20bb82b",
155
+ "name": "opportunityNameTemplate",
156
+ "type": "TEXT",
157
+ "label": "Opportunity Name Template",
158
+ "description": "Template for opportunity names. Use {{source}}, {{firstName}}, {{lastName}}, {{company}}, {{email}}.",
159
+ "icon": "IconTemplate",
160
+ "defaultValue": "'{{source}} — {{firstName}} {{lastName}}'"
161
+ },
162
+ {
163
+ "universalIdentifier": "69655a93-bc70-48bd-874e-aeccc63ee1a8",
164
+ "name": "totalIngested",
165
+ "type": "NUMBER",
166
+ "label": "Total Ingested",
167
+ "icon": "IconArrowDown",
168
+ "defaultValue": 0
169
+ },
170
+ {
171
+ "universalIdentifier": "27b3a499-183e-4cc3-8e40-938f953a986d",
172
+ "name": "totalFailed",
173
+ "type": "NUMBER",
174
+ "label": "Total Failed",
175
+ "icon": "IconAlertTriangle",
176
+ "defaultValue": 0
177
+ },
178
+ {
179
+ "universalIdentifier": "e167f628-9865-468e-894a-b4b6150cec26",
180
+ "name": "lastIngestedAt",
181
+ "type": "DATE_TIME",
182
+ "label": "Last Ingested At",
183
+ "icon": "IconClock",
184
+ "isNullable": true,
185
+ "defaultValue": null
186
+ },
187
+ {
188
+ "universalIdentifier": "6ecfa369-22e0-4812-bb75-4338cea8be65",
189
+ "name": "intakeLogs",
190
+ "type": "RELATION",
191
+ "label": "Intake Logs",
192
+ "icon": "IconListDetails",
193
+ "isNullable": true,
194
+ "defaultValue": null,
195
+ "relationTargetObjectMetadataUniversalIdentifier": "b77a2439-1503-4ef6-ab8b-8f4293bc19da",
196
+ "relationTargetFieldMetadataUniversalIdentifier": "b1c623ea-7a9a-47a5-bee4-35fdd668a637",
197
+ "universalSettings": {
198
+ "relationType": "ONE_TO_MANY"
199
+ }
200
+ },
201
+ {
202
+ "universalIdentifier": "776fefaf-0eee-4ec0-93e0-d11bd80c1e20",
203
+ "name": "intakeFieldRules",
204
+ "type": "RELATION",
205
+ "label": "Field Rules",
206
+ "icon": "IconArrowsExchange",
207
+ "isNullable": true,
208
+ "defaultValue": null,
209
+ "relationTargetObjectMetadataUniversalIdentifier": "e74df817-ff25-4bfb-bdf0-651662ca327e",
210
+ "relationTargetFieldMetadataUniversalIdentifier": "396dd1f1-3873-4efa-a6bb-7b41eda14d83",
211
+ "universalSettings": {
212
+ "relationType": "ONE_TO_MANY"
213
+ }
214
+ },
215
+ {
216
+ "name": "id",
217
+ "label": "Id",
218
+ "description": "Id",
219
+ "icon": "Icon123",
220
+ "isNullable": false,
221
+ "defaultValue": "uuid",
222
+ "type": "UUID",
223
+ "universalIdentifier": "2b108a26-1c83-5844-be3e-0368aae2b5d2"
224
+ },
225
+ {
226
+ "name": "createdAt",
227
+ "label": "Creation date",
228
+ "description": "Creation date",
229
+ "icon": "IconCalendar",
230
+ "isNullable": false,
231
+ "defaultValue": "now",
232
+ "type": "DATE_TIME",
233
+ "universalIdentifier": "46b6d740-fc82-5387-9480-aab4404de63c"
234
+ },
235
+ {
236
+ "name": "updatedAt",
237
+ "label": "Last update",
238
+ "description": "Last time the record was changed",
239
+ "icon": "IconCalendarClock",
240
+ "isNullable": false,
241
+ "defaultValue": "now",
242
+ "type": "DATE_TIME",
243
+ "universalIdentifier": "4d30cc04-ee39-51ac-a672-3165c9f58b0d"
244
+ },
245
+ {
246
+ "name": "deletedAt",
247
+ "label": "Deleted at",
248
+ "description": "Deletion date",
249
+ "icon": "IconCalendarClock",
250
+ "isNullable": true,
251
+ "defaultValue": null,
252
+ "type": "DATE_TIME",
253
+ "universalIdentifier": "82a74ee9-04fb-5bf8-98ec-f105ab49646f"
254
+ },
255
+ {
256
+ "name": "createdBy",
257
+ "label": "Created by",
258
+ "description": "The creator of the record",
259
+ "icon": "IconCreativeCommonsSa",
260
+ "isNullable": false,
261
+ "defaultValue": {
262
+ "name": "''",
263
+ "source": "'MANUAL'"
264
+ },
265
+ "type": "ACTOR",
266
+ "universalIdentifier": "5ed46c42-7860-5397-83ef-ecd5ff136503"
267
+ },
268
+ {
269
+ "name": "updatedBy",
270
+ "label": "Updated by",
271
+ "description": "The workspace member who last updated the record",
272
+ "icon": "IconUserCircle",
273
+ "isNullable": false,
274
+ "defaultValue": {
275
+ "name": "''",
276
+ "source": "'MANUAL'"
277
+ },
278
+ "type": "ACTOR",
279
+ "universalIdentifier": "a86014e4-ad77-5401-92aa-105e520abd55"
280
+ },
281
+ {
282
+ "name": "position",
283
+ "label": "Position",
284
+ "description": "Position",
285
+ "icon": "IconHierarchy2",
286
+ "isNullable": false,
287
+ "defaultValue": 0,
288
+ "type": "POSITION",
289
+ "universalIdentifier": "d6ffdd84-caac-53f7-b401-42fb448f42fb"
290
+ },
291
+ {
292
+ "name": "searchVector",
293
+ "label": "Search vector",
294
+ "icon": "IconSearch",
295
+ "description": "Search vector",
296
+ "isNullable": true,
297
+ "defaultValue": null,
298
+ "type": "TS_VECTOR",
299
+ "universalIdentifier": "ba7aaacb-375c-5e20-91ba-55234c072c4e"
300
+ },
301
+ {
302
+ "name": "timelineActivities",
303
+ "label": "Timeline Activities",
304
+ "description": "Intake Sources tied to the IntakeSource",
305
+ "icon": "IconBuildingSkyscraper",
306
+ "isNullable": true,
307
+ "type": "RELATION",
308
+ "universalSettings": {
309
+ "relationType": "ONE_TO_MANY"
310
+ },
311
+ "universalIdentifier": "5e2e3331-be31-5f37-b425-6b4f495795de",
312
+ "relationTargetFieldMetadataUniversalIdentifier": "a440989c-f2a9-5e39-a14b-ff7295893142",
313
+ "relationTargetObjectMetadataUniversalIdentifier": "20202020-6736-4337-b5c4-8b39fae325a5"
314
+ },
315
+ {
316
+ "name": "attachments",
317
+ "label": "Attachments",
318
+ "description": "Intake Sources tied to the IntakeSource",
319
+ "icon": "IconBuildingSkyscraper",
320
+ "isNullable": true,
321
+ "type": "RELATION",
322
+ "universalSettings": {
323
+ "relationType": "ONE_TO_MANY"
324
+ },
325
+ "universalIdentifier": "19509dfd-e915-572e-a569-0a8da31fba49",
326
+ "relationTargetFieldMetadataUniversalIdentifier": "905fe885-40b1-5397-b27c-05503a979200",
327
+ "relationTargetObjectMetadataUniversalIdentifier": "20202020-bd3d-4c60-8dca-571c71d4447a"
328
+ },
329
+ {
330
+ "name": "noteTargets",
331
+ "label": "Note Targets",
332
+ "description": "Intake Sources tied to the IntakeSource",
333
+ "icon": "IconBuildingSkyscraper",
334
+ "isNullable": true,
335
+ "type": "RELATION",
336
+ "universalSettings": {
337
+ "relationType": "ONE_TO_MANY"
338
+ },
339
+ "universalIdentifier": "4d1b1737-9ce0-5c87-aff1-a76e0d641932",
340
+ "relationTargetFieldMetadataUniversalIdentifier": "f82c94c8-1053-57ca-9b1b-3527c57fbd15",
341
+ "relationTargetObjectMetadataUniversalIdentifier": "20202020-fff0-4b44-be82-bda313884400"
342
+ },
343
+ {
344
+ "name": "taskTargets",
345
+ "label": "Task Targets",
346
+ "description": "Intake Sources tied to the IntakeSource",
347
+ "icon": "IconBuildingSkyscraper",
348
+ "isNullable": true,
349
+ "type": "RELATION",
350
+ "universalSettings": {
351
+ "relationType": "ONE_TO_MANY"
352
+ },
353
+ "universalIdentifier": "eab6f3c7-444b-54a6-8583-0313ee489c1b",
354
+ "relationTargetFieldMetadataUniversalIdentifier": "6c68eeaa-4aa9-5b5c-bc15-8945739527fa",
355
+ "relationTargetObjectMetadataUniversalIdentifier": "20202020-5a9a-44e8-95df-771cd06d0fb1"
356
+ }
357
+ ],
358
+ "labelIdentifierFieldMetadataUniversalIdentifier": "0deb7e4b-bb90-4c86-b903-5208b42041e2"
359
+ },
360
+ {
361
+ "universalIdentifier": "b77a2439-1503-4ef6-ab8b-8f4293bc19da",
362
+ "nameSingular": "intakeLog",
363
+ "namePlural": "intakeLogs",
364
+ "labelSingular": "Intake Log",
365
+ "labelPlural": "Intake Logs",
366
+ "description": "Full audit trail of every payload received by Intake.",
367
+ "icon": "IconListDetails",
368
+ "fields": [
369
+ {
370
+ "universalIdentifier": "8b6d26d1-f89c-486c-a617-9f9f6a9ca36d",
371
+ "name": "status",
372
+ "type": "SELECT",
373
+ "label": "Status",
374
+ "icon": "IconCircleDot",
375
+ "options": [
376
+ {
377
+ "value": "SUCCESS",
378
+ "label": "Success",
379
+ "position": 0,
380
+ "color": "green",
381
+ "id": "03da91b3-cbce-50f0-80c7-07c586169aa1"
382
+ },
383
+ {
384
+ "value": "PARTIAL",
385
+ "label": "Partial",
386
+ "position": 1,
387
+ "color": "yellow",
388
+ "id": "c5882999-ea69-55ad-ad75-7a9e7a102369"
389
+ },
390
+ {
391
+ "value": "FAILED",
392
+ "label": "Failed",
393
+ "position": 2,
394
+ "color": "red",
395
+ "id": "bc1390b7-f2ea-53b2-bd6c-5767bbb8988c"
396
+ },
397
+ {
398
+ "value": "DUPLICATE",
399
+ "label": "Duplicate",
400
+ "position": 3,
401
+ "color": "gray",
402
+ "id": "0e91b180-10fc-5375-b15c-769f47f34a8a"
403
+ }
404
+ ]
405
+ },
406
+ {
407
+ "universalIdentifier": "c43bb1ad-e78a-4c60-bd95-02475ede7f44",
408
+ "name": "payloadHash",
409
+ "type": "TEXT",
410
+ "label": "Payload Hash",
411
+ "description": "SHA-256 hash of the raw payload, used for idempotency.",
412
+ "icon": "IconFingerprint"
413
+ },
414
+ {
415
+ "universalIdentifier": "77a55116-a64b-4954-8369-341022dd5bdd",
416
+ "name": "recordId",
417
+ "type": "TEXT",
418
+ "label": "Record ID",
419
+ "description": "ID of the created or updated CRM record.",
420
+ "icon": "IconId",
421
+ "isNullable": true,
422
+ "defaultValue": null
423
+ },
424
+ {
425
+ "universalIdentifier": "02154e96-5808-48ed-8838-51083f174550",
426
+ "name": "recordType",
427
+ "type": "SELECT",
428
+ "label": "Record Type",
429
+ "icon": "IconDatabase",
430
+ "options": [
431
+ {
432
+ "value": "PERSON",
433
+ "label": "Person",
434
+ "position": 0,
435
+ "color": "blue",
436
+ "id": "18310b8a-f7c3-5e5d-8e8e-e473fae828a0"
437
+ },
438
+ {
439
+ "value": "COMPANY",
440
+ "label": "Company",
441
+ "position": 1,
442
+ "color": "green",
443
+ "id": "8be62ba0-a35a-594a-9249-84bdd76c5fa2"
444
+ }
445
+ ],
446
+ "isNullable": true,
447
+ "defaultValue": null
448
+ },
449
+ {
450
+ "universalIdentifier": "2295ca2b-b559-4b38-9771-12dd8d3d76d7",
451
+ "name": "fieldsCreated",
452
+ "type": "NUMBER",
453
+ "label": "Fields Created",
454
+ "description": "New schema fields added during this ingestion.",
455
+ "icon": "IconPlus",
456
+ "defaultValue": 0
457
+ },
458
+ {
459
+ "universalIdentifier": "83d07a0f-5bcd-4fb1-9759-f9b04b9381d8",
460
+ "name": "fieldsMatched",
461
+ "type": "NUMBER",
462
+ "label": "Fields Matched",
463
+ "description": "Existing fields successfully populated.",
464
+ "icon": "IconCheck",
465
+ "defaultValue": 0
466
+ },
467
+ {
468
+ "universalIdentifier": "4090acb1-f48a-4957-bb91-c642f8f434a7",
469
+ "name": "overflowCount",
470
+ "type": "NUMBER",
471
+ "label": "Overflow Fields",
472
+ "description": "Fields that could not be normalised and went into the note.",
473
+ "icon": "IconNotes",
474
+ "defaultValue": 0
475
+ },
476
+ {
477
+ "universalIdentifier": "a9191f27-4b40-42e9-8cce-20c75900e12c",
478
+ "name": "processingMs",
479
+ "type": "NUMBER",
480
+ "label": "Processing Time (ms)",
481
+ "icon": "IconClock",
482
+ "isNullable": true,
483
+ "defaultValue": null
484
+ },
485
+ {
486
+ "universalIdentifier": "8d9979f1-9774-43a8-b958-d1b37bd4ecc7",
487
+ "name": "error",
488
+ "type": "TEXT",
489
+ "label": "Error",
490
+ "icon": "IconAlertCircle",
491
+ "isNullable": true,
492
+ "defaultValue": null
493
+ },
494
+ {
495
+ "universalIdentifier": "a8d99fbd-722e-4987-8afe-b830ac026f0a",
496
+ "name": "processedAt",
497
+ "type": "DATE_TIME",
498
+ "label": "Processed At",
499
+ "icon": "IconCalendar"
500
+ },
501
+ {
502
+ "universalIdentifier": "b65c9e1c-f2c1-4c52-a5b3-1e1ac3139692",
503
+ "name": "rawPayload",
504
+ "type": "TEXT",
505
+ "label": "Raw Payload",
506
+ "description": "The original JSON payload — used for retrying failed ingestions.",
507
+ "icon": "IconCode",
508
+ "isNullable": true,
509
+ "defaultValue": null
510
+ },
511
+ {
512
+ "universalIdentifier": "b1c623ea-7a9a-47a5-bee4-35fdd668a637",
513
+ "name": "intakeSource",
514
+ "type": "RELATION",
515
+ "label": "Source",
516
+ "icon": "IconRadar2",
517
+ "isNullable": true,
518
+ "defaultValue": null,
519
+ "relationTargetObjectMetadataUniversalIdentifier": "8c1c227c-db7d-4834-b328-cacbe8af0bfc",
520
+ "relationTargetFieldMetadataUniversalIdentifier": "6ecfa369-22e0-4812-bb75-4338cea8be65",
521
+ "universalSettings": {
522
+ "relationType": "MANY_TO_ONE",
523
+ "onDelete": "SET_NULL",
524
+ "joinColumnName": "intakeSourceId"
525
+ }
526
+ },
527
+ {
528
+ "name": "id",
529
+ "label": "Id",
530
+ "description": "Id",
531
+ "icon": "Icon123",
532
+ "isNullable": false,
533
+ "defaultValue": "uuid",
534
+ "type": "UUID",
535
+ "universalIdentifier": "4ddec2fa-e9bd-5551-a907-cc8c95059585"
536
+ },
537
+ {
538
+ "name": "name",
539
+ "label": "Name",
540
+ "description": "Name",
541
+ "icon": "IconAbc",
542
+ "isNullable": true,
543
+ "defaultValue": null,
544
+ "type": "TEXT",
545
+ "universalIdentifier": "e8d66656-99e5-5224-8da6-1f7fcb2dda39"
546
+ },
547
+ {
548
+ "name": "createdAt",
549
+ "label": "Creation date",
550
+ "description": "Creation date",
551
+ "icon": "IconCalendar",
552
+ "isNullable": false,
553
+ "defaultValue": "now",
554
+ "type": "DATE_TIME",
555
+ "universalIdentifier": "4b256989-f0cc-5b05-9247-54374db8033f"
556
+ },
557
+ {
558
+ "name": "updatedAt",
559
+ "label": "Last update",
560
+ "description": "Last time the record was changed",
561
+ "icon": "IconCalendarClock",
562
+ "isNullable": false,
563
+ "defaultValue": "now",
564
+ "type": "DATE_TIME",
565
+ "universalIdentifier": "8070b1ea-3857-582d-938e-a9238dc15a18"
566
+ },
567
+ {
568
+ "name": "deletedAt",
569
+ "label": "Deleted at",
570
+ "description": "Deletion date",
571
+ "icon": "IconCalendarClock",
572
+ "isNullable": true,
573
+ "defaultValue": null,
574
+ "type": "DATE_TIME",
575
+ "universalIdentifier": "00a291ef-4677-5e6c-a5f1-ebc72f466f93"
576
+ },
577
+ {
578
+ "name": "createdBy",
579
+ "label": "Created by",
580
+ "description": "The creator of the record",
581
+ "icon": "IconCreativeCommonsSa",
582
+ "isNullable": false,
583
+ "defaultValue": {
584
+ "name": "''",
585
+ "source": "'MANUAL'"
586
+ },
587
+ "type": "ACTOR",
588
+ "universalIdentifier": "825ff69f-b64f-57d0-b883-a010b80b3c14"
589
+ },
590
+ {
591
+ "name": "updatedBy",
592
+ "label": "Updated by",
593
+ "description": "The workspace member who last updated the record",
594
+ "icon": "IconUserCircle",
595
+ "isNullable": false,
596
+ "defaultValue": {
597
+ "name": "''",
598
+ "source": "'MANUAL'"
599
+ },
600
+ "type": "ACTOR",
601
+ "universalIdentifier": "b69aef32-6704-56fa-a808-1013cc0d4740"
602
+ },
603
+ {
604
+ "name": "position",
605
+ "label": "Position",
606
+ "description": "Position",
607
+ "icon": "IconHierarchy2",
608
+ "isNullable": false,
609
+ "defaultValue": 0,
610
+ "type": "POSITION",
611
+ "universalIdentifier": "37c49ba7-d1ea-55ca-bdf6-c46029872c6e"
612
+ },
613
+ {
614
+ "name": "searchVector",
615
+ "label": "Search vector",
616
+ "icon": "IconSearch",
617
+ "description": "Search vector",
618
+ "isNullable": true,
619
+ "defaultValue": null,
620
+ "type": "TS_VECTOR",
621
+ "universalIdentifier": "8ff806b1-14be-5696-ae1a-b68d32b00d2c"
622
+ },
623
+ {
624
+ "name": "timelineActivities",
625
+ "label": "Timeline Activities",
626
+ "description": "Intake Logs tied to the IntakeLog",
627
+ "icon": "IconBuildingSkyscraper",
628
+ "isNullable": true,
629
+ "type": "RELATION",
630
+ "universalSettings": {
631
+ "relationType": "ONE_TO_MANY"
632
+ },
633
+ "universalIdentifier": "5d148cbb-7397-5eb2-b3bf-768f7d14f54a",
634
+ "relationTargetFieldMetadataUniversalIdentifier": "edb9d4f2-b083-51fc-8cdd-6d17bd8a363f",
635
+ "relationTargetObjectMetadataUniversalIdentifier": "20202020-6736-4337-b5c4-8b39fae325a5"
636
+ },
637
+ {
638
+ "name": "attachments",
639
+ "label": "Attachments",
640
+ "description": "Intake Logs tied to the IntakeLog",
641
+ "icon": "IconBuildingSkyscraper",
642
+ "isNullable": true,
643
+ "type": "RELATION",
644
+ "universalSettings": {
645
+ "relationType": "ONE_TO_MANY"
646
+ },
647
+ "universalIdentifier": "b474ec7f-5d71-54e4-85a8-4637a0c2a7c1",
648
+ "relationTargetFieldMetadataUniversalIdentifier": "82b32632-115d-5aee-9250-9e8a5f232b70",
649
+ "relationTargetObjectMetadataUniversalIdentifier": "20202020-bd3d-4c60-8dca-571c71d4447a"
650
+ },
651
+ {
652
+ "name": "noteTargets",
653
+ "label": "Note Targets",
654
+ "description": "Intake Logs tied to the IntakeLog",
655
+ "icon": "IconBuildingSkyscraper",
656
+ "isNullable": true,
657
+ "type": "RELATION",
658
+ "universalSettings": {
659
+ "relationType": "ONE_TO_MANY"
660
+ },
661
+ "universalIdentifier": "4cb29a92-e48d-5ab1-a8a4-62c108e074f2",
662
+ "relationTargetFieldMetadataUniversalIdentifier": "5e4a5b76-3079-53fc-b3b7-6c788c22e93a",
663
+ "relationTargetObjectMetadataUniversalIdentifier": "20202020-fff0-4b44-be82-bda313884400"
664
+ },
665
+ {
666
+ "name": "taskTargets",
667
+ "label": "Task Targets",
668
+ "description": "Intake Logs tied to the IntakeLog",
669
+ "icon": "IconBuildingSkyscraper",
670
+ "isNullable": true,
671
+ "type": "RELATION",
672
+ "universalSettings": {
673
+ "relationType": "ONE_TO_MANY"
674
+ },
675
+ "universalIdentifier": "4866676f-15a4-57e7-bc12-d27b21c3f8e3",
676
+ "relationTargetFieldMetadataUniversalIdentifier": "bf04b2bd-c579-5eb0-9ae4-98c17cbb7014",
677
+ "relationTargetObjectMetadataUniversalIdentifier": "20202020-5a9a-44e8-95df-771cd06d0fb1"
678
+ }
679
+ ],
680
+ "labelIdentifierFieldMetadataUniversalIdentifier": "e8d66656-99e5-5224-8da6-1f7fcb2dda39"
681
+ },
682
+ {
683
+ "universalIdentifier": "e74df817-ff25-4bfb-bdf0-651662ca327e",
684
+ "nameSingular": "intakeFieldRule",
685
+ "namePlural": "intakeFieldRules",
686
+ "labelSingular": "Field Rule",
687
+ "labelPlural": "Field Rules",
688
+ "description": "User-configurable normalization rules. Global rules apply to all sources; source-specific rules override them.",
689
+ "icon": "IconArrowsExchange",
690
+ "fields": [
691
+ {
692
+ "universalIdentifier": "757201a0-9f64-47b9-bf3a-a793074bf84e",
693
+ "name": "inputPattern",
694
+ "type": "TEXT",
695
+ "label": "Input Pattern",
696
+ "description": "Exact key name or a JavaScript regex string to match against incoming field names.",
697
+ "icon": "IconSearch"
698
+ },
699
+ {
700
+ "universalIdentifier": "fafebc55-a2cc-4c9f-975b-050c2676659d",
701
+ "name": "canonicalName",
702
+ "type": "TEXT",
703
+ "label": "Canonical Field Name",
704
+ "description": "The target field name in Twenty. Use ext_ prefix for custom fields.",
705
+ "icon": "IconTag"
706
+ },
707
+ {
708
+ "universalIdentifier": "72d1f6d8-d63e-419e-a244-8127d7b4705f",
709
+ "name": "fieldType",
710
+ "type": "SELECT",
711
+ "label": "Field Type",
712
+ "icon": "IconDatabase",
713
+ "options": [
714
+ {
715
+ "value": "TEXT",
716
+ "label": "Text",
717
+ "position": 0,
718
+ "color": "gray",
719
+ "id": "64f87c36-c1c0-5559-8e95-e21e83c5c93a"
720
+ },
721
+ {
722
+ "value": "NUMBER",
723
+ "label": "Number",
724
+ "position": 1,
725
+ "color": "blue",
726
+ "id": "66ae554a-6b77-5f9e-b3f3-ced2978300cb"
727
+ },
728
+ {
729
+ "value": "BOOLEAN",
730
+ "label": "Boolean",
731
+ "position": 2,
732
+ "color": "green",
733
+ "id": "4bcf3c1f-bbc0-5204-9db7-84dc41708e9d"
734
+ },
735
+ {
736
+ "value": "DATE_TIME",
737
+ "label": "Date/Time",
738
+ "position": 3,
739
+ "color": "orange",
740
+ "id": "56a4afa6-108a-5128-9b11-c53a8dc81a58"
741
+ },
742
+ {
743
+ "value": "LINKS",
744
+ "label": "Link",
745
+ "position": 4,
746
+ "color": "purple",
747
+ "id": "58a06ba8-2bb1-5475-8dcd-f712c9f8f009"
748
+ },
749
+ {
750
+ "value": "EMAILS",
751
+ "label": "Email",
752
+ "position": 5,
753
+ "color": "turquoise",
754
+ "id": "f355003c-53a7-59ee-8d79-11674b0a413c"
755
+ },
756
+ {
757
+ "value": "PHONES",
758
+ "label": "Phone",
759
+ "position": 6,
760
+ "color": "pink",
761
+ "id": "111b696c-988c-5ba5-b0b1-3193b0583f6b"
762
+ },
763
+ {
764
+ "value": "NOTE",
765
+ "label": "Always Note",
766
+ "position": 7,
767
+ "color": "yellow",
768
+ "id": "985df4ef-bfea-5f63-b85d-9cabc4991c4b"
769
+ },
770
+ {
771
+ "value": "SKIP",
772
+ "label": "Skip",
773
+ "position": 8,
774
+ "color": "red",
775
+ "id": "d473ce34-345e-561e-88af-a346c3577bcd"
776
+ }
777
+ ],
778
+ "defaultValue": "'TEXT'"
779
+ },
780
+ {
781
+ "universalIdentifier": "911df299-940b-44f9-92f7-3fd01fde01a7",
782
+ "name": "priority",
783
+ "type": "NUMBER",
784
+ "label": "Priority",
785
+ "description": "Higher priority rules are checked first. Default 0.",
786
+ "icon": "IconSortAscending",
787
+ "defaultValue": 0
788
+ },
789
+ {
790
+ "universalIdentifier": "6f9cd96d-aecd-437f-a7b5-d45548782771",
791
+ "name": "isActive",
792
+ "type": "BOOLEAN",
793
+ "label": "Active",
794
+ "icon": "IconToggleRight",
795
+ "defaultValue": "'true'"
796
+ },
797
+ {
798
+ "universalIdentifier": "396dd1f1-3873-4efa-a6bb-7b41eda14d83",
799
+ "name": "intakeSource",
800
+ "type": "RELATION",
801
+ "label": "Source",
802
+ "description": "Leave empty to make this a global rule that applies to all sources.",
803
+ "icon": "IconRadar2",
804
+ "isNullable": true,
805
+ "defaultValue": null,
806
+ "relationTargetObjectMetadataUniversalIdentifier": "8c1c227c-db7d-4834-b328-cacbe8af0bfc",
807
+ "relationTargetFieldMetadataUniversalIdentifier": "776fefaf-0eee-4ec0-93e0-d11bd80c1e20",
808
+ "universalSettings": {
809
+ "relationType": "MANY_TO_ONE",
810
+ "onDelete": "SET_NULL",
811
+ "joinColumnName": "intakeSourceId"
812
+ }
813
+ },
814
+ {
815
+ "name": "id",
816
+ "label": "Id",
817
+ "description": "Id",
818
+ "icon": "Icon123",
819
+ "isNullable": false,
820
+ "defaultValue": "uuid",
821
+ "type": "UUID",
822
+ "universalIdentifier": "a1fe6b93-aca6-541e-9bd3-72144f13d202"
823
+ },
824
+ {
825
+ "name": "name",
826
+ "label": "Name",
827
+ "description": "Name",
828
+ "icon": "IconAbc",
829
+ "isNullable": true,
830
+ "defaultValue": null,
831
+ "type": "TEXT",
832
+ "universalIdentifier": "39ee0f44-bd52-532c-8a67-8197ce0a67e5"
833
+ },
834
+ {
835
+ "name": "createdAt",
836
+ "label": "Creation date",
837
+ "description": "Creation date",
838
+ "icon": "IconCalendar",
839
+ "isNullable": false,
840
+ "defaultValue": "now",
841
+ "type": "DATE_TIME",
842
+ "universalIdentifier": "ef573547-ba3b-5776-8726-7a9ebf1a71ab"
843
+ },
844
+ {
845
+ "name": "updatedAt",
846
+ "label": "Last update",
847
+ "description": "Last time the record was changed",
848
+ "icon": "IconCalendarClock",
849
+ "isNullable": false,
850
+ "defaultValue": "now",
851
+ "type": "DATE_TIME",
852
+ "universalIdentifier": "4d2c5099-a59b-5fa2-9278-065daeee163b"
853
+ },
854
+ {
855
+ "name": "deletedAt",
856
+ "label": "Deleted at",
857
+ "description": "Deletion date",
858
+ "icon": "IconCalendarClock",
859
+ "isNullable": true,
860
+ "defaultValue": null,
861
+ "type": "DATE_TIME",
862
+ "universalIdentifier": "04da2237-608a-5c26-b8f3-87c2a807f84b"
863
+ },
864
+ {
865
+ "name": "createdBy",
866
+ "label": "Created by",
867
+ "description": "The creator of the record",
868
+ "icon": "IconCreativeCommonsSa",
869
+ "isNullable": false,
870
+ "defaultValue": {
871
+ "name": "''",
872
+ "source": "'MANUAL'"
873
+ },
874
+ "type": "ACTOR",
875
+ "universalIdentifier": "30eb6e1d-d6b6-533c-be73-0e7e14718122"
876
+ },
877
+ {
878
+ "name": "updatedBy",
879
+ "label": "Updated by",
880
+ "description": "The workspace member who last updated the record",
881
+ "icon": "IconUserCircle",
882
+ "isNullable": false,
883
+ "defaultValue": {
884
+ "name": "''",
885
+ "source": "'MANUAL'"
886
+ },
887
+ "type": "ACTOR",
888
+ "universalIdentifier": "b25e3bb7-1f28-50cb-99f1-0d7ff126c1a5"
889
+ },
890
+ {
891
+ "name": "position",
892
+ "label": "Position",
893
+ "description": "Position",
894
+ "icon": "IconHierarchy2",
895
+ "isNullable": false,
896
+ "defaultValue": 0,
897
+ "type": "POSITION",
898
+ "universalIdentifier": "d31b5f8d-a890-5007-8127-3348636ab8f1"
899
+ },
900
+ {
901
+ "name": "searchVector",
902
+ "label": "Search vector",
903
+ "icon": "IconSearch",
904
+ "description": "Search vector",
905
+ "isNullable": true,
906
+ "defaultValue": null,
907
+ "type": "TS_VECTOR",
908
+ "universalIdentifier": "58cee060-7926-5d8f-aa5c-6f4f8398e8d2"
909
+ },
910
+ {
911
+ "name": "timelineActivities",
912
+ "label": "Timeline Activities",
913
+ "description": "Field Rules tied to the IntakeFieldRule",
914
+ "icon": "IconBuildingSkyscraper",
915
+ "isNullable": true,
916
+ "type": "RELATION",
917
+ "universalSettings": {
918
+ "relationType": "ONE_TO_MANY"
919
+ },
920
+ "universalIdentifier": "d623dc6c-f7b9-552a-9a24-aa20d5bd0fed",
921
+ "relationTargetFieldMetadataUniversalIdentifier": "d43d0f3b-d733-558b-b780-8adf741e396e",
922
+ "relationTargetObjectMetadataUniversalIdentifier": "20202020-6736-4337-b5c4-8b39fae325a5"
923
+ },
924
+ {
925
+ "name": "attachments",
926
+ "label": "Attachments",
927
+ "description": "Field Rules tied to the IntakeFieldRule",
928
+ "icon": "IconBuildingSkyscraper",
929
+ "isNullable": true,
930
+ "type": "RELATION",
931
+ "universalSettings": {
932
+ "relationType": "ONE_TO_MANY"
933
+ },
934
+ "universalIdentifier": "af6e0759-9134-5ccd-a4d5-a35d0b6b8f3e",
935
+ "relationTargetFieldMetadataUniversalIdentifier": "4ca79582-c8dd-5c95-b322-4ebdc46903f8",
936
+ "relationTargetObjectMetadataUniversalIdentifier": "20202020-bd3d-4c60-8dca-571c71d4447a"
937
+ },
938
+ {
939
+ "name": "noteTargets",
940
+ "label": "Note Targets",
941
+ "description": "Field Rules tied to the IntakeFieldRule",
942
+ "icon": "IconBuildingSkyscraper",
943
+ "isNullable": true,
944
+ "type": "RELATION",
945
+ "universalSettings": {
946
+ "relationType": "ONE_TO_MANY"
947
+ },
948
+ "universalIdentifier": "c4122c5a-e823-5e1d-8879-8579ed03d35c",
949
+ "relationTargetFieldMetadataUniversalIdentifier": "f6c2e5df-0c66-5db8-8d93-11ece19f1d0f",
950
+ "relationTargetObjectMetadataUniversalIdentifier": "20202020-fff0-4b44-be82-bda313884400"
951
+ },
952
+ {
953
+ "name": "taskTargets",
954
+ "label": "Task Targets",
955
+ "description": "Field Rules tied to the IntakeFieldRule",
956
+ "icon": "IconBuildingSkyscraper",
957
+ "isNullable": true,
958
+ "type": "RELATION",
959
+ "universalSettings": {
960
+ "relationType": "ONE_TO_MANY"
961
+ },
962
+ "universalIdentifier": "c65da2ae-d0cc-5778-be63-9e89d5d38a45",
963
+ "relationTargetFieldMetadataUniversalIdentifier": "9dfb6823-e56e-5f8b-bb52-8b900b22e0a9",
964
+ "relationTargetObjectMetadataUniversalIdentifier": "20202020-5a9a-44e8-95df-771cd06d0fb1"
965
+ }
966
+ ],
967
+ "labelIdentifierFieldMetadataUniversalIdentifier": "39ee0f44-bd52-532c-8a67-8197ce0a67e5"
968
+ }
969
+ ],
970
+ "fields": [
971
+ {
972
+ "name": "targetIntakeFieldRule",
973
+ "label": "IntakeFieldRule",
974
+ "description": "IntakeFieldRule Field Rule",
975
+ "icon": "IconFileImport",
976
+ "isNullable": true,
977
+ "universalSettings": {
978
+ "relationType": "MANY_TO_ONE",
979
+ "onDelete": "SET_NULL",
980
+ "joinColumnName": "targetIntakeFieldRuleId"
981
+ },
982
+ "universalIdentifier": "4ca79582-c8dd-5c95-b322-4ebdc46903f8",
983
+ "objectUniversalIdentifier": "20202020-bd3d-4c60-8dca-571c71d4447a",
984
+ "relationTargetFieldMetadataUniversalIdentifier": "af6e0759-9134-5ccd-a4d5-a35d0b6b8f3e",
985
+ "relationTargetObjectMetadataUniversalIdentifier": "e74df817-ff25-4bfb-bdf0-651662ca327e",
986
+ "type": "MORPH_RELATION",
987
+ "morphId": "20202020-f634-435d-ab8d-e1168b375c69"
988
+ },
989
+ {
990
+ "name": "targetIntakeLog",
991
+ "label": "IntakeLog",
992
+ "description": "IntakeLog Intake Log",
993
+ "icon": "IconCheckbox",
994
+ "isNullable": true,
995
+ "universalSettings": {
996
+ "relationType": "MANY_TO_ONE",
997
+ "onDelete": "SET_NULL",
998
+ "joinColumnName": "targetIntakeLogId"
999
+ },
1000
+ "universalIdentifier": "5e4a5b76-3079-53fc-b3b7-6c788c22e93a",
1001
+ "objectUniversalIdentifier": "20202020-fff0-4b44-be82-bda313884400",
1002
+ "relationTargetFieldMetadataUniversalIdentifier": "4cb29a92-e48d-5ab1-a8a4-62c108e074f2",
1003
+ "relationTargetObjectMetadataUniversalIdentifier": "b77a2439-1503-4ef6-ab8b-8f4293bc19da",
1004
+ "type": "MORPH_RELATION",
1005
+ "morphId": "20202020-f635-435d-ab8d-e1168b375c70"
1006
+ },
1007
+ {
1008
+ "name": "targetIntakeSource",
1009
+ "label": "IntakeSource",
1010
+ "description": "IntakeSource Intake Source",
1011
+ "icon": "IconCheckbox",
1012
+ "isNullable": true,
1013
+ "universalSettings": {
1014
+ "relationType": "MANY_TO_ONE",
1015
+ "onDelete": "SET_NULL",
1016
+ "joinColumnName": "targetIntakeSourceId"
1017
+ },
1018
+ "universalIdentifier": "6c68eeaa-4aa9-5b5c-bc15-8945739527fa",
1019
+ "objectUniversalIdentifier": "20202020-5a9a-44e8-95df-771cd06d0fb1",
1020
+ "relationTargetFieldMetadataUniversalIdentifier": "eab6f3c7-444b-54a6-8583-0313ee489c1b",
1021
+ "relationTargetObjectMetadataUniversalIdentifier": "8c1c227c-db7d-4834-b328-cacbe8af0bfc",
1022
+ "type": "MORPH_RELATION",
1023
+ "morphId": "20202020-f636-435d-ab8d-e1168b375c71"
1024
+ },
1025
+ {
1026
+ "name": "targetIntakeLog",
1027
+ "label": "IntakeLog",
1028
+ "description": "IntakeLog Intake Log",
1029
+ "icon": "IconFileImport",
1030
+ "isNullable": true,
1031
+ "universalSettings": {
1032
+ "relationType": "MANY_TO_ONE",
1033
+ "onDelete": "SET_NULL",
1034
+ "joinColumnName": "targetIntakeLogId"
1035
+ },
1036
+ "universalIdentifier": "82b32632-115d-5aee-9250-9e8a5f232b70",
1037
+ "objectUniversalIdentifier": "20202020-bd3d-4c60-8dca-571c71d4447a",
1038
+ "relationTargetFieldMetadataUniversalIdentifier": "b474ec7f-5d71-54e4-85a8-4637a0c2a7c1",
1039
+ "relationTargetObjectMetadataUniversalIdentifier": "b77a2439-1503-4ef6-ab8b-8f4293bc19da",
1040
+ "type": "MORPH_RELATION",
1041
+ "morphId": "20202020-f634-435d-ab8d-e1168b375c69"
1042
+ },
1043
+ {
1044
+ "name": "targetIntakeSource",
1045
+ "label": "IntakeSource",
1046
+ "description": "IntakeSource Intake Source",
1047
+ "icon": "IconFileImport",
1048
+ "isNullable": true,
1049
+ "universalSettings": {
1050
+ "relationType": "MANY_TO_ONE",
1051
+ "onDelete": "SET_NULL",
1052
+ "joinColumnName": "targetIntakeSourceId"
1053
+ },
1054
+ "universalIdentifier": "905fe885-40b1-5397-b27c-05503a979200",
1055
+ "objectUniversalIdentifier": "20202020-bd3d-4c60-8dca-571c71d4447a",
1056
+ "relationTargetFieldMetadataUniversalIdentifier": "19509dfd-e915-572e-a569-0a8da31fba49",
1057
+ "relationTargetObjectMetadataUniversalIdentifier": "8c1c227c-db7d-4834-b328-cacbe8af0bfc",
1058
+ "type": "MORPH_RELATION",
1059
+ "morphId": "20202020-f634-435d-ab8d-e1168b375c69"
1060
+ },
1061
+ {
1062
+ "name": "targetIntakeFieldRule",
1063
+ "label": "IntakeFieldRule",
1064
+ "description": "IntakeFieldRule Field Rule",
1065
+ "icon": "IconCheckbox",
1066
+ "isNullable": true,
1067
+ "universalSettings": {
1068
+ "relationType": "MANY_TO_ONE",
1069
+ "onDelete": "SET_NULL",
1070
+ "joinColumnName": "targetIntakeFieldRuleId"
1071
+ },
1072
+ "universalIdentifier": "9dfb6823-e56e-5f8b-bb52-8b900b22e0a9",
1073
+ "objectUniversalIdentifier": "20202020-5a9a-44e8-95df-771cd06d0fb1",
1074
+ "relationTargetFieldMetadataUniversalIdentifier": "c65da2ae-d0cc-5778-be63-9e89d5d38a45",
1075
+ "relationTargetObjectMetadataUniversalIdentifier": "e74df817-ff25-4bfb-bdf0-651662ca327e",
1076
+ "type": "MORPH_RELATION",
1077
+ "morphId": "20202020-f636-435d-ab8d-e1168b375c71"
1078
+ },
1079
+ {
1080
+ "name": "targetIntakeSource",
1081
+ "label": "IntakeSource",
1082
+ "description": "IntakeSource Intake Source",
1083
+ "icon": "IconTimelineEvent",
1084
+ "isNullable": true,
1085
+ "universalSettings": {
1086
+ "relationType": "MANY_TO_ONE",
1087
+ "onDelete": "SET_NULL",
1088
+ "joinColumnName": "targetIntakeSourceId"
1089
+ },
1090
+ "universalIdentifier": "a440989c-f2a9-5e39-a14b-ff7295893142",
1091
+ "objectUniversalIdentifier": "20202020-6736-4337-b5c4-8b39fae325a5",
1092
+ "relationTargetFieldMetadataUniversalIdentifier": "5e2e3331-be31-5f37-b425-6b4f495795de",
1093
+ "relationTargetObjectMetadataUniversalIdentifier": "8c1c227c-db7d-4834-b328-cacbe8af0bfc",
1094
+ "type": "MORPH_RELATION",
1095
+ "morphId": "20202020-9a2b-4c3d-a4e5-f6a7b8c9d0e1"
1096
+ },
1097
+ {
1098
+ "name": "targetIntakeLog",
1099
+ "label": "IntakeLog",
1100
+ "description": "IntakeLog Intake Log",
1101
+ "icon": "IconCheckbox",
1102
+ "isNullable": true,
1103
+ "universalSettings": {
1104
+ "relationType": "MANY_TO_ONE",
1105
+ "onDelete": "SET_NULL",
1106
+ "joinColumnName": "targetIntakeLogId"
1107
+ },
1108
+ "universalIdentifier": "bf04b2bd-c579-5eb0-9ae4-98c17cbb7014",
1109
+ "objectUniversalIdentifier": "20202020-5a9a-44e8-95df-771cd06d0fb1",
1110
+ "relationTargetFieldMetadataUniversalIdentifier": "4866676f-15a4-57e7-bc12-d27b21c3f8e3",
1111
+ "relationTargetObjectMetadataUniversalIdentifier": "b77a2439-1503-4ef6-ab8b-8f4293bc19da",
1112
+ "type": "MORPH_RELATION",
1113
+ "morphId": "20202020-f636-435d-ab8d-e1168b375c71"
1114
+ },
1115
+ {
1116
+ "name": "targetIntakeFieldRule",
1117
+ "label": "IntakeFieldRule",
1118
+ "description": "IntakeFieldRule Field Rule",
1119
+ "icon": "IconTimelineEvent",
1120
+ "isNullable": true,
1121
+ "universalSettings": {
1122
+ "relationType": "MANY_TO_ONE",
1123
+ "onDelete": "SET_NULL",
1124
+ "joinColumnName": "targetIntakeFieldRuleId"
1125
+ },
1126
+ "universalIdentifier": "d43d0f3b-d733-558b-b780-8adf741e396e",
1127
+ "objectUniversalIdentifier": "20202020-6736-4337-b5c4-8b39fae325a5",
1128
+ "relationTargetFieldMetadataUniversalIdentifier": "d623dc6c-f7b9-552a-9a24-aa20d5bd0fed",
1129
+ "relationTargetObjectMetadataUniversalIdentifier": "e74df817-ff25-4bfb-bdf0-651662ca327e",
1130
+ "type": "MORPH_RELATION",
1131
+ "morphId": "20202020-9a2b-4c3d-a4e5-f6a7b8c9d0e1"
1132
+ },
1133
+ {
1134
+ "name": "targetIntakeLog",
1135
+ "label": "IntakeLog",
1136
+ "description": "IntakeLog Intake Log",
1137
+ "icon": "IconTimelineEvent",
1138
+ "isNullable": true,
1139
+ "universalSettings": {
1140
+ "relationType": "MANY_TO_ONE",
1141
+ "onDelete": "SET_NULL",
1142
+ "joinColumnName": "targetIntakeLogId"
1143
+ },
1144
+ "universalIdentifier": "edb9d4f2-b083-51fc-8cdd-6d17bd8a363f",
1145
+ "objectUniversalIdentifier": "20202020-6736-4337-b5c4-8b39fae325a5",
1146
+ "relationTargetFieldMetadataUniversalIdentifier": "5d148cbb-7397-5eb2-b3bf-768f7d14f54a",
1147
+ "relationTargetObjectMetadataUniversalIdentifier": "b77a2439-1503-4ef6-ab8b-8f4293bc19da",
1148
+ "type": "MORPH_RELATION",
1149
+ "morphId": "20202020-9a2b-4c3d-a4e5-f6a7b8c9d0e1"
1150
+ },
1151
+ {
1152
+ "name": "targetIntakeFieldRule",
1153
+ "label": "IntakeFieldRule",
1154
+ "description": "IntakeFieldRule Field Rule",
1155
+ "icon": "IconCheckbox",
1156
+ "isNullable": true,
1157
+ "universalSettings": {
1158
+ "relationType": "MANY_TO_ONE",
1159
+ "onDelete": "SET_NULL",
1160
+ "joinColumnName": "targetIntakeFieldRuleId"
1161
+ },
1162
+ "universalIdentifier": "f6c2e5df-0c66-5db8-8d93-11ece19f1d0f",
1163
+ "objectUniversalIdentifier": "20202020-fff0-4b44-be82-bda313884400",
1164
+ "relationTargetFieldMetadataUniversalIdentifier": "c4122c5a-e823-5e1d-8879-8579ed03d35c",
1165
+ "relationTargetObjectMetadataUniversalIdentifier": "e74df817-ff25-4bfb-bdf0-651662ca327e",
1166
+ "type": "MORPH_RELATION",
1167
+ "morphId": "20202020-f635-435d-ab8d-e1168b375c70"
1168
+ },
1169
+ {
1170
+ "name": "targetIntakeSource",
1171
+ "label": "IntakeSource",
1172
+ "description": "IntakeSource Intake Source",
1173
+ "icon": "IconCheckbox",
1174
+ "isNullable": true,
1175
+ "universalSettings": {
1176
+ "relationType": "MANY_TO_ONE",
1177
+ "onDelete": "SET_NULL",
1178
+ "joinColumnName": "targetIntakeSourceId"
1179
+ },
1180
+ "universalIdentifier": "f82c94c8-1053-57ca-9b1b-3527c57fbd15",
1181
+ "objectUniversalIdentifier": "20202020-fff0-4b44-be82-bda313884400",
1182
+ "relationTargetFieldMetadataUniversalIdentifier": "4d1b1737-9ce0-5c87-aff1-a76e0d641932",
1183
+ "relationTargetObjectMetadataUniversalIdentifier": "8c1c227c-db7d-4834-b328-cacbe8af0bfc",
1184
+ "type": "MORPH_RELATION",
1185
+ "morphId": "20202020-f635-435d-ab8d-e1168b375c70"
1186
+ }
1187
+ ],
1188
+ "roles": [
1189
+ {
1190
+ "universalIdentifier": "3dd2cdb0-32c7-44b4-9f7b-0a9c667ec249",
1191
+ "label": "Intake App Role",
1192
+ "description": "Allows Intake to read and write People, Companies, Notes, Opportunities, and app objects. Required for schema extension via the metadata API.",
1193
+ "canReadAllObjectRecords": true,
1194
+ "canUpdateAllObjectRecords": true,
1195
+ "canSoftDeleteAllObjectRecords": false,
1196
+ "canDestroyAllObjectRecords": false,
1197
+ "canUpdateAllSettings": true,
1198
+ "canBeAssignedToAgents": false,
1199
+ "canBeAssignedToUsers": false,
1200
+ "canBeAssignedToApiKeys": false,
1201
+ "objectPermissions": [],
1202
+ "fieldPermissions": [],
1203
+ "permissionFlags": []
1204
+ }
1205
+ ],
1206
+ "skills": [],
1207
+ "agents": [],
1208
+ "connectionProviders": [],
1209
+ "logicFunctions": [
1210
+ {
1211
+ "universalIdentifier": "3f7a9c21-8d4b-4e6f-a1c2-5b8d0f2e7a4c",
1212
+ "name": "intake-test",
1213
+ "description": "Dry-run: validates a payload and shows what would be created without writing to the CRM.",
1214
+ "timeoutSeconds": 15,
1215
+ "httpRouteTriggerSettings": {
1216
+ "path": "/intake/:slug/test",
1217
+ "httpMethod": "POST",
1218
+ "isAuthRequired": false
1219
+ },
1220
+ "handlerName": "default.config.handler",
1221
+ "sourceHandlerPath": "src/logic-functions/test-ingest.ts",
1222
+ "builtHandlerPath": "src/logic-functions/test-ingest.mjs",
1223
+ "builtHandlerChecksum": "7ad171960070509ea337f4a57efb7013"
1224
+ },
1225
+ {
1226
+ "universalIdentifier": "4ece4e39-286b-4820-81f4-b7beee71d092",
1227
+ "name": "intake-health",
1228
+ "description": "Health check for the Intake app.",
1229
+ "timeoutSeconds": 5,
1230
+ "httpRouteTriggerSettings": {
1231
+ "path": "/intake/health",
1232
+ "httpMethod": "GET",
1233
+ "isAuthRequired": false
1234
+ },
1235
+ "handlerName": "default.config.handler",
1236
+ "sourceHandlerPath": "src/logic-functions/health.ts",
1237
+ "builtHandlerPath": "src/logic-functions/health.mjs",
1238
+ "builtHandlerChecksum": "3dd92b7d9771104d3523c3bf69f141a8"
1239
+ },
1240
+ {
1241
+ "universalIdentifier": "56d46e18-6cae-4d99-9893-b7d70740c9db",
1242
+ "name": "intake-register",
1243
+ "description": "Programmatically register a new Intake source and get back a webhook URL + signing secret.",
1244
+ "timeoutSeconds": 10,
1245
+ "httpRouteTriggerSettings": {
1246
+ "path": "/intake/sources/register",
1247
+ "httpMethod": "POST",
1248
+ "isAuthRequired": true
1249
+ },
1250
+ "handlerName": "default.config.handler",
1251
+ "sourceHandlerPath": "src/logic-functions/register.ts",
1252
+ "builtHandlerPath": "src/logic-functions/register.mjs",
1253
+ "builtHandlerChecksum": "d0c48bdcd420ed00dbc2c1f5acf01ecd"
1254
+ },
1255
+ {
1256
+ "universalIdentifier": "8323c257-48fe-4bb6-b1dd-166844f575c0",
1257
+ "name": "intake-webhook",
1258
+ "description": "Receives lead payloads from any source and ingests them into Twenty CRM.",
1259
+ "timeoutSeconds": 30,
1260
+ "httpRouteTriggerSettings": {
1261
+ "path": "/intake/:slug",
1262
+ "httpMethod": "POST",
1263
+ "isAuthRequired": false,
1264
+ "forwardedRequestHeaders": [
1265
+ "x-webhook-signature",
1266
+ "x-intake-source",
1267
+ "content-type"
1268
+ ]
1269
+ },
1270
+ "handlerName": "default.config.handler",
1271
+ "sourceHandlerPath": "src/logic-functions/webhook.ts",
1272
+ "builtHandlerPath": "src/logic-functions/webhook.mjs",
1273
+ "builtHandlerChecksum": "2cc3c73124991cc5be232d24269c4481"
1274
+ },
1275
+ {
1276
+ "universalIdentifier": "90f20396-a69a-4ae4-af20-6be65c565bb5",
1277
+ "name": "intake-retry",
1278
+ "description": "Retry a failed ingestion using the stored raw payload from an IntakeLog record.",
1279
+ "timeoutSeconds": 30,
1280
+ "httpRouteTriggerSettings": {
1281
+ "path": "/intake/logs/:logId/retry",
1282
+ "httpMethod": "POST",
1283
+ "isAuthRequired": true
1284
+ },
1285
+ "handlerName": "default.config.handler",
1286
+ "sourceHandlerPath": "src/logic-functions/retry.ts",
1287
+ "builtHandlerPath": "src/logic-functions/retry.mjs",
1288
+ "builtHandlerChecksum": "e24731ca4d97b20b70f084a5a5c39133"
1289
+ },
1290
+ {
1291
+ "universalIdentifier": "e836fdd6-fd54-4aa4-ba6d-87d5a02148ef",
1292
+ "name": "intake-post-install",
1293
+ "shouldRunOnVersionUpgrade": false,
1294
+ "handlerName": "default.config.handler",
1295
+ "sourceHandlerPath": "src/post-install.ts",
1296
+ "builtHandlerPath": "src/post-install.mjs",
1297
+ "builtHandlerChecksum": "70f037bb325ec01319f1f7620da99829"
1298
+ }
1299
+ ],
1300
+ "frontComponents": [
1301
+ {
1302
+ "universalIdentifier": "4e4cfb3b-508c-413b-a1b2-192a51c31ed4",
1303
+ "name": "intake-settings-panel",
1304
+ "description": "Custom settings panel with inline documentation for all Intake configuration variables.",
1305
+ "componentName": "SettingsPanel",
1306
+ "sourceComponentPath": "src/front-components/settings-panel.tsx",
1307
+ "builtComponentPath": "src/front-components/settings-panel.mjs",
1308
+ "builtComponentChecksum": "2e007e1a5cf7632a80d0d36cadac7cf8",
1309
+ "isHeadless": false,
1310
+ "usesSdkClient": false
1311
+ },
1312
+ {
1313
+ "universalIdentifier": "7a3f8b12-c4d9-4e1a-b2f5-8c6d0e9f1a2b",
1314
+ "name": "intake-dashboard",
1315
+ "description": "Intake sources and ingestion statistics",
1316
+ "componentName": "Dashboard",
1317
+ "sourceComponentPath": "src/front-components/dashboard.tsx",
1318
+ "builtComponentPath": "src/front-components/dashboard.mjs",
1319
+ "builtComponentChecksum": "b9a38dd53b4d0afb791b315a9db8108e",
1320
+ "isHeadless": false,
1321
+ "usesSdkClient": false
1322
+ },
1323
+ {
1324
+ "universalIdentifier": "c9d2e8f3-1b4a-4c7d-9e5f-6a7b8c0d1e2f",
1325
+ "name": "intake-source-panel",
1326
+ "description": "Shows the webhook URL, signing secret, and quick-send snippet for an Intake Source.",
1327
+ "componentName": "SourcePanel",
1328
+ "sourceComponentPath": "src/front-components/source-panel.tsx",
1329
+ "builtComponentPath": "src/front-components/source-panel.mjs",
1330
+ "builtComponentChecksum": "15d77f5d59a859218e8932df5d148c71",
1331
+ "isHeadless": false,
1332
+ "usesSdkClient": false
1333
+ }
1334
+ ],
1335
+ "publicAssets": [
1336
+ {
1337
+ "filePath": "public/logo.svg",
1338
+ "fileName": "logo.svg",
1339
+ "fileType": "svg",
1340
+ "checksum": "287a24e80df4f01e6d91dfd3e04817bd"
1341
+ }
1342
+ ],
1343
+ "views": [
1344
+ {
1345
+ "universalIdentifier": "4435cd43-5c13-472f-b4f9-b686c0f46285",
1346
+ "name": "Intake Sources",
1347
+ "objectUniversalIdentifier": "8c1c227c-db7d-4834-b328-cacbe8af0bfc",
1348
+ "icon": "IconRadar2",
1349
+ "fields": [
1350
+ {
1351
+ "universalIdentifier": "f860c3eb-39a7-4d10-a8b4-115b28d779f6",
1352
+ "fieldMetadataUniversalIdentifier": "0deb7e4b-bb90-4c86-b903-5208b42041e2",
1353
+ "position": 0,
1354
+ "size": 180,
1355
+ "isVisible": true
1356
+ },
1357
+ {
1358
+ "universalIdentifier": "992db257-627f-45cc-8818-22cdd92e3bca",
1359
+ "fieldMetadataUniversalIdentifier": "18f7645b-2dce-4145-b1b6-9cc3332c0578",
1360
+ "position": 1,
1361
+ "size": 160,
1362
+ "isVisible": true
1363
+ },
1364
+ {
1365
+ "universalIdentifier": "e474a4bb-e588-433c-aee5-21c6a5c09880",
1366
+ "fieldMetadataUniversalIdentifier": "6f1fa6fe-02b4-48ab-b1ee-97c600bbf483",
1367
+ "position": 2,
1368
+ "size": 100,
1369
+ "isVisible": true
1370
+ },
1371
+ {
1372
+ "universalIdentifier": "be0424cc-aa59-4b7e-9292-a270e90d98b0",
1373
+ "fieldMetadataUniversalIdentifier": "65f3d7f7-a601-4375-9c67-684d0044620b",
1374
+ "position": 3,
1375
+ "size": 120,
1376
+ "isVisible": true
1377
+ },
1378
+ {
1379
+ "universalIdentifier": "a32a52ab-1a83-40f8-82c0-06f537422f29",
1380
+ "fieldMetadataUniversalIdentifier": "69655a93-bc70-48bd-874e-aeccc63ee1a8",
1381
+ "position": 4,
1382
+ "size": 100,
1383
+ "isVisible": true
1384
+ },
1385
+ {
1386
+ "universalIdentifier": "80242d84-20ac-44a3-bf5a-3b49174e549f",
1387
+ "fieldMetadataUniversalIdentifier": "e167f628-9865-468e-894a-b4b6150cec26",
1388
+ "position": 5,
1389
+ "size": 160,
1390
+ "isVisible": true
1391
+ }
1392
+ ]
1393
+ },
1394
+ {
1395
+ "universalIdentifier": "a2cd0a93-9778-4ba5-99d9-b8b89c4fb39d",
1396
+ "name": "Intake Logs",
1397
+ "objectUniversalIdentifier": "b77a2439-1503-4ef6-ab8b-8f4293bc19da",
1398
+ "icon": "IconListDetails",
1399
+ "fields": [
1400
+ {
1401
+ "universalIdentifier": "aa7063c8-c7a4-43eb-97ad-b6285cbc1c93",
1402
+ "fieldMetadataUniversalIdentifier": "a8d99fbd-722e-4987-8afe-b830ac026f0a",
1403
+ "position": 0,
1404
+ "size": 160,
1405
+ "isVisible": true
1406
+ },
1407
+ {
1408
+ "universalIdentifier": "e67a25ae-488e-43af-ba10-539cbc3becbd",
1409
+ "fieldMetadataUniversalIdentifier": "8b6d26d1-f89c-486c-a617-9f9f6a9ca36d",
1410
+ "position": 1,
1411
+ "size": 100,
1412
+ "isVisible": true
1413
+ },
1414
+ {
1415
+ "universalIdentifier": "d2bf6610-6de2-4db5-9467-47498f3e9bc9",
1416
+ "fieldMetadataUniversalIdentifier": "02154e96-5808-48ed-8838-51083f174550",
1417
+ "position": 2,
1418
+ "size": 100,
1419
+ "isVisible": true
1420
+ },
1421
+ {
1422
+ "universalIdentifier": "fdf6bbae-cd8d-4e2e-9256-470085fe8acd",
1423
+ "fieldMetadataUniversalIdentifier": "2295ca2b-b559-4b38-9771-12dd8d3d76d7",
1424
+ "position": 3,
1425
+ "size": 80,
1426
+ "isVisible": true
1427
+ },
1428
+ {
1429
+ "universalIdentifier": "8e6a96a8-b180-4896-b73a-412f199f136f",
1430
+ "fieldMetadataUniversalIdentifier": "83d07a0f-5bcd-4fb1-9759-f9b04b9381d8",
1431
+ "position": 4,
1432
+ "size": 80,
1433
+ "isVisible": true
1434
+ },
1435
+ {
1436
+ "universalIdentifier": "55c3db60-cf5e-41dd-9c1b-017b5c31a2d4",
1437
+ "fieldMetadataUniversalIdentifier": "4090acb1-f48a-4957-bb91-c642f8f434a7",
1438
+ "position": 5,
1439
+ "size": 80,
1440
+ "isVisible": true
1441
+ },
1442
+ {
1443
+ "universalIdentifier": "c4509bfa-c8fa-492c-aa75-67244e323d90",
1444
+ "fieldMetadataUniversalIdentifier": "a9191f27-4b40-42e9-8cce-20c75900e12c",
1445
+ "position": 6,
1446
+ "size": 100,
1447
+ "isVisible": true
1448
+ }
1449
+ ]
1450
+ }
1451
+ ],
1452
+ "navigationMenuItems": [
1453
+ {
1454
+ "universalIdentifier": "e81bf288-5686-4713-86ae-e2947b124cab",
1455
+ "name": "intake",
1456
+ "label": "Intake",
1457
+ "icon": "IconRadar2",
1458
+ "position": 2,
1459
+ "type": "VIEW",
1460
+ "viewUniversalIdentifier": "4435cd43-5c13-472f-b4f9-b686c0f46285"
1461
+ }
1462
+ ],
1463
+ "pageLayouts": [],
1464
+ "pageLayoutTabs": [],
1465
+ "commandMenuItems": []
1466
+ }