@elevasis/sdk 1.15.1 → 1.16.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/dist/cli.cjs +2325 -124
- package/dist/index.d.ts +410 -473
- package/dist/index.js +96 -44
- package/dist/node/index.d.ts +69 -0
- package/dist/node/index.js +273 -0
- package/dist/test-utils/index.d.ts +473 -466
- package/dist/types/worker/platform.d.ts +2 -9
- package/package.json +12 -3
- package/reference/_navigation.md +23 -1
- package/reference/_reference-manifest.json +98 -0
- package/reference/claude-config/rules/agent-start-here.md +13 -0
- package/reference/claude-config/rules/organization-model.md +40 -40
- package/reference/claude-config/rules/organization-os.md +16 -16
- package/reference/claude-config/rules/vibe.md +13 -13
- package/reference/claude-config/skills/knowledge/SKILL.md +253 -0
- package/reference/claude-config/skills/{configure → knowledge}/operations/codify-level-a.md +100 -100
- package/reference/claude-config/skills/{configure → knowledge}/operations/codify-level-b.md +158 -158
- package/reference/claude-config/skills/knowledge/operations/customers.md +109 -0
- package/reference/claude-config/skills/knowledge/operations/features.md +113 -0
- package/reference/claude-config/skills/knowledge/operations/goals.md +118 -0
- package/reference/claude-config/skills/knowledge/operations/identity.md +93 -0
- package/reference/claude-config/skills/knowledge/operations/labels.md +89 -0
- package/reference/claude-config/skills/knowledge/operations/offerings.md +109 -0
- package/reference/claude-config/skills/knowledge/operations/roles.md +99 -0
- package/reference/claude-config/skills/knowledge/operations/techStack.md +102 -0
- package/reference/claude-config/skills/run-ui/SKILL.md +73 -0
- package/reference/claude-config/skills/setup/SKILL.md +270 -270
- package/reference/claude-config/skills/tutorial/SKILL.md +249 -0
- package/reference/claude-config/skills/tutorial/progress-template.md +74 -0
- package/reference/claude-config/skills/tutorial/technical.md +1309 -0
- package/reference/claude-config/skills/tutorial/vibe-coder.md +890 -0
- package/reference/claude-config/sync-notes/2026-05-04-elevasis-workspace.md +71 -0
- package/reference/claude-config/sync-notes/2026-05-04-template-skills-run-ui-and-tutorial.md +59 -0
- package/reference/deployment/index.mdx +5 -5
- package/reference/examples/organization-model.ts +40 -0
- package/reference/framework/index.mdx +1 -1
- package/reference/framework/tutorial-system.mdx +86 -173
- package/reference/packages/core/src/knowledge/README.md +32 -0
- package/reference/packages/ui/src/knowledge/README.md +31 -0
- package/reference/packages/ui/src/theme/presets/README.md +19 -0
- package/reference/scaffold/core/organization-model.mdx +1 -1
- package/reference/scaffold/recipes/add-a-feature.md +1 -1
- package/reference/scaffold/recipes/customize-crm-actions.md +433 -433
- package/reference/scaffold/recipes/customize-organization-model.md +3 -3
- package/reference/scaffold/recipes/extend-lead-gen.md +90 -55
- package/reference/scaffold/recipes/gate-by-feature-or-admin.md +1 -1
- package/reference/scaffold/recipes/index.md +6 -0
- package/reference/scaffold/reference/contracts.md +1265 -1154
- package/reference/scaffold/reference/feature-registry.md +2 -1
- package/reference/scaffold/ui/composition-extensibility.mdx +17 -0
- package/reference/claude-config/skills/configure/SKILL.md +0 -98
- package/reference/claude-config/skills/configure/operations/customers.md +0 -150
- package/reference/claude-config/skills/configure/operations/features.md +0 -162
- package/reference/claude-config/skills/configure/operations/goals.md +0 -147
- package/reference/claude-config/skills/configure/operations/identity.md +0 -133
- package/reference/claude-config/skills/configure/operations/labels.md +0 -128
- package/reference/claude-config/skills/configure/operations/offerings.md +0 -159
- package/reference/claude-config/skills/configure/operations/roles.md +0 -153
- package/reference/claude-config/skills/configure/operations/techStack.md +0 -139
|
@@ -180,15 +180,53 @@ export type OrganizationModelObjective = z.infer<typeof ObjectiveSchema>
|
|
|
180
180
|
export type OrganizationModelKeyResult = z.infer<typeof KeyResultSchema>
|
|
181
181
|
```
|
|
182
182
|
|
|
183
|
+
### `OrganizationModelKnowledge`
|
|
184
|
+
|
|
185
|
+
```typescript
|
|
186
|
+
export type OrganizationModelKnowledge = z.infer<typeof KnowledgeDomainSchema>
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### `OrgKnowledgeNode`
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
export type OrgKnowledgeNode = z.infer<typeof OrgKnowledgeNodeSchema>
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### `OrgKnowledgeKind`
|
|
196
|
+
|
|
197
|
+
```typescript
|
|
198
|
+
export type OrgKnowledgeKind = z.infer<typeof OrgKnowledgeKindSchema>
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### `OrganizationModelIconToken`
|
|
202
|
+
|
|
203
|
+
```typescript
|
|
204
|
+
export type OrganizationModelIconToken = z.infer<typeof OrganizationModelIconTokenSchema>
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### `OrganizationModelBuiltinIconToken`
|
|
208
|
+
|
|
209
|
+
```typescript
|
|
210
|
+
export type OrganizationModelBuiltinIconToken = z.infer<typeof OrganizationModelBuiltinIconTokenSchema>
|
|
211
|
+
```
|
|
212
|
+
|
|
183
213
|
### `DeepPartial`
|
|
184
214
|
|
|
185
215
|
```typescript
|
|
186
|
-
export type DeepPartial<T> =
|
|
216
|
+
export type DeepPartial<T> =
|
|
187
217
|
T extends Array<infer U> ? Array<DeepPartial<U>> : T extends object ? { [K in keyof T]?: DeepPartial<T[K]> } : T
|
|
188
218
|
```
|
|
189
219
|
|
|
190
220
|
## Feature System
|
|
191
221
|
|
|
222
|
+
### `ElevasisOrganizationModel`
|
|
223
|
+
|
|
224
|
+
```typescript
|
|
225
|
+
export type ElevasisOrganizationModel = Omit<OrganizationModel, 'knowledge'> & {
|
|
226
|
+
knowledge?: OrganizationModel['knowledge']
|
|
227
|
+
}
|
|
228
|
+
```
|
|
229
|
+
|
|
192
230
|
### `FeatureSidebarComponent`
|
|
193
231
|
|
|
194
232
|
```typescript
|
|
@@ -327,7 +365,7 @@ export interface OrganizationGraphContextValue {
|
|
|
327
365
|
```typescript
|
|
328
366
|
export interface ElevasisFeaturesProviderProps {
|
|
329
367
|
features: FeatureModule[]
|
|
330
|
-
organizationModel?:
|
|
368
|
+
organizationModel?: ElevasisOrganizationModel
|
|
331
369
|
timeRange?: TimeRange
|
|
332
370
|
operationsApiUrl?: string
|
|
333
371
|
operationsSSEManager?: SSEConnectionManagerLike
|
|
@@ -812,73 +850,73 @@ export interface DeploymentSpec {
|
|
|
812
850
|
### `AcqCompany`
|
|
813
851
|
|
|
814
852
|
```typescript
|
|
815
|
-
/**
|
|
816
|
-
* Company record in the acquisition database.
|
|
817
|
-
* Contains enriched company data from various sources.
|
|
818
|
-
* Transformed from AcqCompanyRow with camelCase properties.
|
|
819
|
-
*/
|
|
820
|
-
export interface AcqCompany {
|
|
821
|
-
id: string
|
|
822
|
-
organizationId: string
|
|
823
|
-
name: string
|
|
824
|
-
domain: string | null
|
|
825
|
-
linkedinUrl: string | null
|
|
826
|
-
website: string | null
|
|
827
|
-
numEmployees: number | null
|
|
828
|
-
foundedYear: number | null
|
|
829
|
-
locationCity: string | null
|
|
830
|
-
locationState: string | null
|
|
831
|
-
category: string | null
|
|
832
|
-
categoryPain: string | null
|
|
833
|
-
segment: string | null
|
|
834
|
-
pipelineStatus: CompanyPipelineStatus | null
|
|
835
|
-
enrichmentData: CompanyEnrichmentData | null
|
|
836
|
-
source: string | null
|
|
837
|
-
batchId: string | null
|
|
838
|
-
status: 'active' | 'invalid'
|
|
839
|
-
verticalResearch: string | null
|
|
840
|
-
/** Track A: flat qualification score (null until a scoring rubric is defined). Added by W1 migration. */
|
|
841
|
-
qualificationScore: number | null
|
|
842
|
-
/** Track A: flat qualification signals jsonb preserving the result payload shape. Added by W1 migration. */
|
|
843
|
-
qualificationSignals: Record<string, unknown> | null
|
|
844
|
-
/** Track A: key identifying the rubric used for qualification. Added by W1 migration. */
|
|
845
|
-
qualificationRubricKey: string | null
|
|
846
|
-
createdAt: Date
|
|
847
|
-
updatedAt: Date
|
|
853
|
+
/**
|
|
854
|
+
* Company record in the acquisition database.
|
|
855
|
+
* Contains enriched company data from various sources.
|
|
856
|
+
* Transformed from AcqCompanyRow with camelCase properties.
|
|
857
|
+
*/
|
|
858
|
+
export interface AcqCompany {
|
|
859
|
+
id: string
|
|
860
|
+
organizationId: string
|
|
861
|
+
name: string
|
|
862
|
+
domain: string | null
|
|
863
|
+
linkedinUrl: string | null
|
|
864
|
+
website: string | null
|
|
865
|
+
numEmployees: number | null
|
|
866
|
+
foundedYear: number | null
|
|
867
|
+
locationCity: string | null
|
|
868
|
+
locationState: string | null
|
|
869
|
+
category: string | null
|
|
870
|
+
categoryPain: string | null
|
|
871
|
+
segment: string | null
|
|
872
|
+
pipelineStatus: CompanyPipelineStatus | null
|
|
873
|
+
enrichmentData: CompanyEnrichmentData | null
|
|
874
|
+
source: string | null
|
|
875
|
+
batchId: string | null
|
|
876
|
+
status: 'active' | 'invalid'
|
|
877
|
+
verticalResearch: string | null
|
|
878
|
+
/** Track A: flat qualification score (null until a scoring rubric is defined). Added by W1 migration. */
|
|
879
|
+
qualificationScore: number | null
|
|
880
|
+
/** Track A: flat qualification signals jsonb preserving the result payload shape. Added by W1 migration. */
|
|
881
|
+
qualificationSignals: Record<string, unknown> | null
|
|
882
|
+
/** Track A: key identifying the rubric used for qualification. Added by W1 migration. */
|
|
883
|
+
qualificationRubricKey: string | null
|
|
884
|
+
createdAt: Date
|
|
885
|
+
updatedAt: Date
|
|
848
886
|
}
|
|
849
887
|
```
|
|
850
888
|
|
|
851
889
|
### `AcqContact`
|
|
852
890
|
|
|
853
891
|
```typescript
|
|
854
|
-
/**
|
|
855
|
-
* Contact record in the acquisition database.
|
|
856
|
-
* Contains enriched contact data and personalization content.
|
|
857
|
-
* Transformed from AcqContactRow with camelCase properties.
|
|
858
|
-
*/
|
|
859
|
-
export interface AcqContact {
|
|
860
|
-
id: string
|
|
861
|
-
organizationId: string
|
|
862
|
-
companyId: string | null
|
|
863
|
-
email: string
|
|
864
|
-
emailValid: 'VALID' | 'INVALID' | 'RISKY' | 'UNKNOWN' | null
|
|
865
|
-
firstName: string | null
|
|
866
|
-
lastName: string | null
|
|
867
|
-
linkedinUrl: string | null
|
|
868
|
-
title: string | null
|
|
869
|
-
headline: string | null
|
|
870
|
-
filterReason: string | null
|
|
871
|
-
openingLine: string | null
|
|
872
|
-
source: string | null
|
|
873
|
-
sourceId: string | null
|
|
874
|
-
pipelineStatus: ContactPipelineStatus | null
|
|
875
|
-
enrichmentData: ContactEnrichmentData | null
|
|
876
|
-
/** Attio Person record ID - set when contact responds and is added to CRM */
|
|
877
|
-
attioPersonId: string | null
|
|
878
|
-
batchId: string | null
|
|
879
|
-
status: 'active' | 'invalid'
|
|
880
|
-
createdAt: Date
|
|
881
|
-
updatedAt: Date
|
|
892
|
+
/**
|
|
893
|
+
* Contact record in the acquisition database.
|
|
894
|
+
* Contains enriched contact data and personalization content.
|
|
895
|
+
* Transformed from AcqContactRow with camelCase properties.
|
|
896
|
+
*/
|
|
897
|
+
export interface AcqContact {
|
|
898
|
+
id: string
|
|
899
|
+
organizationId: string
|
|
900
|
+
companyId: string | null
|
|
901
|
+
email: string
|
|
902
|
+
emailValid: 'VALID' | 'INVALID' | 'RISKY' | 'UNKNOWN' | null
|
|
903
|
+
firstName: string | null
|
|
904
|
+
lastName: string | null
|
|
905
|
+
linkedinUrl: string | null
|
|
906
|
+
title: string | null
|
|
907
|
+
headline: string | null
|
|
908
|
+
filterReason: string | null
|
|
909
|
+
openingLine: string | null
|
|
910
|
+
source: string | null
|
|
911
|
+
sourceId: string | null
|
|
912
|
+
pipelineStatus: ContactPipelineStatus | null
|
|
913
|
+
enrichmentData: ContactEnrichmentData | null
|
|
914
|
+
/** Attio Person record ID - set when contact responds and is added to CRM */
|
|
915
|
+
attioPersonId: string | null
|
|
916
|
+
batchId: string | null
|
|
917
|
+
status: 'active' | 'invalid'
|
|
918
|
+
createdAt: Date
|
|
919
|
+
updatedAt: Date
|
|
882
920
|
}
|
|
883
921
|
```
|
|
884
922
|
|
|
@@ -897,23 +935,23 @@ export type DealPriorityBucketKey = 'needs_response' | 'follow_up_due' | 'waitin
|
|
|
897
935
|
### `DealPriority`
|
|
898
936
|
|
|
899
937
|
```typescript
|
|
900
|
-
export interface DealPriority {
|
|
901
|
-
bucketKey: DealPriorityBucketKey
|
|
902
|
-
rank: number
|
|
903
|
-
label: string
|
|
904
|
-
color: string
|
|
905
|
-
reason: string
|
|
906
|
-
latestActivityAt: string | null
|
|
907
|
-
nextActionAt: string | null
|
|
938
|
+
export interface DealPriority {
|
|
939
|
+
bucketKey: DealPriorityBucketKey
|
|
940
|
+
rank: number
|
|
941
|
+
label: string
|
|
942
|
+
color: string
|
|
943
|
+
reason: string
|
|
944
|
+
latestActivityAt: string | null
|
|
945
|
+
nextActionAt: string | null
|
|
908
946
|
}
|
|
909
947
|
```
|
|
910
948
|
|
|
911
949
|
### `KanbanStageConfig`
|
|
912
950
|
|
|
913
951
|
```typescript
|
|
914
|
-
export interface KanbanStageConfig {
|
|
915
|
-
color: string // Mantine color token (e.g. 'blue', 'teal')
|
|
916
|
-
label?: string // Optional display label override
|
|
952
|
+
export interface KanbanStageConfig {
|
|
953
|
+
color: string // Mantine color token (e.g. 'blue', 'teal')
|
|
954
|
+
label?: string // Optional display label override
|
|
917
955
|
}
|
|
918
956
|
```
|
|
919
957
|
|
|
@@ -926,44 +964,44 @@ export type KanbanBoardConfig = Partial<Record<DealStage, KanbanStageConfig>>
|
|
|
926
964
|
### `DealContact`
|
|
927
965
|
|
|
928
966
|
```typescript
|
|
929
|
-
export interface DealContact {
|
|
930
|
-
id: string
|
|
931
|
-
first_name: string | null
|
|
932
|
-
last_name: string | null
|
|
933
|
-
email: string
|
|
934
|
-
title: string | null
|
|
935
|
-
headline: string | null
|
|
936
|
-
linkedin_url: string | null
|
|
937
|
-
pipeline_status: Record<string, unknown> | null
|
|
938
|
-
enrichment_data: Record<string, unknown> | null
|
|
939
|
-
company: {
|
|
940
|
-
id: string
|
|
941
|
-
name: string
|
|
942
|
-
domain: string | null
|
|
943
|
-
website: string | null
|
|
944
|
-
linkedin_url: string | null
|
|
945
|
-
segment: string | null
|
|
946
|
-
category: string | null
|
|
947
|
-
num_employees: number | null
|
|
948
|
-
} | null
|
|
967
|
+
export interface DealContact {
|
|
968
|
+
id: string
|
|
969
|
+
first_name: string | null
|
|
970
|
+
last_name: string | null
|
|
971
|
+
email: string
|
|
972
|
+
title: string | null
|
|
973
|
+
headline: string | null
|
|
974
|
+
linkedin_url: string | null
|
|
975
|
+
pipeline_status: Record<string, unknown> | null
|
|
976
|
+
enrichment_data: Record<string, unknown> | null
|
|
977
|
+
company: {
|
|
978
|
+
id: string
|
|
979
|
+
name: string
|
|
980
|
+
domain: string | null
|
|
981
|
+
website: string | null
|
|
982
|
+
linkedin_url: string | null
|
|
983
|
+
segment: string | null
|
|
984
|
+
category: string | null
|
|
985
|
+
num_employees: number | null
|
|
986
|
+
} | null
|
|
949
987
|
}
|
|
950
988
|
```
|
|
951
989
|
|
|
952
990
|
### `DealFilters`
|
|
953
991
|
|
|
954
992
|
```typescript
|
|
955
|
-
export interface DealFilters {
|
|
956
|
-
stage?: DealStage
|
|
957
|
-
search?: string
|
|
958
|
-
limit?: number
|
|
959
|
-
offset?: number
|
|
993
|
+
export interface DealFilters {
|
|
994
|
+
stage?: DealStage
|
|
995
|
+
search?: string
|
|
996
|
+
limit?: number
|
|
997
|
+
offset?: number
|
|
960
998
|
}
|
|
961
999
|
```
|
|
962
1000
|
|
|
963
1001
|
### `DealListItem`
|
|
964
1002
|
|
|
965
1003
|
```typescript
|
|
966
|
-
/** Deal list item with joined contact and company data */
|
|
1004
|
+
/** Deal list item with joined contact and company data */
|
|
967
1005
|
export interface DealListItem extends AcqDealRow {
|
|
968
1006
|
priority: DealPriority
|
|
969
1007
|
ownership: 'us' | 'them' | null
|
|
@@ -981,31 +1019,31 @@ export type DealDetail = DealListItem
|
|
|
981
1019
|
### `AcqDealTaskKind`
|
|
982
1020
|
|
|
983
1021
|
```typescript
|
|
984
|
-
/** Task kind options for a deal task (human follow-up action type) */
|
|
1022
|
+
/** Task kind options for a deal task (human follow-up action type) */
|
|
985
1023
|
export type AcqDealTaskKind = 'call' | 'email' | 'meeting' | 'other'
|
|
986
1024
|
```
|
|
987
1025
|
|
|
988
1026
|
### `AcqDealTask`
|
|
989
1027
|
|
|
990
1028
|
```typescript
|
|
991
|
-
/**
|
|
992
|
-
* A CRM to-do item attached to a deal representing a human follow-up action.
|
|
993
|
-
* Transformed from AcqDealTaskRow with camelCase properties.
|
|
994
|
-
*/
|
|
995
|
-
export interface AcqDealTask {
|
|
996
|
-
id: string
|
|
997
|
-
organizationId: string
|
|
998
|
-
dealId: string
|
|
999
|
-
title: string
|
|
1000
|
-
description: string | null
|
|
1001
|
-
kind: AcqDealTaskKind
|
|
1002
|
-
dueAt: string | null
|
|
1003
|
-
assigneeUserId: string | null
|
|
1004
|
-
completedAt: string | null
|
|
1005
|
-
completedByUserId: string | null
|
|
1006
|
-
createdAt: string
|
|
1007
|
-
updatedAt: string
|
|
1008
|
-
createdByUserId: string | null
|
|
1029
|
+
/**
|
|
1030
|
+
* A CRM to-do item attached to a deal representing a human follow-up action.
|
|
1031
|
+
* Transformed from AcqDealTaskRow with camelCase properties.
|
|
1032
|
+
*/
|
|
1033
|
+
export interface AcqDealTask {
|
|
1034
|
+
id: string
|
|
1035
|
+
organizationId: string
|
|
1036
|
+
dealId: string
|
|
1037
|
+
title: string
|
|
1038
|
+
description: string | null
|
|
1039
|
+
kind: AcqDealTaskKind
|
|
1040
|
+
dueAt: string | null
|
|
1041
|
+
assigneeUserId: string | null
|
|
1042
|
+
completedAt: string | null
|
|
1043
|
+
completedByUserId: string | null
|
|
1044
|
+
createdAt: string
|
|
1045
|
+
updatedAt: string
|
|
1046
|
+
createdByUserId: string | null
|
|
1009
1047
|
}
|
|
1010
1048
|
```
|
|
1011
1049
|
|
|
@@ -1084,190 +1122,190 @@ export const AcqDealTaskKindSchema = z.enum(['call', 'email', 'meeting', 'other'
|
|
|
1084
1122
|
### `DealIdParamsSchema`
|
|
1085
1123
|
|
|
1086
1124
|
```typescript
|
|
1087
|
-
export const DealIdParamsSchema = z.object({
|
|
1088
|
-
dealId: UuidSchema
|
|
1125
|
+
export const DealIdParamsSchema = z.object({
|
|
1126
|
+
dealId: UuidSchema
|
|
1089
1127
|
})
|
|
1090
1128
|
```
|
|
1091
1129
|
|
|
1092
1130
|
### `DealTaskIdParamsSchema`
|
|
1093
1131
|
|
|
1094
1132
|
```typescript
|
|
1095
|
-
export const DealTaskIdParamsSchema = z.object({
|
|
1096
|
-
dealId: UuidSchema,
|
|
1097
|
-
taskId: UuidSchema
|
|
1133
|
+
export const DealTaskIdParamsSchema = z.object({
|
|
1134
|
+
dealId: UuidSchema,
|
|
1135
|
+
taskId: UuidSchema
|
|
1098
1136
|
})
|
|
1099
1137
|
```
|
|
1100
1138
|
|
|
1101
1139
|
### `ListDealsQuerySchema`
|
|
1102
1140
|
|
|
1103
1141
|
```typescript
|
|
1104
|
-
export const ListDealsQuerySchema = z
|
|
1105
|
-
.object({
|
|
1106
|
-
stage: DealStageSchema.optional(),
|
|
1107
|
-
search: z.string().optional(),
|
|
1108
|
-
limit: z.coerce.number().int().positive().default(50),
|
|
1109
|
-
offset: z.coerce.number().int().min(0).default(0)
|
|
1110
|
-
})
|
|
1142
|
+
export const ListDealsQuerySchema = z
|
|
1143
|
+
.object({
|
|
1144
|
+
stage: DealStageSchema.optional(),
|
|
1145
|
+
search: z.string().optional(),
|
|
1146
|
+
limit: z.coerce.number().int().positive().default(50),
|
|
1147
|
+
offset: z.coerce.number().int().min(0).default(0)
|
|
1148
|
+
})
|
|
1111
1149
|
.strict()
|
|
1112
1150
|
```
|
|
1113
1151
|
|
|
1114
1152
|
### `DealLookupQuerySchema`
|
|
1115
1153
|
|
|
1116
1154
|
```typescript
|
|
1117
|
-
export const DealLookupQuerySchema = z
|
|
1118
|
-
.object({
|
|
1119
|
-
search: z.string().trim().min(1).max(200).optional(),
|
|
1120
|
-
limit: z.coerce.number().int().min(1).max(25).default(10)
|
|
1121
|
-
})
|
|
1155
|
+
export const DealLookupQuerySchema = z
|
|
1156
|
+
.object({
|
|
1157
|
+
search: z.string().trim().min(1).max(200).optional(),
|
|
1158
|
+
limit: z.coerce.number().int().min(1).max(25).default(10)
|
|
1159
|
+
})
|
|
1122
1160
|
.strict()
|
|
1123
1161
|
```
|
|
1124
1162
|
|
|
1125
1163
|
### `ListDealTasksDueQuerySchema`
|
|
1126
1164
|
|
|
1127
1165
|
```typescript
|
|
1128
|
-
export const ListDealTasksDueQuerySchema = z
|
|
1129
|
-
.object({
|
|
1130
|
-
window: z.enum(['overdue', 'today', 'today_and_overdue', 'upcoming']).optional(),
|
|
1131
|
-
assigneeUserId: UuidSchema.optional()
|
|
1132
|
-
})
|
|
1166
|
+
export const ListDealTasksDueQuerySchema = z
|
|
1167
|
+
.object({
|
|
1168
|
+
window: z.enum(['overdue', 'today', 'today_and_overdue', 'upcoming']).optional(),
|
|
1169
|
+
assigneeUserId: UuidSchema.optional()
|
|
1170
|
+
})
|
|
1133
1171
|
.strict()
|
|
1134
1172
|
```
|
|
1135
1173
|
|
|
1136
1174
|
### `CreateDealNoteRequestSchema`
|
|
1137
1175
|
|
|
1138
1176
|
```typescript
|
|
1139
|
-
export const CreateDealNoteRequestSchema = z
|
|
1140
|
-
.object({
|
|
1141
|
-
body: z.string().trim().min(1).max(10000)
|
|
1142
|
-
})
|
|
1177
|
+
export const CreateDealNoteRequestSchema = z
|
|
1178
|
+
.object({
|
|
1179
|
+
body: z.string().trim().min(1).max(10000)
|
|
1180
|
+
})
|
|
1143
1181
|
.strict()
|
|
1144
1182
|
```
|
|
1145
1183
|
|
|
1146
1184
|
### `CreateDealTaskRequestSchema`
|
|
1147
1185
|
|
|
1148
1186
|
```typescript
|
|
1149
|
-
export const CreateDealTaskRequestSchema = z
|
|
1150
|
-
.object({
|
|
1151
|
-
title: z.string().trim().min(1).max(255),
|
|
1152
|
-
description: z.string().nullable().optional(),
|
|
1153
|
-
kind: AcqDealTaskKindSchema.optional(),
|
|
1154
|
-
dueAt: z.string().datetime().nullable().optional(),
|
|
1155
|
-
assigneeUserId: UuidSchema.nullable().optional()
|
|
1156
|
-
})
|
|
1187
|
+
export const CreateDealTaskRequestSchema = z
|
|
1188
|
+
.object({
|
|
1189
|
+
title: z.string().trim().min(1).max(255),
|
|
1190
|
+
description: z.string().nullable().optional(),
|
|
1191
|
+
kind: AcqDealTaskKindSchema.optional(),
|
|
1192
|
+
dueAt: z.string().datetime().nullable().optional(),
|
|
1193
|
+
assigneeUserId: UuidSchema.nullable().optional()
|
|
1194
|
+
})
|
|
1157
1195
|
.strict()
|
|
1158
1196
|
```
|
|
1159
1197
|
|
|
1160
1198
|
### `TransitionItemRequestSchema`
|
|
1161
1199
|
|
|
1162
1200
|
```typescript
|
|
1163
|
-
export const TransitionItemRequestSchema = z
|
|
1164
|
-
.object({
|
|
1165
|
-
pipelineKey: z.string().min(1),
|
|
1166
|
-
stageKey: z.string().min(1),
|
|
1167
|
-
stateKey: z.string().nullable().optional(),
|
|
1168
|
-
reason: z.string().optional(),
|
|
1169
|
-
expectedUpdatedAt: z.string().datetime().optional()
|
|
1170
|
-
})
|
|
1201
|
+
export const TransitionItemRequestSchema = z
|
|
1202
|
+
.object({
|
|
1203
|
+
pipelineKey: z.string().min(1),
|
|
1204
|
+
stageKey: z.string().min(1),
|
|
1205
|
+
stateKey: z.string().nullable().optional(),
|
|
1206
|
+
reason: z.string().optional(),
|
|
1207
|
+
expectedUpdatedAt: z.string().datetime().optional()
|
|
1208
|
+
})
|
|
1171
1209
|
.strict()
|
|
1172
1210
|
```
|
|
1173
1211
|
|
|
1174
1212
|
### `ExecuteActionParamsSchema`
|
|
1175
1213
|
|
|
1176
1214
|
```typescript
|
|
1177
|
-
export const ExecuteActionParamsSchema = z
|
|
1178
|
-
.object({
|
|
1179
|
-
dealId: UuidSchema,
|
|
1180
|
-
actionKey: NonEmptyStringSchema
|
|
1181
|
-
})
|
|
1215
|
+
export const ExecuteActionParamsSchema = z
|
|
1216
|
+
.object({
|
|
1217
|
+
dealId: UuidSchema,
|
|
1218
|
+
actionKey: NonEmptyStringSchema
|
|
1219
|
+
})
|
|
1182
1220
|
.strict()
|
|
1183
1221
|
```
|
|
1184
1222
|
|
|
1185
1223
|
### `ExecuteActionRequestSchema`
|
|
1186
1224
|
|
|
1187
1225
|
```typescript
|
|
1188
|
-
export const ExecuteActionRequestSchema = z
|
|
1189
|
-
.object({
|
|
1190
|
-
payload: z.record(z.string(), z.unknown()).optional()
|
|
1191
|
-
})
|
|
1226
|
+
export const ExecuteActionRequestSchema = z
|
|
1227
|
+
.object({
|
|
1228
|
+
payload: z.record(z.string(), z.unknown()).optional()
|
|
1229
|
+
})
|
|
1192
1230
|
.strict()
|
|
1193
1231
|
```
|
|
1194
1232
|
|
|
1195
1233
|
### `DealContactSummarySchema`
|
|
1196
1234
|
|
|
1197
1235
|
```typescript
|
|
1198
|
-
/**
|
|
1199
|
-
* Contact summary nested inside DealListItem / DealDetailResponse.
|
|
1200
|
-
* Matches the joined shape returned by useDeals / useDealDetail Supabase queries.
|
|
1201
|
-
*/
|
|
1202
|
-
export const DealContactSummarySchema = z.object({
|
|
1203
|
-
id: z.string(),
|
|
1204
|
-
first_name: z.string().nullable(),
|
|
1205
|
-
last_name: z.string().nullable(),
|
|
1206
|
-
email: z.string(),
|
|
1207
|
-
title: z.string().nullable(),
|
|
1208
|
-
headline: z.string().nullable(),
|
|
1209
|
-
linkedin_url: z.string().nullable(),
|
|
1210
|
-
pipeline_status: z.record(z.string(), z.unknown()).nullable(),
|
|
1211
|
-
enrichment_data: z.record(z.string(), z.unknown()).nullable(),
|
|
1212
|
-
company: z
|
|
1213
|
-
.object({
|
|
1214
|
-
id: z.string(),
|
|
1215
|
-
name: z.string(),
|
|
1216
|
-
domain: z.string().nullable(),
|
|
1217
|
-
website: z.string().nullable(),
|
|
1218
|
-
linkedin_url: z.string().nullable(),
|
|
1219
|
-
segment: z.string().nullable(),
|
|
1220
|
-
category: z.string().nullable(),
|
|
1221
|
-
num_employees: z.number().nullable()
|
|
1222
|
-
})
|
|
1223
|
-
.nullable()
|
|
1236
|
+
/**
|
|
1237
|
+
* Contact summary nested inside DealListItem / DealDetailResponse.
|
|
1238
|
+
* Matches the joined shape returned by useDeals / useDealDetail Supabase queries.
|
|
1239
|
+
*/
|
|
1240
|
+
export const DealContactSummarySchema = z.object({
|
|
1241
|
+
id: z.string(),
|
|
1242
|
+
first_name: z.string().nullable(),
|
|
1243
|
+
last_name: z.string().nullable(),
|
|
1244
|
+
email: z.string(),
|
|
1245
|
+
title: z.string().nullable(),
|
|
1246
|
+
headline: z.string().nullable(),
|
|
1247
|
+
linkedin_url: z.string().nullable(),
|
|
1248
|
+
pipeline_status: z.record(z.string(), z.unknown()).nullable(),
|
|
1249
|
+
enrichment_data: z.record(z.string(), z.unknown()).nullable(),
|
|
1250
|
+
company: z
|
|
1251
|
+
.object({
|
|
1252
|
+
id: z.string(),
|
|
1253
|
+
name: z.string(),
|
|
1254
|
+
domain: z.string().nullable(),
|
|
1255
|
+
website: z.string().nullable(),
|
|
1256
|
+
linkedin_url: z.string().nullable(),
|
|
1257
|
+
segment: z.string().nullable(),
|
|
1258
|
+
category: z.string().nullable(),
|
|
1259
|
+
num_employees: z.number().nullable()
|
|
1260
|
+
})
|
|
1261
|
+
.nullable()
|
|
1224
1262
|
})
|
|
1225
1263
|
```
|
|
1226
1264
|
|
|
1227
1265
|
### `DealPrioritySchema`
|
|
1228
1266
|
|
|
1229
1267
|
```typescript
|
|
1230
|
-
export const DealPrioritySchema = z.object({
|
|
1231
|
-
bucketKey: z.enum(['needs_response', 'follow_up_due', 'waiting', 'stale', 'closed_low']),
|
|
1232
|
-
rank: z.number().int(),
|
|
1233
|
-
label: z.string(),
|
|
1234
|
-
color: z.string(),
|
|
1235
|
-
reason: z.string(),
|
|
1236
|
-
latestActivityAt: z.string().nullable(),
|
|
1237
|
-
nextActionAt: z.string().nullable()
|
|
1268
|
+
export const DealPrioritySchema = z.object({
|
|
1269
|
+
bucketKey: z.enum(['needs_response', 'follow_up_due', 'waiting', 'stale', 'closed_low']),
|
|
1270
|
+
rank: z.number().int(),
|
|
1271
|
+
label: z.string(),
|
|
1272
|
+
color: z.string(),
|
|
1273
|
+
reason: z.string(),
|
|
1274
|
+
latestActivityAt: z.string().nullable(),
|
|
1275
|
+
nextActionAt: z.string().nullable()
|
|
1238
1276
|
})
|
|
1239
1277
|
```
|
|
1240
1278
|
|
|
1241
1279
|
### `DealListItemSchema`
|
|
1242
1280
|
|
|
1243
1281
|
```typescript
|
|
1244
|
-
/**
|
|
1245
|
-
* Deal list item with joined contact (and company via contact).
|
|
1246
|
-
* Matches DealListItem from @repo/core types.
|
|
1247
|
-
*/
|
|
1248
|
-
export const DealListItemSchema = z.object({
|
|
1249
|
-
// acq_deals columns
|
|
1250
|
-
id: z.string(),
|
|
1251
|
-
organization_id: z.string(),
|
|
1252
|
-
contact_id: z.string().nullable(),
|
|
1253
|
-
contact_email: z.string(),
|
|
1254
|
-
pipeline_key: z.string(),
|
|
1255
|
-
stage_key: z.string().nullable(),
|
|
1256
|
-
state_key: z.string().nullable(),
|
|
1257
|
-
activity_log: z.unknown(),
|
|
1258
|
-
discovery_data: z.unknown().nullable(),
|
|
1259
|
-
discovery_submitted_at: z.string().nullable(),
|
|
1260
|
-
discovery_submitted_by: z.string().nullable(),
|
|
1261
|
-
proposal_data: z.unknown().nullable(),
|
|
1262
|
-
proposal_sent_at: z.string().nullable(),
|
|
1263
|
-
proposal_pdf_url: z.string().nullable(),
|
|
1264
|
-
signature_envelope_id: z.string().nullable(),
|
|
1265
|
-
source_list_id: z.string().nullable(),
|
|
1266
|
-
source_type: z.string().nullable(),
|
|
1267
|
-
initial_fee: z.number().nullable(),
|
|
1268
|
-
monthly_fee: z.number().nullable(),
|
|
1269
|
-
closed_lost_at: z.string().nullable(),
|
|
1270
|
-
closed_lost_reason: z.string().nullable(),
|
|
1282
|
+
/**
|
|
1283
|
+
* Deal list item with joined contact (and company via contact).
|
|
1284
|
+
* Matches DealListItem from @repo/core types.
|
|
1285
|
+
*/
|
|
1286
|
+
export const DealListItemSchema = z.object({
|
|
1287
|
+
// acq_deals columns
|
|
1288
|
+
id: z.string(),
|
|
1289
|
+
organization_id: z.string(),
|
|
1290
|
+
contact_id: z.string().nullable(),
|
|
1291
|
+
contact_email: z.string(),
|
|
1292
|
+
pipeline_key: z.string(),
|
|
1293
|
+
stage_key: z.string().nullable(),
|
|
1294
|
+
state_key: z.string().nullable(),
|
|
1295
|
+
activity_log: z.unknown(),
|
|
1296
|
+
discovery_data: z.unknown().nullable(),
|
|
1297
|
+
discovery_submitted_at: z.string().nullable(),
|
|
1298
|
+
discovery_submitted_by: z.string().nullable(),
|
|
1299
|
+
proposal_data: z.unknown().nullable(),
|
|
1300
|
+
proposal_sent_at: z.string().nullable(),
|
|
1301
|
+
proposal_pdf_url: z.string().nullable(),
|
|
1302
|
+
signature_envelope_id: z.string().nullable(),
|
|
1303
|
+
source_list_id: z.string().nullable(),
|
|
1304
|
+
source_type: z.string().nullable(),
|
|
1305
|
+
initial_fee: z.number().nullable(),
|
|
1306
|
+
monthly_fee: z.number().nullable(),
|
|
1307
|
+
closed_lost_at: z.string().nullable(),
|
|
1308
|
+
closed_lost_reason: z.string().nullable(),
|
|
1271
1309
|
created_at: z.string(),
|
|
1272
1310
|
updated_at: z.string(),
|
|
1273
1311
|
priority: DealPrioritySchema,
|
|
@@ -1281,40 +1319,40 @@ export const DealListItemSchema = z.object({
|
|
|
1281
1319
|
### `DealListResponseSchema`
|
|
1282
1320
|
|
|
1283
1321
|
```typescript
|
|
1284
|
-
export const DealListResponseSchema = z.object({
|
|
1285
|
-
data: z.array(DealListItemSchema),
|
|
1286
|
-
total: z.number().int(),
|
|
1287
|
-
limit: z.number().int(),
|
|
1288
|
-
offset: z.number().int()
|
|
1322
|
+
export const DealListResponseSchema = z.object({
|
|
1323
|
+
data: z.array(DealListItemSchema),
|
|
1324
|
+
total: z.number().int(),
|
|
1325
|
+
limit: z.number().int(),
|
|
1326
|
+
offset: z.number().int()
|
|
1289
1327
|
})
|
|
1290
1328
|
```
|
|
1291
1329
|
|
|
1292
1330
|
### `DealDetailResponseSchema`
|
|
1293
1331
|
|
|
1294
1332
|
```typescript
|
|
1295
|
-
/**
|
|
1296
|
-
* Deal detail shape — currently the same as a list item (full joined record).
|
|
1297
|
-
* Additive fields keep existing DealListItem callers compatible.
|
|
1298
|
-
*/
|
|
1299
|
-
export const DealDetailResponseSchema = DealListItemSchema.extend({
|
|
1300
|
-
conversation: DealConversationSchema
|
|
1333
|
+
/**
|
|
1334
|
+
* Deal detail shape — currently the same as a list item (full joined record).
|
|
1335
|
+
* Additive fields keep existing DealListItem callers compatible.
|
|
1336
|
+
*/
|
|
1337
|
+
export const DealDetailResponseSchema = DealListItemSchema.extend({
|
|
1338
|
+
conversation: DealConversationSchema
|
|
1301
1339
|
})
|
|
1302
1340
|
```
|
|
1303
1341
|
|
|
1304
1342
|
### `DealNoteResponseSchema`
|
|
1305
1343
|
|
|
1306
1344
|
```typescript
|
|
1307
|
-
/**
|
|
1308
|
-
* Single acq_deal_notes row (camelCase API representation).
|
|
1309
|
-
*/
|
|
1310
|
-
export const DealNoteResponseSchema = z.object({
|
|
1311
|
-
id: z.string(),
|
|
1312
|
-
dealId: z.string(),
|
|
1313
|
-
organizationId: z.string(),
|
|
1314
|
-
authorUserId: z.string().nullable(),
|
|
1315
|
-
body: z.string(),
|
|
1316
|
-
createdAt: z.string(),
|
|
1317
|
-
updatedAt: z.string()
|
|
1345
|
+
/**
|
|
1346
|
+
* Single acq_deal_notes row (camelCase API representation).
|
|
1347
|
+
*/
|
|
1348
|
+
export const DealNoteResponseSchema = z.object({
|
|
1349
|
+
id: z.string(),
|
|
1350
|
+
dealId: z.string(),
|
|
1351
|
+
organizationId: z.string(),
|
|
1352
|
+
authorUserId: z.string().nullable(),
|
|
1353
|
+
body: z.string(),
|
|
1354
|
+
createdAt: z.string(),
|
|
1355
|
+
updatedAt: z.string()
|
|
1318
1356
|
})
|
|
1319
1357
|
```
|
|
1320
1358
|
|
|
@@ -1327,24 +1365,24 @@ export const DealNoteListResponseSchema = z.array(DealNoteResponseSchema)
|
|
|
1327
1365
|
### `DealTaskResponseSchema`
|
|
1328
1366
|
|
|
1329
1367
|
```typescript
|
|
1330
|
-
/**
|
|
1331
|
-
* Single acq_deal_tasks row (camelCase API representation).
|
|
1332
|
-
* Matches AcqDealTask domain type from types.ts.
|
|
1333
|
-
*/
|
|
1334
|
-
export const DealTaskResponseSchema = z.object({
|
|
1335
|
-
id: z.string(),
|
|
1336
|
-
organizationId: z.string(),
|
|
1337
|
-
dealId: z.string(),
|
|
1338
|
-
title: z.string(),
|
|
1339
|
-
description: z.string().nullable(),
|
|
1340
|
-
kind: AcqDealTaskKindSchema,
|
|
1341
|
-
dueAt: z.string().nullable(),
|
|
1342
|
-
assigneeUserId: z.string().nullable(),
|
|
1343
|
-
completedAt: z.string().nullable(),
|
|
1344
|
-
completedByUserId: z.string().nullable(),
|
|
1345
|
-
createdAt: z.string(),
|
|
1346
|
-
updatedAt: z.string(),
|
|
1347
|
-
createdByUserId: z.string().nullable()
|
|
1368
|
+
/**
|
|
1369
|
+
* Single acq_deal_tasks row (camelCase API representation).
|
|
1370
|
+
* Matches AcqDealTask domain type from types.ts.
|
|
1371
|
+
*/
|
|
1372
|
+
export const DealTaskResponseSchema = z.object({
|
|
1373
|
+
id: z.string(),
|
|
1374
|
+
organizationId: z.string(),
|
|
1375
|
+
dealId: z.string(),
|
|
1376
|
+
title: z.string(),
|
|
1377
|
+
description: z.string().nullable(),
|
|
1378
|
+
kind: AcqDealTaskKindSchema,
|
|
1379
|
+
dueAt: z.string().nullable(),
|
|
1380
|
+
assigneeUserId: z.string().nullable(),
|
|
1381
|
+
completedAt: z.string().nullable(),
|
|
1382
|
+
completedByUserId: z.string().nullable(),
|
|
1383
|
+
createdAt: z.string(),
|
|
1384
|
+
updatedAt: z.string(),
|
|
1385
|
+
createdByUserId: z.string().nullable()
|
|
1348
1386
|
})
|
|
1349
1387
|
```
|
|
1350
1388
|
|
|
@@ -1357,35 +1395,35 @@ export const DealTaskListResponseSchema = z.array(DealTaskResponseSchema)
|
|
|
1357
1395
|
### `DealSchemas`
|
|
1358
1396
|
|
|
1359
1397
|
```typescript
|
|
1360
|
-
export const DealSchemas = {
|
|
1361
|
-
// Params
|
|
1362
|
-
DealIdParams: DealIdParamsSchema,
|
|
1363
|
-
DealTaskIdParams: DealTaskIdParamsSchema,
|
|
1364
|
-
|
|
1365
|
-
// Queries
|
|
1366
|
-
ListDealsQuery: ListDealsQuerySchema,
|
|
1367
|
-
DealLookupQuery: DealLookupQuerySchema,
|
|
1368
|
-
ListDealTasksDueQuery: ListDealTasksDueQuerySchema,
|
|
1369
|
-
|
|
1370
|
-
// Request bodies
|
|
1371
|
-
CreateDealNoteRequest: CreateDealNoteRequestSchema,
|
|
1372
|
-
CreateDealTaskRequest: CreateDealTaskRequestSchema,
|
|
1373
|
-
TransitionItemRequest: TransitionItemRequestSchema,
|
|
1374
|
-
TransitionDealStateRequest: TransitionDealStateRequestSchema,
|
|
1375
|
-
ExecuteActionParams: ExecuteActionParamsSchema,
|
|
1376
|
-
ExecuteActionRequest: ExecuteActionRequestSchema,
|
|
1377
|
-
|
|
1378
|
-
// Responses
|
|
1379
|
-
DealPriority: DealPrioritySchema,
|
|
1380
|
-
DealListResponse: DealListResponseSchema,
|
|
1381
|
-
DealSummaryResponse: DealSummaryResponseSchema,
|
|
1382
|
-
DealLookupResponse: DealLookupResponseSchema,
|
|
1383
|
-
ConversationMessage: ConversationMessageSchema,
|
|
1384
|
-
DealDetailResponse: DealDetailResponseSchema,
|
|
1385
|
-
DealNoteResponse: DealNoteResponseSchema,
|
|
1386
|
-
DealNoteListResponse: DealNoteListResponseSchema,
|
|
1387
|
-
DealTaskResponse: DealTaskResponseSchema,
|
|
1388
|
-
DealTaskListResponse: DealTaskListResponseSchema
|
|
1398
|
+
export const DealSchemas = {
|
|
1399
|
+
// Params
|
|
1400
|
+
DealIdParams: DealIdParamsSchema,
|
|
1401
|
+
DealTaskIdParams: DealTaskIdParamsSchema,
|
|
1402
|
+
|
|
1403
|
+
// Queries
|
|
1404
|
+
ListDealsQuery: ListDealsQuerySchema,
|
|
1405
|
+
DealLookupQuery: DealLookupQuerySchema,
|
|
1406
|
+
ListDealTasksDueQuery: ListDealTasksDueQuerySchema,
|
|
1407
|
+
|
|
1408
|
+
// Request bodies
|
|
1409
|
+
CreateDealNoteRequest: CreateDealNoteRequestSchema,
|
|
1410
|
+
CreateDealTaskRequest: CreateDealTaskRequestSchema,
|
|
1411
|
+
TransitionItemRequest: TransitionItemRequestSchema,
|
|
1412
|
+
TransitionDealStateRequest: TransitionDealStateRequestSchema,
|
|
1413
|
+
ExecuteActionParams: ExecuteActionParamsSchema,
|
|
1414
|
+
ExecuteActionRequest: ExecuteActionRequestSchema,
|
|
1415
|
+
|
|
1416
|
+
// Responses
|
|
1417
|
+
DealPriority: DealPrioritySchema,
|
|
1418
|
+
DealListResponse: DealListResponseSchema,
|
|
1419
|
+
DealSummaryResponse: DealSummaryResponseSchema,
|
|
1420
|
+
DealLookupResponse: DealLookupResponseSchema,
|
|
1421
|
+
ConversationMessage: ConversationMessageSchema,
|
|
1422
|
+
DealDetailResponse: DealDetailResponseSchema,
|
|
1423
|
+
DealNoteResponse: DealNoteResponseSchema,
|
|
1424
|
+
DealNoteListResponse: DealNoteListResponseSchema,
|
|
1425
|
+
DealTaskResponse: DealTaskResponseSchema,
|
|
1426
|
+
DealTaskListResponse: DealTaskListResponseSchema
|
|
1389
1427
|
}
|
|
1390
1428
|
```
|
|
1391
1429
|
|
|
@@ -1519,443 +1557,443 @@ export type CrmToolMap = {
|
|
|
1519
1557
|
### `WebPost`
|
|
1520
1558
|
|
|
1521
1559
|
```typescript
|
|
1522
|
-
/**
|
|
1523
|
-
* Represents a web post from company website scraping.
|
|
1524
|
-
* Used for recent blog posts, news, or announcements.
|
|
1525
|
-
*/
|
|
1526
|
-
export interface WebPost {
|
|
1527
|
-
/** ISO date string of when the post was published */
|
|
1528
|
-
date: string
|
|
1529
|
-
/** Title of the web post */
|
|
1530
|
-
title: string
|
|
1531
|
-
/** Brief summary of the post content */
|
|
1532
|
-
summary: string
|
|
1533
|
-
/** AI-generated insight about the post's relevance */
|
|
1534
|
-
aiInsight?: string
|
|
1560
|
+
/**
|
|
1561
|
+
* Represents a web post from company website scraping.
|
|
1562
|
+
* Used for recent blog posts, news, or announcements.
|
|
1563
|
+
*/
|
|
1564
|
+
export interface WebPost {
|
|
1565
|
+
/** ISO date string of when the post was published */
|
|
1566
|
+
date: string
|
|
1567
|
+
/** Title of the web post */
|
|
1568
|
+
title: string
|
|
1569
|
+
/** Brief summary of the post content */
|
|
1570
|
+
summary: string
|
|
1571
|
+
/** AI-generated insight about the post's relevance */
|
|
1572
|
+
aiInsight?: string
|
|
1535
1573
|
}
|
|
1536
1574
|
```
|
|
1537
1575
|
|
|
1538
1576
|
### `CompanyPipelineStatus`
|
|
1539
1577
|
|
|
1540
1578
|
```typescript
|
|
1541
|
-
/**
|
|
1542
|
-
* Tracks pipeline status for a company across all processing stages.
|
|
1543
|
-
*/
|
|
1544
|
-
export interface CompanyPipelineStatus {
|
|
1545
|
-
acquired: boolean
|
|
1546
|
-
enrichment: {
|
|
1547
|
-
[source: string]: {
|
|
1548
|
-
status: 'pending' | 'complete' | 'failed' | 'skipped'
|
|
1549
|
-
completedAt?: string
|
|
1550
|
-
error?: string
|
|
1551
|
-
}
|
|
1552
|
-
}
|
|
1579
|
+
/**
|
|
1580
|
+
* Tracks pipeline status for a company across all processing stages.
|
|
1581
|
+
*/
|
|
1582
|
+
export interface CompanyPipelineStatus {
|
|
1583
|
+
acquired: boolean
|
|
1584
|
+
enrichment: {
|
|
1585
|
+
[source: string]: {
|
|
1586
|
+
status: 'pending' | 'complete' | 'failed' | 'skipped'
|
|
1587
|
+
completedAt?: string
|
|
1588
|
+
error?: string
|
|
1589
|
+
}
|
|
1590
|
+
}
|
|
1553
1591
|
}
|
|
1554
1592
|
```
|
|
1555
1593
|
|
|
1556
1594
|
### `ContactPipelineStatus`
|
|
1557
1595
|
|
|
1558
1596
|
```typescript
|
|
1559
|
-
/**
|
|
1560
|
-
* Tracks pipeline status for a contact across all processing stages.
|
|
1561
|
-
*/
|
|
1562
|
-
export interface ContactPipelineStatus {
|
|
1563
|
-
enrichment: {
|
|
1564
|
-
[source: string]: {
|
|
1565
|
-
status: 'pending' | 'complete' | 'failed' | 'skipped'
|
|
1566
|
-
completedAt?: string
|
|
1567
|
-
error?: string
|
|
1568
|
-
}
|
|
1569
|
-
}
|
|
1570
|
-
personalization: {
|
|
1571
|
-
status: 'pending' | 'complete' | 'failed' | 'skipped'
|
|
1572
|
-
completedAt?: string
|
|
1573
|
-
}
|
|
1574
|
-
outreach: {
|
|
1575
|
-
status: 'pending' | 'sent' | 'replied' | 'bounced' | 'opted-out'
|
|
1576
|
-
sentAt?: string
|
|
1577
|
-
channel?: string
|
|
1578
|
-
campaignId?: string
|
|
1579
|
-
}
|
|
1597
|
+
/**
|
|
1598
|
+
* Tracks pipeline status for a contact across all processing stages.
|
|
1599
|
+
*/
|
|
1600
|
+
export interface ContactPipelineStatus {
|
|
1601
|
+
enrichment: {
|
|
1602
|
+
[source: string]: {
|
|
1603
|
+
status: 'pending' | 'complete' | 'failed' | 'skipped'
|
|
1604
|
+
completedAt?: string
|
|
1605
|
+
error?: string
|
|
1606
|
+
}
|
|
1607
|
+
}
|
|
1608
|
+
personalization: {
|
|
1609
|
+
status: 'pending' | 'complete' | 'failed' | 'skipped'
|
|
1610
|
+
completedAt?: string
|
|
1611
|
+
}
|
|
1612
|
+
outreach: {
|
|
1613
|
+
status: 'pending' | 'sent' | 'replied' | 'bounced' | 'opted-out'
|
|
1614
|
+
sentAt?: string
|
|
1615
|
+
channel?: string
|
|
1616
|
+
campaignId?: string
|
|
1617
|
+
}
|
|
1580
1618
|
}
|
|
1581
1619
|
```
|
|
1582
1620
|
|
|
1583
1621
|
### `CompanyEnrichmentData`
|
|
1584
1622
|
|
|
1585
1623
|
```typescript
|
|
1586
|
-
/**
|
|
1587
|
-
* Enrichment data collected for a company from various sources.
|
|
1588
|
-
*/
|
|
1589
|
-
export interface CompanyEnrichmentData {
|
|
1590
|
-
googleMaps?: {
|
|
1591
|
-
placeId?: string
|
|
1592
|
-
totalScore?: number
|
|
1593
|
-
reviewsCount?: number
|
|
1594
|
-
address?: string
|
|
1595
|
-
phone?: string
|
|
1596
|
-
categoryName?: string
|
|
1597
|
-
googleMapsUrl?: string
|
|
1598
|
-
scrapedAt?: string
|
|
1599
|
-
}
|
|
1600
|
-
websiteCrawl?: {
|
|
1601
|
-
companyDescription?: string
|
|
1602
|
-
services?: string[]
|
|
1603
|
-
specialties?: string[]
|
|
1604
|
-
staff?: Array<{ name: string; title?: string; email?: string }>
|
|
1605
|
-
automationGaps?: string[]
|
|
1606
|
-
targetAudience?: string
|
|
1607
|
-
category?: string
|
|
1608
|
-
segment?: string
|
|
1609
|
-
recentWin?: string
|
|
1610
|
-
emailCount?: number
|
|
1611
|
-
pageCount?: number
|
|
1612
|
-
totalChars?: number
|
|
1613
|
-
crawledAt?: string
|
|
1614
|
-
extractedAt?: string
|
|
1615
|
-
}
|
|
1616
|
-
website?: {
|
|
1617
|
-
missionVision?: string
|
|
1618
|
-
uniqueAttributes?: string
|
|
1619
|
-
coreOfferings?: string
|
|
1620
|
-
targetAudience?: string
|
|
1621
|
-
companyValues?: string
|
|
1622
|
-
businessDescription?: string
|
|
1623
|
-
recentPosts?: Array<{ date?: string; title?: string; summary?: string; aiInsight?: string }>
|
|
1624
|
-
}
|
|
1625
|
-
tomba?: {
|
|
1626
|
-
waterfallEmail?: {
|
|
1627
|
-
email: string
|
|
1628
|
-
name?: string
|
|
1629
|
-
title?: string
|
|
1630
|
-
department?: string
|
|
1631
|
-
} | null
|
|
1632
|
-
genericEmail?: string | null
|
|
1633
|
-
totalFound?: number
|
|
1634
|
-
searchedAt?: string
|
|
1635
|
-
}
|
|
1624
|
+
/**
|
|
1625
|
+
* Enrichment data collected for a company from various sources.
|
|
1626
|
+
*/
|
|
1627
|
+
export interface CompanyEnrichmentData {
|
|
1628
|
+
googleMaps?: {
|
|
1629
|
+
placeId?: string
|
|
1630
|
+
totalScore?: number
|
|
1631
|
+
reviewsCount?: number
|
|
1632
|
+
address?: string
|
|
1633
|
+
phone?: string
|
|
1634
|
+
categoryName?: string
|
|
1635
|
+
googleMapsUrl?: string
|
|
1636
|
+
scrapedAt?: string
|
|
1637
|
+
}
|
|
1638
|
+
websiteCrawl?: {
|
|
1639
|
+
companyDescription?: string
|
|
1640
|
+
services?: string[]
|
|
1641
|
+
specialties?: string[]
|
|
1642
|
+
staff?: Array<{ name: string; title?: string; email?: string }>
|
|
1643
|
+
automationGaps?: string[]
|
|
1644
|
+
targetAudience?: string
|
|
1645
|
+
category?: string
|
|
1646
|
+
segment?: string
|
|
1647
|
+
recentWin?: string
|
|
1648
|
+
emailCount?: number
|
|
1649
|
+
pageCount?: number
|
|
1650
|
+
totalChars?: number
|
|
1651
|
+
crawledAt?: string
|
|
1652
|
+
extractedAt?: string
|
|
1653
|
+
}
|
|
1654
|
+
website?: {
|
|
1655
|
+
missionVision?: string
|
|
1656
|
+
uniqueAttributes?: string
|
|
1657
|
+
coreOfferings?: string
|
|
1658
|
+
targetAudience?: string
|
|
1659
|
+
companyValues?: string
|
|
1660
|
+
businessDescription?: string
|
|
1661
|
+
recentPosts?: Array<{ date?: string; title?: string; summary?: string; aiInsight?: string }>
|
|
1662
|
+
}
|
|
1663
|
+
tomba?: {
|
|
1664
|
+
waterfallEmail?: {
|
|
1665
|
+
email: string
|
|
1666
|
+
name?: string
|
|
1667
|
+
title?: string
|
|
1668
|
+
department?: string
|
|
1669
|
+
} | null
|
|
1670
|
+
genericEmail?: string | null
|
|
1671
|
+
totalFound?: number
|
|
1672
|
+
searchedAt?: string
|
|
1673
|
+
}
|
|
1636
1674
|
}
|
|
1637
1675
|
```
|
|
1638
1676
|
|
|
1639
1677
|
### `ContactEnrichmentData`
|
|
1640
1678
|
|
|
1641
1679
|
```typescript
|
|
1642
|
-
/**
|
|
1643
|
-
* Enrichment data collected for a contact from various sources.
|
|
1644
|
-
*/
|
|
1645
|
-
export interface ContactEnrichmentData {
|
|
1646
|
-
linkedin?: {
|
|
1647
|
-
summary?: string
|
|
1648
|
-
pastExperience?: string
|
|
1649
|
-
education?: string
|
|
1650
|
-
activity?: Array<{ date?: string; content?: string }>
|
|
1651
|
-
}
|
|
1680
|
+
/**
|
|
1681
|
+
* Enrichment data collected for a contact from various sources.
|
|
1682
|
+
*/
|
|
1683
|
+
export interface ContactEnrichmentData {
|
|
1684
|
+
linkedin?: {
|
|
1685
|
+
summary?: string
|
|
1686
|
+
pastExperience?: string
|
|
1687
|
+
education?: string
|
|
1688
|
+
activity?: Array<{ date?: string; content?: string }>
|
|
1689
|
+
}
|
|
1652
1690
|
}
|
|
1653
1691
|
```
|
|
1654
1692
|
|
|
1655
1693
|
### `AcqList`
|
|
1656
1694
|
|
|
1657
1695
|
```typescript
|
|
1658
|
-
export interface AcqList {
|
|
1659
|
-
id: string
|
|
1660
|
-
organizationId: string
|
|
1661
|
-
name: string
|
|
1662
|
-
description: string | null
|
|
1663
|
-
batchIds: string[]
|
|
1664
|
-
instantlyCampaignId: string | null
|
|
1665
|
-
status: ListStatus
|
|
1666
|
-
scrapingConfig: ScrapingConfig
|
|
1667
|
-
icp: IcpRubric
|
|
1668
|
-
pipelineConfig: PipelineConfig
|
|
1669
|
-
metadata: AcqListMetadata
|
|
1670
|
-
launchedAt: Date | null
|
|
1671
|
-
completedAt: Date | null
|
|
1672
|
-
createdAt: Date
|
|
1696
|
+
export interface AcqList {
|
|
1697
|
+
id: string
|
|
1698
|
+
organizationId: string
|
|
1699
|
+
name: string
|
|
1700
|
+
description: string | null
|
|
1701
|
+
batchIds: string[]
|
|
1702
|
+
instantlyCampaignId: string | null
|
|
1703
|
+
status: ListStatus
|
|
1704
|
+
scrapingConfig: ScrapingConfig
|
|
1705
|
+
icp: IcpRubric
|
|
1706
|
+
pipelineConfig: PipelineConfig
|
|
1707
|
+
metadata: AcqListMetadata
|
|
1708
|
+
launchedAt: Date | null
|
|
1709
|
+
completedAt: Date | null
|
|
1710
|
+
createdAt: Date
|
|
1673
1711
|
}
|
|
1674
1712
|
```
|
|
1675
1713
|
|
|
1676
1714
|
### `AcqCompany`
|
|
1677
1715
|
|
|
1678
1716
|
```typescript
|
|
1679
|
-
/**
|
|
1680
|
-
* Company record in the acquisition database.
|
|
1681
|
-
* Contains enriched company data from various sources.
|
|
1682
|
-
* Transformed from AcqCompanyRow with camelCase properties.
|
|
1683
|
-
*/
|
|
1684
|
-
export interface AcqCompany {
|
|
1685
|
-
id: string
|
|
1686
|
-
organizationId: string
|
|
1687
|
-
name: string
|
|
1688
|
-
domain: string | null
|
|
1689
|
-
linkedinUrl: string | null
|
|
1690
|
-
website: string | null
|
|
1691
|
-
numEmployees: number | null
|
|
1692
|
-
foundedYear: number | null
|
|
1693
|
-
locationCity: string | null
|
|
1694
|
-
locationState: string | null
|
|
1695
|
-
category: string | null
|
|
1696
|
-
categoryPain: string | null
|
|
1697
|
-
segment: string | null
|
|
1698
|
-
pipelineStatus: CompanyPipelineStatus | null
|
|
1699
|
-
enrichmentData: CompanyEnrichmentData | null
|
|
1700
|
-
source: string | null
|
|
1701
|
-
batchId: string | null
|
|
1702
|
-
status: 'active' | 'invalid'
|
|
1703
|
-
verticalResearch: string | null
|
|
1704
|
-
/** Track A: flat qualification score (null until a scoring rubric is defined). Added by W1 migration. */
|
|
1705
|
-
qualificationScore: number | null
|
|
1706
|
-
/** Track A: flat qualification signals jsonb preserving the result payload shape. Added by W1 migration. */
|
|
1707
|
-
qualificationSignals: Record<string, unknown> | null
|
|
1708
|
-
/** Track A: key identifying the rubric used for qualification. Added by W1 migration. */
|
|
1709
|
-
qualificationRubricKey: string | null
|
|
1710
|
-
createdAt: Date
|
|
1711
|
-
updatedAt: Date
|
|
1717
|
+
/**
|
|
1718
|
+
* Company record in the acquisition database.
|
|
1719
|
+
* Contains enriched company data from various sources.
|
|
1720
|
+
* Transformed from AcqCompanyRow with camelCase properties.
|
|
1721
|
+
*/
|
|
1722
|
+
export interface AcqCompany {
|
|
1723
|
+
id: string
|
|
1724
|
+
organizationId: string
|
|
1725
|
+
name: string
|
|
1726
|
+
domain: string | null
|
|
1727
|
+
linkedinUrl: string | null
|
|
1728
|
+
website: string | null
|
|
1729
|
+
numEmployees: number | null
|
|
1730
|
+
foundedYear: number | null
|
|
1731
|
+
locationCity: string | null
|
|
1732
|
+
locationState: string | null
|
|
1733
|
+
category: string | null
|
|
1734
|
+
categoryPain: string | null
|
|
1735
|
+
segment: string | null
|
|
1736
|
+
pipelineStatus: CompanyPipelineStatus | null
|
|
1737
|
+
enrichmentData: CompanyEnrichmentData | null
|
|
1738
|
+
source: string | null
|
|
1739
|
+
batchId: string | null
|
|
1740
|
+
status: 'active' | 'invalid'
|
|
1741
|
+
verticalResearch: string | null
|
|
1742
|
+
/** Track A: flat qualification score (null until a scoring rubric is defined). Added by W1 migration. */
|
|
1743
|
+
qualificationScore: number | null
|
|
1744
|
+
/** Track A: flat qualification signals jsonb preserving the result payload shape. Added by W1 migration. */
|
|
1745
|
+
qualificationSignals: Record<string, unknown> | null
|
|
1746
|
+
/** Track A: key identifying the rubric used for qualification. Added by W1 migration. */
|
|
1747
|
+
qualificationRubricKey: string | null
|
|
1748
|
+
createdAt: Date
|
|
1749
|
+
updatedAt: Date
|
|
1712
1750
|
}
|
|
1713
1751
|
```
|
|
1714
1752
|
|
|
1715
1753
|
### `AcqContact`
|
|
1716
1754
|
|
|
1717
1755
|
```typescript
|
|
1718
|
-
/**
|
|
1719
|
-
* Contact record in the acquisition database.
|
|
1720
|
-
* Contains enriched contact data and personalization content.
|
|
1721
|
-
* Transformed from AcqContactRow with camelCase properties.
|
|
1722
|
-
*/
|
|
1723
|
-
export interface AcqContact {
|
|
1724
|
-
id: string
|
|
1725
|
-
organizationId: string
|
|
1726
|
-
companyId: string | null
|
|
1727
|
-
email: string
|
|
1728
|
-
emailValid: 'VALID' | 'INVALID' | 'RISKY' | 'UNKNOWN' | null
|
|
1729
|
-
firstName: string | null
|
|
1730
|
-
lastName: string | null
|
|
1731
|
-
linkedinUrl: string | null
|
|
1732
|
-
title: string | null
|
|
1733
|
-
headline: string | null
|
|
1734
|
-
filterReason: string | null
|
|
1735
|
-
openingLine: string | null
|
|
1736
|
-
source: string | null
|
|
1737
|
-
sourceId: string | null
|
|
1738
|
-
pipelineStatus: ContactPipelineStatus | null
|
|
1739
|
-
enrichmentData: ContactEnrichmentData | null
|
|
1740
|
-
/** Attio Person record ID - set when contact responds and is added to CRM */
|
|
1741
|
-
attioPersonId: string | null
|
|
1742
|
-
batchId: string | null
|
|
1743
|
-
status: 'active' | 'invalid'
|
|
1744
|
-
createdAt: Date
|
|
1745
|
-
updatedAt: Date
|
|
1756
|
+
/**
|
|
1757
|
+
* Contact record in the acquisition database.
|
|
1758
|
+
* Contains enriched contact data and personalization content.
|
|
1759
|
+
* Transformed from AcqContactRow with camelCase properties.
|
|
1760
|
+
*/
|
|
1761
|
+
export interface AcqContact {
|
|
1762
|
+
id: string
|
|
1763
|
+
organizationId: string
|
|
1764
|
+
companyId: string | null
|
|
1765
|
+
email: string
|
|
1766
|
+
emailValid: 'VALID' | 'INVALID' | 'RISKY' | 'UNKNOWN' | null
|
|
1767
|
+
firstName: string | null
|
|
1768
|
+
lastName: string | null
|
|
1769
|
+
linkedinUrl: string | null
|
|
1770
|
+
title: string | null
|
|
1771
|
+
headline: string | null
|
|
1772
|
+
filterReason: string | null
|
|
1773
|
+
openingLine: string | null
|
|
1774
|
+
source: string | null
|
|
1775
|
+
sourceId: string | null
|
|
1776
|
+
pipelineStatus: ContactPipelineStatus | null
|
|
1777
|
+
enrichmentData: ContactEnrichmentData | null
|
|
1778
|
+
/** Attio Person record ID - set when contact responds and is added to CRM */
|
|
1779
|
+
attioPersonId: string | null
|
|
1780
|
+
batchId: string | null
|
|
1781
|
+
status: 'active' | 'invalid'
|
|
1782
|
+
createdAt: Date
|
|
1783
|
+
updatedAt: Date
|
|
1746
1784
|
}
|
|
1747
1785
|
```
|
|
1748
1786
|
|
|
1749
1787
|
### `ListTelemetry`
|
|
1750
1788
|
|
|
1751
1789
|
```typescript
|
|
1752
|
-
/**
|
|
1753
|
-
* Live-scan aggregate telemetry for a single list, computed on demand from
|
|
1754
|
-
* the list junction tables and current contact deliverability state.
|
|
1755
|
-
* `stageCounts` are attempted counts from list-row processing_state.
|
|
1756
|
-
*/
|
|
1757
|
-
export interface ListTelemetry {
|
|
1758
|
-
listId: string
|
|
1759
|
-
totalCompanies: number
|
|
1760
|
-
totalContacts: number
|
|
1761
|
-
stageCounts: {
|
|
1762
|
-
populated: number
|
|
1763
|
-
extracted: number
|
|
1764
|
-
qualified: number
|
|
1765
|
-
discovered: number
|
|
1766
|
-
verified: number
|
|
1767
|
-
personalized: number
|
|
1768
|
-
uploaded: number
|
|
1769
|
-
}
|
|
1770
|
-
deliverability: {
|
|
1771
|
-
valid: number
|
|
1772
|
-
risky: number
|
|
1773
|
-
invalid: number
|
|
1774
|
-
unknown: number
|
|
1775
|
-
bounced: number
|
|
1776
|
-
}
|
|
1777
|
-
/** Reserved -- active workflow IDs associated with this list. */
|
|
1778
|
-
activeWorkflows?: string[]
|
|
1790
|
+
/**
|
|
1791
|
+
* Live-scan aggregate telemetry for a single list, computed on demand from
|
|
1792
|
+
* the list junction tables and current contact deliverability state.
|
|
1793
|
+
* `stageCounts` are attempted counts from list-row processing_state.
|
|
1794
|
+
*/
|
|
1795
|
+
export interface ListTelemetry {
|
|
1796
|
+
listId: string
|
|
1797
|
+
totalCompanies: number
|
|
1798
|
+
totalContacts: number
|
|
1799
|
+
stageCounts: {
|
|
1800
|
+
populated: number
|
|
1801
|
+
extracted: number
|
|
1802
|
+
qualified: number
|
|
1803
|
+
discovered: number
|
|
1804
|
+
verified: number
|
|
1805
|
+
personalized: number
|
|
1806
|
+
uploaded: number
|
|
1807
|
+
}
|
|
1808
|
+
deliverability: {
|
|
1809
|
+
valid: number
|
|
1810
|
+
risky: number
|
|
1811
|
+
invalid: number
|
|
1812
|
+
unknown: number
|
|
1813
|
+
bounced: number
|
|
1814
|
+
}
|
|
1815
|
+
/** Reserved -- active workflow IDs associated with this list. */
|
|
1816
|
+
activeWorkflows?: string[]
|
|
1779
1817
|
}
|
|
1780
1818
|
```
|
|
1781
1819
|
|
|
1782
1820
|
### `ListStageCountsSchema`
|
|
1783
1821
|
|
|
1784
1822
|
```typescript
|
|
1785
|
-
export const ListStageCountsSchema = z.object({
|
|
1786
|
-
// Attempted counts by canonical lead-gen stage. The detailed status
|
|
1787
|
-
// distribution lives on ListProgress; telemetry keeps the overview payload small.
|
|
1788
|
-
stageCounts: z.object({
|
|
1789
|
-
populated: z.number().int(),
|
|
1790
|
-
extracted: z.number().int(),
|
|
1791
|
-
qualified: z.number().int(),
|
|
1792
|
-
discovered: z.number().int(),
|
|
1793
|
-
verified: z.number().int(),
|
|
1794
|
-
personalized: z.number().int(),
|
|
1795
|
-
uploaded: z.number().int()
|
|
1796
|
-
}),
|
|
1797
|
-
deliverability: z.object({
|
|
1798
|
-
valid: z.number().int(),
|
|
1799
|
-
risky: z.number().int(),
|
|
1800
|
-
invalid: z.number().int(),
|
|
1801
|
-
unknown: z.number().int(),
|
|
1802
|
-
bounced: z.number().int()
|
|
1803
|
-
})
|
|
1823
|
+
export const ListStageCountsSchema = z.object({
|
|
1824
|
+
// Attempted counts by canonical lead-gen stage. The detailed status
|
|
1825
|
+
// distribution lives on ListProgress; telemetry keeps the overview payload small.
|
|
1826
|
+
stageCounts: z.object({
|
|
1827
|
+
populated: z.number().int(),
|
|
1828
|
+
extracted: z.number().int(),
|
|
1829
|
+
qualified: z.number().int(),
|
|
1830
|
+
discovered: z.number().int(),
|
|
1831
|
+
verified: z.number().int(),
|
|
1832
|
+
personalized: z.number().int(),
|
|
1833
|
+
uploaded: z.number().int()
|
|
1834
|
+
}),
|
|
1835
|
+
deliverability: z.object({
|
|
1836
|
+
valid: z.number().int(),
|
|
1837
|
+
risky: z.number().int(),
|
|
1838
|
+
invalid: z.number().int(),
|
|
1839
|
+
unknown: z.number().int(),
|
|
1840
|
+
bounced: z.number().int()
|
|
1841
|
+
})
|
|
1804
1842
|
})
|
|
1805
1843
|
```
|
|
1806
1844
|
|
|
1807
1845
|
### `ListTelemetrySchema`
|
|
1808
1846
|
|
|
1809
1847
|
```typescript
|
|
1810
|
-
export const ListTelemetrySchema = z.object({
|
|
1811
|
-
listId: UuidSchema,
|
|
1812
|
-
totalCompanies: z.number().int(),
|
|
1813
|
-
totalContacts: z.number().int(),
|
|
1814
|
-
stageCounts: ListStageCountsSchema.shape.stageCounts,
|
|
1815
|
-
deliverability: ListStageCountsSchema.shape.deliverability,
|
|
1816
|
-
activeWorkflows: z.array(z.string()).optional()
|
|
1848
|
+
export const ListTelemetrySchema = z.object({
|
|
1849
|
+
listId: UuidSchema,
|
|
1850
|
+
totalCompanies: z.number().int(),
|
|
1851
|
+
totalContacts: z.number().int(),
|
|
1852
|
+
stageCounts: ListStageCountsSchema.shape.stageCounts,
|
|
1853
|
+
deliverability: ListStageCountsSchema.shape.deliverability,
|
|
1854
|
+
activeWorkflows: z.array(z.string()).optional()
|
|
1817
1855
|
})
|
|
1818
1856
|
```
|
|
1819
1857
|
|
|
1820
1858
|
### `ListIdParamsSchema`
|
|
1821
1859
|
|
|
1822
1860
|
```typescript
|
|
1823
|
-
export const ListIdParamsSchema = z.object({
|
|
1824
|
-
listId: UuidSchema
|
|
1861
|
+
export const ListIdParamsSchema = z.object({
|
|
1862
|
+
listId: UuidSchema
|
|
1825
1863
|
})
|
|
1826
1864
|
```
|
|
1827
1865
|
|
|
1828
1866
|
### `CreateListRequestSchema`
|
|
1829
1867
|
|
|
1830
1868
|
```typescript
|
|
1831
|
-
export const CreateListRequestSchema = z
|
|
1832
|
-
.object({
|
|
1833
|
-
name: z.string().trim().min(1).max(255),
|
|
1834
|
-
description: z.string().trim().nullable().optional(),
|
|
1835
|
-
status: ListStatusSchema.optional(),
|
|
1836
|
-
buildTemplateId: ProspectingBuildTemplateIdSchema.optional(),
|
|
1837
|
-
scrapingConfig: ScrapingConfigSchema.optional(),
|
|
1838
|
-
icp: IcpRubricSchema.optional(),
|
|
1839
|
-
pipelineConfig: PipelineConfigSchema.optional()
|
|
1840
|
-
})
|
|
1869
|
+
export const CreateListRequestSchema = z
|
|
1870
|
+
.object({
|
|
1871
|
+
name: z.string().trim().min(1).max(255),
|
|
1872
|
+
description: z.string().trim().nullable().optional(),
|
|
1873
|
+
status: ListStatusSchema.optional(),
|
|
1874
|
+
buildTemplateId: ProspectingBuildTemplateIdSchema.optional(),
|
|
1875
|
+
scrapingConfig: ScrapingConfigSchema.optional(),
|
|
1876
|
+
icp: IcpRubricSchema.optional(),
|
|
1877
|
+
pipelineConfig: PipelineConfigSchema.optional()
|
|
1878
|
+
})
|
|
1841
1879
|
.strict()
|
|
1842
1880
|
```
|
|
1843
1881
|
|
|
1844
1882
|
### `UpdateListRequestSchema`
|
|
1845
1883
|
|
|
1846
1884
|
```typescript
|
|
1847
|
-
export const UpdateListRequestSchema = z
|
|
1848
|
-
.object({
|
|
1849
|
-
name: z.string().trim().min(1).max(255).optional(),
|
|
1850
|
-
description: z.string().trim().nullable().optional(),
|
|
1851
|
-
batchIds: z.array(z.string()).optional(),
|
|
1852
|
-
buildTemplateId: ProspectingBuildTemplateIdSchema.optional(),
|
|
1853
|
-
confirmBuildTemplateChange: z.literal(true).optional()
|
|
1854
|
-
})
|
|
1855
|
-
.strict()
|
|
1856
|
-
.refine(
|
|
1857
|
-
(data) =>
|
|
1858
|
-
data.name !== undefined ||
|
|
1859
|
-
data.description !== undefined ||
|
|
1860
|
-
data.batchIds !== undefined ||
|
|
1861
|
-
data.buildTemplateId !== undefined,
|
|
1862
|
-
{
|
|
1863
|
-
message: 'At least one field (name, description, batchIds, or buildTemplateId) must be provided'
|
|
1864
|
-
}
|
|
1865
|
-
)
|
|
1866
|
-
.refine((data) => data.buildTemplateId === undefined || data.confirmBuildTemplateChange === true, {
|
|
1867
|
-
message: 'confirmBuildTemplateChange must be true when changing buildTemplateId',
|
|
1868
|
-
path: ['confirmBuildTemplateChange']
|
|
1885
|
+
export const UpdateListRequestSchema = z
|
|
1886
|
+
.object({
|
|
1887
|
+
name: z.string().trim().min(1).max(255).optional(),
|
|
1888
|
+
description: z.string().trim().nullable().optional(),
|
|
1889
|
+
batchIds: z.array(z.string()).optional(),
|
|
1890
|
+
buildTemplateId: ProspectingBuildTemplateIdSchema.optional(),
|
|
1891
|
+
confirmBuildTemplateChange: z.literal(true).optional()
|
|
1892
|
+
})
|
|
1893
|
+
.strict()
|
|
1894
|
+
.refine(
|
|
1895
|
+
(data) =>
|
|
1896
|
+
data.name !== undefined ||
|
|
1897
|
+
data.description !== undefined ||
|
|
1898
|
+
data.batchIds !== undefined ||
|
|
1899
|
+
data.buildTemplateId !== undefined,
|
|
1900
|
+
{
|
|
1901
|
+
message: 'At least one field (name, description, batchIds, or buildTemplateId) must be provided'
|
|
1902
|
+
}
|
|
1903
|
+
)
|
|
1904
|
+
.refine((data) => data.buildTemplateId === undefined || data.confirmBuildTemplateChange === true, {
|
|
1905
|
+
message: 'confirmBuildTemplateChange must be true when changing buildTemplateId',
|
|
1906
|
+
path: ['confirmBuildTemplateChange']
|
|
1869
1907
|
})
|
|
1870
1908
|
```
|
|
1871
1909
|
|
|
1872
1910
|
### `UpdateListConfigRequestSchema`
|
|
1873
1911
|
|
|
1874
1912
|
```typescript
|
|
1875
|
-
/**
|
|
1876
|
-
* Partial patch for the three jsonb config columns. UI sends only the edited
|
|
1877
|
-
* subtree; server writes the field as-is (no deep merge — each column is
|
|
1878
|
-
* replaced atomically when present in the patch).
|
|
1879
|
-
*/
|
|
1880
|
-
export const UpdateListConfigRequestSchema = z
|
|
1881
|
-
.object({
|
|
1882
|
-
scrapingConfig: ScrapingConfigSchema.partial().optional(),
|
|
1883
|
-
icp: IcpRubricSchema.partial().optional(),
|
|
1884
|
-
pipelineConfig: PipelineConfigSchema.partial().optional()
|
|
1885
|
-
})
|
|
1886
|
-
.strict()
|
|
1887
|
-
.refine((data) => data.scrapingConfig !== undefined || data.icp !== undefined || data.pipelineConfig !== undefined, {
|
|
1888
|
-
message: 'At least one of scrapingConfig, icp, or pipelineConfig must be provided'
|
|
1913
|
+
/**
|
|
1914
|
+
* Partial patch for the three jsonb config columns. UI sends only the edited
|
|
1915
|
+
* subtree; server writes the field as-is (no deep merge — each column is
|
|
1916
|
+
* replaced atomically when present in the patch).
|
|
1917
|
+
*/
|
|
1918
|
+
export const UpdateListConfigRequestSchema = z
|
|
1919
|
+
.object({
|
|
1920
|
+
scrapingConfig: ScrapingConfigSchema.partial().optional(),
|
|
1921
|
+
icp: IcpRubricSchema.partial().optional(),
|
|
1922
|
+
pipelineConfig: PipelineConfigSchema.partial().optional()
|
|
1923
|
+
})
|
|
1924
|
+
.strict()
|
|
1925
|
+
.refine((data) => data.scrapingConfig !== undefined || data.icp !== undefined || data.pipelineConfig !== undefined, {
|
|
1926
|
+
message: 'At least one of scrapingConfig, icp, or pipelineConfig must be provided'
|
|
1889
1927
|
})
|
|
1890
1928
|
```
|
|
1891
1929
|
|
|
1892
1930
|
### `AddCompaniesToListRequestSchema`
|
|
1893
1931
|
|
|
1894
1932
|
```typescript
|
|
1895
|
-
export const AddCompaniesToListRequestSchema = z
|
|
1896
|
-
.object({
|
|
1897
|
-
companyIds: z.array(UuidSchema).min(1).max(1000)
|
|
1898
|
-
})
|
|
1933
|
+
export const AddCompaniesToListRequestSchema = z
|
|
1934
|
+
.object({
|
|
1935
|
+
companyIds: z.array(UuidSchema).min(1).max(1000)
|
|
1936
|
+
})
|
|
1899
1937
|
.strict()
|
|
1900
1938
|
```
|
|
1901
1939
|
|
|
1902
1940
|
### `RemoveCompaniesFromListRequestSchema`
|
|
1903
1941
|
|
|
1904
1942
|
```typescript
|
|
1905
|
-
export const RemoveCompaniesFromListRequestSchema = z
|
|
1906
|
-
.object({
|
|
1907
|
-
companyIds: z.array(UuidSchema).min(1).max(1000)
|
|
1908
|
-
})
|
|
1943
|
+
export const RemoveCompaniesFromListRequestSchema = z
|
|
1944
|
+
.object({
|
|
1945
|
+
companyIds: z.array(UuidSchema).min(1).max(1000)
|
|
1946
|
+
})
|
|
1909
1947
|
.strict()
|
|
1910
1948
|
```
|
|
1911
1949
|
|
|
1912
1950
|
### `AddContactsToListRequestSchema`
|
|
1913
1951
|
|
|
1914
1952
|
```typescript
|
|
1915
|
-
export const AddContactsToListRequestSchema = z
|
|
1916
|
-
.object({
|
|
1917
|
-
contactIds: z.array(UuidSchema).min(1).max(1000)
|
|
1918
|
-
})
|
|
1953
|
+
export const AddContactsToListRequestSchema = z
|
|
1954
|
+
.object({
|
|
1955
|
+
contactIds: z.array(UuidSchema).min(1).max(1000)
|
|
1956
|
+
})
|
|
1919
1957
|
.strict()
|
|
1920
1958
|
```
|
|
1921
1959
|
|
|
1922
1960
|
### `RecordListExecutionRequestSchema`
|
|
1923
1961
|
|
|
1924
1962
|
```typescript
|
|
1925
|
-
export const RecordListExecutionRequestSchema = z
|
|
1926
|
-
.object({
|
|
1927
|
-
executionId: UuidSchema,
|
|
1928
|
-
configSnapshot: z.record(z.string(), z.unknown()).optional()
|
|
1929
|
-
})
|
|
1963
|
+
export const RecordListExecutionRequestSchema = z
|
|
1964
|
+
.object({
|
|
1965
|
+
executionId: UuidSchema,
|
|
1966
|
+
configSnapshot: z.record(z.string(), z.unknown()).optional()
|
|
1967
|
+
})
|
|
1930
1968
|
.strict()
|
|
1931
1969
|
```
|
|
1932
1970
|
|
|
1933
1971
|
### `AcqListResponseSchema`
|
|
1934
1972
|
|
|
1935
1973
|
```typescript
|
|
1936
|
-
/**
|
|
1937
|
-
* Single list as returned by /api/acquisition/lists/:id etc.
|
|
1938
|
-
* Camel-cased domain shape matching AcqList in types.ts.
|
|
1939
|
-
*/
|
|
1940
|
-
export const AcqListResponseSchema = z.object({
|
|
1941
|
-
id: z.string(),
|
|
1942
|
-
organizationId: z.string(),
|
|
1943
|
-
name: z.string(),
|
|
1944
|
-
description: z.string().nullable(),
|
|
1945
|
-
batchIds: z.array(z.string()),
|
|
1946
|
-
instantlyCampaignId: z.string().nullable(),
|
|
1947
|
-
/** Lifecycle status (draft | enriching | launched | closing | archived). */
|
|
1948
|
-
status: ListStatusSchema,
|
|
1949
|
-
metadata: AcqListMetadataSchema,
|
|
1950
|
-
launchedAt: z.string().nullable(),
|
|
1951
|
-
completedAt: z.string().nullable(),
|
|
1952
|
-
createdAt: z.string(),
|
|
1953
|
-
/** Scraping criteria stored as jsonb on the row. */
|
|
1954
|
-
scrapingConfig: ScrapingConfigSchema,
|
|
1955
|
-
/** ICP / qualification rubric stored as jsonb on the row. */
|
|
1956
|
-
icp: IcpRubricSchema,
|
|
1957
|
-
/** Pipeline presentation contract stored as jsonb on the row. */
|
|
1958
|
-
pipelineConfig: PipelineConfigSchema
|
|
1974
|
+
/**
|
|
1975
|
+
* Single list as returned by /api/acquisition/lists/:id etc.
|
|
1976
|
+
* Camel-cased domain shape matching AcqList in types.ts.
|
|
1977
|
+
*/
|
|
1978
|
+
export const AcqListResponseSchema = z.object({
|
|
1979
|
+
id: z.string(),
|
|
1980
|
+
organizationId: z.string(),
|
|
1981
|
+
name: z.string(),
|
|
1982
|
+
description: z.string().nullable(),
|
|
1983
|
+
batchIds: z.array(z.string()),
|
|
1984
|
+
instantlyCampaignId: z.string().nullable(),
|
|
1985
|
+
/** Lifecycle status (draft | enriching | launched | closing | archived). */
|
|
1986
|
+
status: ListStatusSchema,
|
|
1987
|
+
metadata: AcqListMetadataSchema,
|
|
1988
|
+
launchedAt: z.string().nullable(),
|
|
1989
|
+
completedAt: z.string().nullable(),
|
|
1990
|
+
createdAt: z.string(),
|
|
1991
|
+
/** Scraping criteria stored as jsonb on the row. */
|
|
1992
|
+
scrapingConfig: ScrapingConfigSchema,
|
|
1993
|
+
/** ICP / qualification rubric stored as jsonb on the row. */
|
|
1994
|
+
icp: IcpRubricSchema,
|
|
1995
|
+
/** Pipeline presentation contract stored as jsonb on the row. */
|
|
1996
|
+
pipelineConfig: PipelineConfigSchema
|
|
1959
1997
|
})
|
|
1960
1998
|
```
|
|
1961
1999
|
|
|
@@ -1980,17 +2018,18 @@ export const ListTelemetryListResponseSchema = z.array(ListTelemetrySchema)
|
|
|
1980
2018
|
### `ListExecutionSummarySchema`
|
|
1981
2019
|
|
|
1982
2020
|
```typescript
|
|
1983
|
-
/**
|
|
1984
|
-
* Row from acq_list_executions joined with the execution summary,
|
|
1985
|
-
* shaped for the /lists/:id/executions response.
|
|
1986
|
-
*/
|
|
1987
|
-
export const ListExecutionSummarySchema = z.object({
|
|
1988
|
-
executionId: z.string(),
|
|
1989
|
-
resourceId: z.string(),
|
|
1990
|
-
status: z.string(),
|
|
1991
|
-
createdAt: z.string(),
|
|
1992
|
-
completedAt: z.string().nullable(),
|
|
1993
|
-
durationMs: z.number().int().nullable()
|
|
2021
|
+
/**
|
|
2022
|
+
* Row from acq_list_executions joined with the execution summary,
|
|
2023
|
+
* shaped for the /lists/:id/executions response.
|
|
2024
|
+
*/
|
|
2025
|
+
export const ListExecutionSummarySchema = z.object({
|
|
2026
|
+
executionId: z.string(),
|
|
2027
|
+
resourceId: z.string(),
|
|
2028
|
+
status: z.string(),
|
|
2029
|
+
createdAt: z.string(),
|
|
2030
|
+
completedAt: z.string().nullable(),
|
|
2031
|
+
durationMs: z.number().int().nullable(),
|
|
2032
|
+
input: z.unknown().nullable().optional()
|
|
1994
2033
|
})
|
|
1995
2034
|
```
|
|
1996
2035
|
|
|
@@ -2021,282 +2060,282 @@ export const AcqEmailValidSchema = z.enum(['VALID', 'INVALID', 'RISKY', 'UNKNOWN
|
|
|
2021
2060
|
### `CompanyIdParamsSchema`
|
|
2022
2061
|
|
|
2023
2062
|
```typescript
|
|
2024
|
-
export const CompanyIdParamsSchema = z.object({
|
|
2025
|
-
companyId: UuidSchema
|
|
2063
|
+
export const CompanyIdParamsSchema = z.object({
|
|
2064
|
+
companyId: UuidSchema
|
|
2026
2065
|
})
|
|
2027
2066
|
```
|
|
2028
2067
|
|
|
2029
2068
|
### `ContactIdParamsSchema`
|
|
2030
2069
|
|
|
2031
2070
|
```typescript
|
|
2032
|
-
export const ContactIdParamsSchema = z.object({
|
|
2033
|
-
contactId: UuidSchema
|
|
2071
|
+
export const ContactIdParamsSchema = z.object({
|
|
2072
|
+
contactId: UuidSchema
|
|
2034
2073
|
})
|
|
2035
2074
|
```
|
|
2036
2075
|
|
|
2037
2076
|
### `ListCompaniesQuerySchema`
|
|
2038
2077
|
|
|
2039
2078
|
```typescript
|
|
2040
|
-
export const ListCompaniesQuerySchema = z
|
|
2041
|
-
.object({
|
|
2042
|
-
search: z.string().trim().min(1).max(200).optional(),
|
|
2043
|
-
listId: UuidSchema.optional(),
|
|
2044
|
-
domain: z.string().trim().min(1).max(255).optional(),
|
|
2045
|
-
website: z.string().trim().min(1).max(2048).optional(),
|
|
2046
|
-
segment: z.string().trim().min(1).max(255).optional(),
|
|
2047
|
-
category: z.string().trim().min(1).max(255).optional(),
|
|
2048
|
-
batchId: z.string().trim().min(1).max(255).optional(),
|
|
2049
|
-
status: AcqCompanyStatusSchema.optional(),
|
|
2050
|
-
includeAll: QueryBooleanSchema.optional(),
|
|
2051
|
-
limit: z.coerce.number().int().min(1).max(5000).default(50),
|
|
2052
|
-
offset: z.coerce.number().int().min(0).default(0)
|
|
2053
|
-
})
|
|
2079
|
+
export const ListCompaniesQuerySchema = z
|
|
2080
|
+
.object({
|
|
2081
|
+
search: z.string().trim().min(1).max(200).optional(),
|
|
2082
|
+
listId: UuidSchema.optional(),
|
|
2083
|
+
domain: z.string().trim().min(1).max(255).optional(),
|
|
2084
|
+
website: z.string().trim().min(1).max(2048).optional(),
|
|
2085
|
+
segment: z.string().trim().min(1).max(255).optional(),
|
|
2086
|
+
category: z.string().trim().min(1).max(255).optional(),
|
|
2087
|
+
batchId: z.string().trim().min(1).max(255).optional(),
|
|
2088
|
+
status: AcqCompanyStatusSchema.optional(),
|
|
2089
|
+
includeAll: QueryBooleanSchema.optional(),
|
|
2090
|
+
limit: z.coerce.number().int().min(1).max(5000).default(50),
|
|
2091
|
+
offset: z.coerce.number().int().min(0).default(0)
|
|
2092
|
+
})
|
|
2054
2093
|
.strict()
|
|
2055
2094
|
```
|
|
2056
2095
|
|
|
2057
2096
|
### `ListContactsQuerySchema`
|
|
2058
2097
|
|
|
2059
2098
|
```typescript
|
|
2060
|
-
export const ListContactsQuerySchema = z
|
|
2061
|
-
.object({
|
|
2062
|
-
search: z.string().trim().min(1).max(200).optional(),
|
|
2063
|
-
listId: UuidSchema.optional(),
|
|
2064
|
-
openingLineIsNull: QueryBooleanSchema.optional(),
|
|
2065
|
-
batchId: z.string().trim().min(1).max(255).optional(),
|
|
2066
|
-
contactStatus: AcqContactStatusSchema.optional(),
|
|
2067
|
-
limit: z.coerce.number().int().min(1).max(5000).default(5000),
|
|
2068
|
-
offset: z.coerce.number().int().min(0).default(0)
|
|
2069
|
-
})
|
|
2099
|
+
export const ListContactsQuerySchema = z
|
|
2100
|
+
.object({
|
|
2101
|
+
search: z.string().trim().min(1).max(200).optional(),
|
|
2102
|
+
listId: UuidSchema.optional(),
|
|
2103
|
+
openingLineIsNull: QueryBooleanSchema.optional(),
|
|
2104
|
+
batchId: z.string().trim().min(1).max(255).optional(),
|
|
2105
|
+
contactStatus: AcqContactStatusSchema.optional(),
|
|
2106
|
+
limit: z.coerce.number().int().min(1).max(5000).default(5000),
|
|
2107
|
+
offset: z.coerce.number().int().min(0).default(0)
|
|
2108
|
+
})
|
|
2070
2109
|
.strict()
|
|
2071
2110
|
```
|
|
2072
2111
|
|
|
2073
2112
|
### `CreateCompanyRequestSchema`
|
|
2074
2113
|
|
|
2075
2114
|
```typescript
|
|
2076
|
-
export const CreateCompanyRequestSchema = z
|
|
2077
|
-
.object({
|
|
2078
|
-
name: z.string().trim().min(1).max(255),
|
|
2079
|
-
domain: z.string().trim().min(1).max(255).optional(),
|
|
2080
|
-
linkedinUrl: z.string().trim().url().optional(),
|
|
2081
|
-
website: z.string().trim().url().optional(),
|
|
2082
|
-
numEmployees: z.number().int().min(0).optional(),
|
|
2083
|
-
foundedYear: z.number().int().optional(),
|
|
2084
|
-
locationCity: z.string().trim().min(1).max(255).optional(),
|
|
2085
|
-
locationState: z.string().trim().min(1).max(255).optional(),
|
|
2086
|
-
category: z.string().trim().min(1).max(255).optional(),
|
|
2087
|
-
source: z.string().trim().min(1).max(255).optional(),
|
|
2088
|
-
batchId: z.string().trim().min(1).max(255).optional(),
|
|
2089
|
-
verticalResearch: z.string().trim().min(1).max(5000).optional()
|
|
2090
|
-
})
|
|
2115
|
+
export const CreateCompanyRequestSchema = z
|
|
2116
|
+
.object({
|
|
2117
|
+
name: z.string().trim().min(1).max(255),
|
|
2118
|
+
domain: z.string().trim().min(1).max(255).optional(),
|
|
2119
|
+
linkedinUrl: z.string().trim().url().optional(),
|
|
2120
|
+
website: z.string().trim().url().optional(),
|
|
2121
|
+
numEmployees: z.number().int().min(0).optional(),
|
|
2122
|
+
foundedYear: z.number().int().optional(),
|
|
2123
|
+
locationCity: z.string().trim().min(1).max(255).optional(),
|
|
2124
|
+
locationState: z.string().trim().min(1).max(255).optional(),
|
|
2125
|
+
category: z.string().trim().min(1).max(255).optional(),
|
|
2126
|
+
source: z.string().trim().min(1).max(255).optional(),
|
|
2127
|
+
batchId: z.string().trim().min(1).max(255).optional(),
|
|
2128
|
+
verticalResearch: z.string().trim().min(1).max(5000).optional()
|
|
2129
|
+
})
|
|
2091
2130
|
.strict()
|
|
2092
2131
|
```
|
|
2093
2132
|
|
|
2094
2133
|
### `UpdateCompanyRequestSchema`
|
|
2095
2134
|
|
|
2096
2135
|
```typescript
|
|
2097
|
-
export const UpdateCompanyRequestSchema = z
|
|
2098
|
-
.object({
|
|
2099
|
-
name: z.string().trim().min(1).max(255).optional(),
|
|
2100
|
-
domain: z.string().trim().min(1).max(255).optional(),
|
|
2101
|
-
linkedinUrl: z.string().trim().url().optional(),
|
|
2102
|
-
website: z.string().trim().url().optional(),
|
|
2103
|
-
numEmployees: z.number().int().min(0).optional(),
|
|
2104
|
-
foundedYear: z.number().int().optional(),
|
|
2105
|
-
locationCity: z.string().trim().min(1).max(255).optional(),
|
|
2106
|
-
locationState: z.string().trim().min(1).max(255).optional(),
|
|
2107
|
-
category: z.string().trim().min(1).max(255).optional(),
|
|
2108
|
-
segment: z.string().trim().min(1).max(255).optional(),
|
|
2109
|
-
pipelineStatus: z.record(z.string(), z.unknown()).optional(),
|
|
2110
|
-
enrichmentData: z.record(z.string(), z.unknown()).optional(),
|
|
2111
|
-
source: z.string().trim().min(1).max(255).optional(),
|
|
2112
|
-
batchId: z.string().trim().min(1).max(255).optional(),
|
|
2113
|
-
status: AcqCompanyStatusSchema.optional(),
|
|
2114
|
-
verticalResearch: z.string().trim().min(1).max(5000).nullable().optional()
|
|
2115
|
-
})
|
|
2116
|
-
.strict()
|
|
2117
|
-
.refine(
|
|
2118
|
-
(data) =>
|
|
2119
|
-
data.name !== undefined ||
|
|
2120
|
-
data.domain !== undefined ||
|
|
2121
|
-
data.linkedinUrl !== undefined ||
|
|
2122
|
-
data.website !== undefined ||
|
|
2123
|
-
data.numEmployees !== undefined ||
|
|
2124
|
-
data.foundedYear !== undefined ||
|
|
2125
|
-
data.locationCity !== undefined ||
|
|
2126
|
-
data.locationState !== undefined ||
|
|
2127
|
-
data.category !== undefined ||
|
|
2128
|
-
data.segment !== undefined ||
|
|
2129
|
-
data.pipelineStatus !== undefined ||
|
|
2130
|
-
data.enrichmentData !== undefined ||
|
|
2131
|
-
data.source !== undefined ||
|
|
2132
|
-
data.batchId !== undefined ||
|
|
2133
|
-
data.status !== undefined ||
|
|
2134
|
-
data.verticalResearch !== undefined,
|
|
2135
|
-
{
|
|
2136
|
-
message: 'At least one field must be provided'
|
|
2137
|
-
}
|
|
2136
|
+
export const UpdateCompanyRequestSchema = z
|
|
2137
|
+
.object({
|
|
2138
|
+
name: z.string().trim().min(1).max(255).optional(),
|
|
2139
|
+
domain: z.string().trim().min(1).max(255).optional(),
|
|
2140
|
+
linkedinUrl: z.string().trim().url().optional(),
|
|
2141
|
+
website: z.string().trim().url().optional(),
|
|
2142
|
+
numEmployees: z.number().int().min(0).optional(),
|
|
2143
|
+
foundedYear: z.number().int().optional(),
|
|
2144
|
+
locationCity: z.string().trim().min(1).max(255).optional(),
|
|
2145
|
+
locationState: z.string().trim().min(1).max(255).optional(),
|
|
2146
|
+
category: z.string().trim().min(1).max(255).optional(),
|
|
2147
|
+
segment: z.string().trim().min(1).max(255).optional(),
|
|
2148
|
+
pipelineStatus: z.record(z.string(), z.unknown()).optional(),
|
|
2149
|
+
enrichmentData: z.record(z.string(), z.unknown()).optional(),
|
|
2150
|
+
source: z.string().trim().min(1).max(255).optional(),
|
|
2151
|
+
batchId: z.string().trim().min(1).max(255).optional(),
|
|
2152
|
+
status: AcqCompanyStatusSchema.optional(),
|
|
2153
|
+
verticalResearch: z.string().trim().min(1).max(5000).nullable().optional()
|
|
2154
|
+
})
|
|
2155
|
+
.strict()
|
|
2156
|
+
.refine(
|
|
2157
|
+
(data) =>
|
|
2158
|
+
data.name !== undefined ||
|
|
2159
|
+
data.domain !== undefined ||
|
|
2160
|
+
data.linkedinUrl !== undefined ||
|
|
2161
|
+
data.website !== undefined ||
|
|
2162
|
+
data.numEmployees !== undefined ||
|
|
2163
|
+
data.foundedYear !== undefined ||
|
|
2164
|
+
data.locationCity !== undefined ||
|
|
2165
|
+
data.locationState !== undefined ||
|
|
2166
|
+
data.category !== undefined ||
|
|
2167
|
+
data.segment !== undefined ||
|
|
2168
|
+
data.pipelineStatus !== undefined ||
|
|
2169
|
+
data.enrichmentData !== undefined ||
|
|
2170
|
+
data.source !== undefined ||
|
|
2171
|
+
data.batchId !== undefined ||
|
|
2172
|
+
data.status !== undefined ||
|
|
2173
|
+
data.verticalResearch !== undefined,
|
|
2174
|
+
{
|
|
2175
|
+
message: 'At least one field must be provided'
|
|
2176
|
+
}
|
|
2138
2177
|
)
|
|
2139
2178
|
```
|
|
2140
2179
|
|
|
2141
2180
|
### `CreateContactRequestSchema`
|
|
2142
2181
|
|
|
2143
2182
|
```typescript
|
|
2144
|
-
export const CreateContactRequestSchema = z
|
|
2145
|
-
.object({
|
|
2146
|
-
email: z.string().trim().email(),
|
|
2147
|
-
companyId: UuidSchema.optional(),
|
|
2148
|
-
firstName: z.string().trim().min(1).max(255).optional(),
|
|
2149
|
-
lastName: z.string().trim().min(1).max(255).optional(),
|
|
2150
|
-
linkedinUrl: z.string().trim().url().optional(),
|
|
2151
|
-
title: z.string().trim().min(1).max(255).optional(),
|
|
2152
|
-
source: z.string().trim().min(1).max(255).optional(),
|
|
2153
|
-
sourceId: z.string().trim().min(1).max(255).optional(),
|
|
2154
|
-
batchId: z.string().trim().min(1).max(255).optional()
|
|
2155
|
-
})
|
|
2183
|
+
export const CreateContactRequestSchema = z
|
|
2184
|
+
.object({
|
|
2185
|
+
email: z.string().trim().email(),
|
|
2186
|
+
companyId: UuidSchema.optional(),
|
|
2187
|
+
firstName: z.string().trim().min(1).max(255).optional(),
|
|
2188
|
+
lastName: z.string().trim().min(1).max(255).optional(),
|
|
2189
|
+
linkedinUrl: z.string().trim().url().optional(),
|
|
2190
|
+
title: z.string().trim().min(1).max(255).optional(),
|
|
2191
|
+
source: z.string().trim().min(1).max(255).optional(),
|
|
2192
|
+
sourceId: z.string().trim().min(1).max(255).optional(),
|
|
2193
|
+
batchId: z.string().trim().min(1).max(255).optional()
|
|
2194
|
+
})
|
|
2156
2195
|
.strict()
|
|
2157
2196
|
```
|
|
2158
2197
|
|
|
2159
2198
|
### `UpdateContactRequestSchema`
|
|
2160
2199
|
|
|
2161
2200
|
```typescript
|
|
2162
|
-
export const UpdateContactRequestSchema = z
|
|
2163
|
-
.object({
|
|
2164
|
-
companyId: UuidSchema.optional(),
|
|
2165
|
-
emailValid: AcqEmailValidSchema.optional(),
|
|
2166
|
-
firstName: z.string().trim().min(1).max(255).optional(),
|
|
2167
|
-
lastName: z.string().trim().min(1).max(255).optional(),
|
|
2168
|
-
linkedinUrl: z.string().trim().url().optional(),
|
|
2169
|
-
title: z.string().trim().min(1).max(255).optional(),
|
|
2170
|
-
headline: z.string().trim().min(1).max(5000).optional(),
|
|
2171
|
-
filterReason: z.string().trim().min(1).max(5000).optional(),
|
|
2172
|
-
openingLine: z.string().trim().min(1).max(5000).optional(),
|
|
2173
|
-
pipelineStatus: z.record(z.string(), z.unknown()).optional(),
|
|
2174
|
-
enrichmentData: z.record(z.string(), z.unknown()).optional(),
|
|
2175
|
-
status: AcqContactStatusSchema.optional()
|
|
2176
|
-
})
|
|
2177
|
-
.strict()
|
|
2178
|
-
.refine(
|
|
2179
|
-
(data) =>
|
|
2180
|
-
data.companyId !== undefined ||
|
|
2181
|
-
data.emailValid !== undefined ||
|
|
2182
|
-
data.firstName !== undefined ||
|
|
2183
|
-
data.lastName !== undefined ||
|
|
2184
|
-
data.linkedinUrl !== undefined ||
|
|
2185
|
-
data.title !== undefined ||
|
|
2186
|
-
data.headline !== undefined ||
|
|
2187
|
-
data.filterReason !== undefined ||
|
|
2188
|
-
data.openingLine !== undefined ||
|
|
2189
|
-
data.pipelineStatus !== undefined ||
|
|
2190
|
-
data.enrichmentData !== undefined ||
|
|
2191
|
-
data.status !== undefined,
|
|
2192
|
-
{
|
|
2193
|
-
message: 'At least one field must be provided'
|
|
2194
|
-
}
|
|
2201
|
+
export const UpdateContactRequestSchema = z
|
|
2202
|
+
.object({
|
|
2203
|
+
companyId: UuidSchema.optional(),
|
|
2204
|
+
emailValid: AcqEmailValidSchema.optional(),
|
|
2205
|
+
firstName: z.string().trim().min(1).max(255).optional(),
|
|
2206
|
+
lastName: z.string().trim().min(1).max(255).optional(),
|
|
2207
|
+
linkedinUrl: z.string().trim().url().optional(),
|
|
2208
|
+
title: z.string().trim().min(1).max(255).optional(),
|
|
2209
|
+
headline: z.string().trim().min(1).max(5000).optional(),
|
|
2210
|
+
filterReason: z.string().trim().min(1).max(5000).optional(),
|
|
2211
|
+
openingLine: z.string().trim().min(1).max(5000).optional(),
|
|
2212
|
+
pipelineStatus: z.record(z.string(), z.unknown()).optional(),
|
|
2213
|
+
enrichmentData: z.record(z.string(), z.unknown()).optional(),
|
|
2214
|
+
status: AcqContactStatusSchema.optional()
|
|
2215
|
+
})
|
|
2216
|
+
.strict()
|
|
2217
|
+
.refine(
|
|
2218
|
+
(data) =>
|
|
2219
|
+
data.companyId !== undefined ||
|
|
2220
|
+
data.emailValid !== undefined ||
|
|
2221
|
+
data.firstName !== undefined ||
|
|
2222
|
+
data.lastName !== undefined ||
|
|
2223
|
+
data.linkedinUrl !== undefined ||
|
|
2224
|
+
data.title !== undefined ||
|
|
2225
|
+
data.headline !== undefined ||
|
|
2226
|
+
data.filterReason !== undefined ||
|
|
2227
|
+
data.openingLine !== undefined ||
|
|
2228
|
+
data.pipelineStatus !== undefined ||
|
|
2229
|
+
data.enrichmentData !== undefined ||
|
|
2230
|
+
data.status !== undefined,
|
|
2231
|
+
{
|
|
2232
|
+
message: 'At least one field must be provided'
|
|
2233
|
+
}
|
|
2195
2234
|
)
|
|
2196
2235
|
```
|
|
2197
2236
|
|
|
2198
2237
|
### `AcqCompanyResponseSchema`
|
|
2199
2238
|
|
|
2200
2239
|
```typescript
|
|
2201
|
-
export const AcqCompanyResponseSchema = z.object({
|
|
2202
|
-
id: z.string(),
|
|
2203
|
-
organizationId: z.string(),
|
|
2204
|
-
name: z.string(),
|
|
2205
|
-
domain: z.string().nullable(),
|
|
2206
|
-
linkedinUrl: z.string().nullable(),
|
|
2207
|
-
website: z.string().nullable(),
|
|
2208
|
-
numEmployees: z.number().nullable(),
|
|
2209
|
-
foundedYear: z.number().nullable(),
|
|
2210
|
-
locationCity: z.string().nullable(),
|
|
2211
|
-
locationState: z.string().nullable(),
|
|
2212
|
-
category: z.string().nullable(),
|
|
2213
|
-
categoryPain: z.string().nullable(),
|
|
2214
|
-
segment: z.string().nullable(),
|
|
2215
|
-
pipelineStatus: z.record(z.string(), z.unknown()).nullable(),
|
|
2216
|
-
enrichmentData: z.record(z.string(), z.unknown()).nullable(),
|
|
2217
|
-
source: z.string().nullable(),
|
|
2218
|
-
batchId: z.string().nullable(),
|
|
2219
|
-
status: AcqCompanyStatusSchema,
|
|
2220
|
-
contactCount: z.number().int().min(0),
|
|
2221
|
-
verticalResearch: z.string().nullable(),
|
|
2222
|
-
createdAt: z.string(),
|
|
2223
|
-
updatedAt: z.string()
|
|
2240
|
+
export const AcqCompanyResponseSchema = z.object({
|
|
2241
|
+
id: z.string(),
|
|
2242
|
+
organizationId: z.string(),
|
|
2243
|
+
name: z.string(),
|
|
2244
|
+
domain: z.string().nullable(),
|
|
2245
|
+
linkedinUrl: z.string().nullable(),
|
|
2246
|
+
website: z.string().nullable(),
|
|
2247
|
+
numEmployees: z.number().nullable(),
|
|
2248
|
+
foundedYear: z.number().nullable(),
|
|
2249
|
+
locationCity: z.string().nullable(),
|
|
2250
|
+
locationState: z.string().nullable(),
|
|
2251
|
+
category: z.string().nullable(),
|
|
2252
|
+
categoryPain: z.string().nullable(),
|
|
2253
|
+
segment: z.string().nullable(),
|
|
2254
|
+
pipelineStatus: z.record(z.string(), z.unknown()).nullable(),
|
|
2255
|
+
enrichmentData: z.record(z.string(), z.unknown()).nullable(),
|
|
2256
|
+
source: z.string().nullable(),
|
|
2257
|
+
batchId: z.string().nullable(),
|
|
2258
|
+
status: AcqCompanyStatusSchema,
|
|
2259
|
+
contactCount: z.number().int().min(0),
|
|
2260
|
+
verticalResearch: z.string().nullable(),
|
|
2261
|
+
createdAt: z.string(),
|
|
2262
|
+
updatedAt: z.string()
|
|
2224
2263
|
})
|
|
2225
2264
|
```
|
|
2226
2265
|
|
|
2227
2266
|
### `AcqCompanyListResponseSchema`
|
|
2228
2267
|
|
|
2229
2268
|
```typescript
|
|
2230
|
-
export const AcqCompanyListResponseSchema = z.object({
|
|
2231
|
-
data: z.array(AcqCompanyResponseSchema),
|
|
2232
|
-
total: z.number().int(),
|
|
2233
|
-
limit: z.number().int(),
|
|
2234
|
-
offset: z.number().int()
|
|
2269
|
+
export const AcqCompanyListResponseSchema = z.object({
|
|
2270
|
+
data: z.array(AcqCompanyResponseSchema),
|
|
2271
|
+
total: z.number().int(),
|
|
2272
|
+
limit: z.number().int(),
|
|
2273
|
+
offset: z.number().int()
|
|
2235
2274
|
})
|
|
2236
2275
|
```
|
|
2237
2276
|
|
|
2238
2277
|
### `AcqCompanyFacetsResponseSchema`
|
|
2239
2278
|
|
|
2240
2279
|
```typescript
|
|
2241
|
-
export const AcqCompanyFacetsResponseSchema = z.object({
|
|
2242
|
-
segments: z.array(z.string()),
|
|
2243
|
-
categories: z.array(z.string()),
|
|
2244
|
-
statuses: z.array(AcqCompanyStatusSchema)
|
|
2280
|
+
export const AcqCompanyFacetsResponseSchema = z.object({
|
|
2281
|
+
segments: z.array(z.string()),
|
|
2282
|
+
categories: z.array(z.string()),
|
|
2283
|
+
statuses: z.array(AcqCompanyStatusSchema)
|
|
2245
2284
|
})
|
|
2246
2285
|
```
|
|
2247
2286
|
|
|
2248
2287
|
### `AcqContactCompanySummarySchema`
|
|
2249
2288
|
|
|
2250
2289
|
```typescript
|
|
2251
|
-
export const AcqContactCompanySummarySchema = z.object({
|
|
2252
|
-
id: z.string(),
|
|
2253
|
-
name: z.string(),
|
|
2254
|
-
domain: z.string().nullable(),
|
|
2255
|
-
website: z.string().nullable(),
|
|
2256
|
-
linkedinUrl: z.string().nullable(),
|
|
2257
|
-
segment: z.string().nullable(),
|
|
2258
|
-
category: z.string().nullable(),
|
|
2259
|
-
status: AcqCompanyStatusSchema
|
|
2290
|
+
export const AcqContactCompanySummarySchema = z.object({
|
|
2291
|
+
id: z.string(),
|
|
2292
|
+
name: z.string(),
|
|
2293
|
+
domain: z.string().nullable(),
|
|
2294
|
+
website: z.string().nullable(),
|
|
2295
|
+
linkedinUrl: z.string().nullable(),
|
|
2296
|
+
segment: z.string().nullable(),
|
|
2297
|
+
category: z.string().nullable(),
|
|
2298
|
+
status: AcqCompanyStatusSchema
|
|
2260
2299
|
})
|
|
2261
2300
|
```
|
|
2262
2301
|
|
|
2263
2302
|
### `AcqContactResponseSchema`
|
|
2264
2303
|
|
|
2265
2304
|
```typescript
|
|
2266
|
-
export const AcqContactResponseSchema = z.object({
|
|
2267
|
-
id: z.string(),
|
|
2268
|
-
organizationId: z.string(),
|
|
2269
|
-
companyId: z.string().nullable(),
|
|
2270
|
-
email: z.string(),
|
|
2271
|
-
emailValid: AcqEmailValidSchema.nullable(),
|
|
2272
|
-
firstName: z.string().nullable(),
|
|
2273
|
-
lastName: z.string().nullable(),
|
|
2274
|
-
linkedinUrl: z.string().nullable(),
|
|
2275
|
-
title: z.string().nullable(),
|
|
2276
|
-
headline: z.string().nullable(),
|
|
2277
|
-
filterReason: z.string().nullable(),
|
|
2278
|
-
openingLine: z.string().nullable(),
|
|
2279
|
-
source: z.string().nullable(),
|
|
2280
|
-
sourceId: z.string().nullable(),
|
|
2281
|
-
pipelineStatus: z.record(z.string(), z.unknown()).nullable(),
|
|
2282
|
-
enrichmentData: z.record(z.string(), z.unknown()).nullable(),
|
|
2283
|
-
attioPersonId: z.string().nullable(),
|
|
2284
|
-
batchId: z.string().nullable(),
|
|
2285
|
-
status: AcqContactStatusSchema,
|
|
2286
|
-
company: AcqContactCompanySummarySchema.nullable().optional(),
|
|
2287
|
-
createdAt: z.string(),
|
|
2288
|
-
updatedAt: z.string()
|
|
2305
|
+
export const AcqContactResponseSchema = z.object({
|
|
2306
|
+
id: z.string(),
|
|
2307
|
+
organizationId: z.string(),
|
|
2308
|
+
companyId: z.string().nullable(),
|
|
2309
|
+
email: z.string(),
|
|
2310
|
+
emailValid: AcqEmailValidSchema.nullable(),
|
|
2311
|
+
firstName: z.string().nullable(),
|
|
2312
|
+
lastName: z.string().nullable(),
|
|
2313
|
+
linkedinUrl: z.string().nullable(),
|
|
2314
|
+
title: z.string().nullable(),
|
|
2315
|
+
headline: z.string().nullable(),
|
|
2316
|
+
filterReason: z.string().nullable(),
|
|
2317
|
+
openingLine: z.string().nullable(),
|
|
2318
|
+
source: z.string().nullable(),
|
|
2319
|
+
sourceId: z.string().nullable(),
|
|
2320
|
+
pipelineStatus: z.record(z.string(), z.unknown()).nullable(),
|
|
2321
|
+
enrichmentData: z.record(z.string(), z.unknown()).nullable(),
|
|
2322
|
+
attioPersonId: z.string().nullable(),
|
|
2323
|
+
batchId: z.string().nullable(),
|
|
2324
|
+
status: AcqContactStatusSchema,
|
|
2325
|
+
company: AcqContactCompanySummarySchema.nullable().optional(),
|
|
2326
|
+
createdAt: z.string(),
|
|
2327
|
+
updatedAt: z.string()
|
|
2289
2328
|
})
|
|
2290
2329
|
```
|
|
2291
2330
|
|
|
2292
2331
|
### `AcqContactListResponseSchema`
|
|
2293
2332
|
|
|
2294
2333
|
```typescript
|
|
2295
|
-
export const AcqContactListResponseSchema = z.object({
|
|
2296
|
-
data: z.array(AcqContactResponseSchema),
|
|
2297
|
-
total: z.number().int(),
|
|
2298
|
-
limit: z.number().int(),
|
|
2299
|
-
offset: z.number().int()
|
|
2334
|
+
export const AcqContactListResponseSchema = z.object({
|
|
2335
|
+
data: z.array(AcqContactResponseSchema),
|
|
2336
|
+
total: z.number().int(),
|
|
2337
|
+
limit: z.number().int(),
|
|
2338
|
+
offset: z.number().int()
|
|
2300
2339
|
})
|
|
2301
2340
|
```
|
|
2302
2341
|
|
|
@@ -2309,226 +2348,226 @@ export const AcqArtifactOwnerKindSchema = z.enum(['company', 'contact', 'deal',
|
|
|
2309
2348
|
### `ListArtifactsQuerySchema`
|
|
2310
2349
|
|
|
2311
2350
|
```typescript
|
|
2312
|
-
export const ListArtifactsQuerySchema = z
|
|
2313
|
-
.object({
|
|
2314
|
-
ownerKind: AcqArtifactOwnerKindSchema,
|
|
2315
|
-
ownerId: UuidSchema
|
|
2316
|
-
})
|
|
2351
|
+
export const ListArtifactsQuerySchema = z
|
|
2352
|
+
.object({
|
|
2353
|
+
ownerKind: AcqArtifactOwnerKindSchema,
|
|
2354
|
+
ownerId: UuidSchema
|
|
2355
|
+
})
|
|
2317
2356
|
.strict()
|
|
2318
2357
|
```
|
|
2319
2358
|
|
|
2320
2359
|
### `CreateArtifactRequestSchema`
|
|
2321
2360
|
|
|
2322
2361
|
```typescript
|
|
2323
|
-
export const CreateArtifactRequestSchema = z
|
|
2324
|
-
.object({
|
|
2325
|
-
ownerKind: AcqArtifactOwnerKindSchema,
|
|
2326
|
-
ownerId: UuidSchema,
|
|
2327
|
-
kind: z.string().trim().min(1).max(255),
|
|
2328
|
-
content: z.record(z.string(), z.unknown()),
|
|
2329
|
-
sourceExecutionId: UuidSchema.optional()
|
|
2330
|
-
})
|
|
2362
|
+
export const CreateArtifactRequestSchema = z
|
|
2363
|
+
.object({
|
|
2364
|
+
ownerKind: AcqArtifactOwnerKindSchema,
|
|
2365
|
+
ownerId: UuidSchema,
|
|
2366
|
+
kind: z.string().trim().min(1).max(255),
|
|
2367
|
+
content: z.record(z.string(), z.unknown()),
|
|
2368
|
+
sourceExecutionId: UuidSchema.optional()
|
|
2369
|
+
})
|
|
2331
2370
|
.strict()
|
|
2332
2371
|
```
|
|
2333
2372
|
|
|
2334
2373
|
### `AcqArtifactResponseSchema`
|
|
2335
2374
|
|
|
2336
2375
|
```typescript
|
|
2337
|
-
export const AcqArtifactResponseSchema = z.object({
|
|
2338
|
-
id: z.string(),
|
|
2339
|
-
organizationId: z.string(),
|
|
2340
|
-
ownerKind: z.string(),
|
|
2341
|
-
ownerId: z.string(),
|
|
2342
|
-
kind: z.string(),
|
|
2343
|
-
content: z.record(z.string(), z.unknown()),
|
|
2344
|
-
sourceExecutionId: z.string().nullable(),
|
|
2345
|
-
createdBy: z.string().nullable(),
|
|
2346
|
-
createdAt: z.string(),
|
|
2347
|
-
version: z.number().int()
|
|
2376
|
+
export const AcqArtifactResponseSchema = z.object({
|
|
2377
|
+
id: z.string(),
|
|
2378
|
+
organizationId: z.string(),
|
|
2379
|
+
ownerKind: z.string(),
|
|
2380
|
+
ownerId: z.string(),
|
|
2381
|
+
kind: z.string(),
|
|
2382
|
+
content: z.record(z.string(), z.unknown()),
|
|
2383
|
+
sourceExecutionId: z.string().nullable(),
|
|
2384
|
+
createdBy: z.string().nullable(),
|
|
2385
|
+
createdAt: z.string(),
|
|
2386
|
+
version: z.number().int()
|
|
2348
2387
|
})
|
|
2349
2388
|
```
|
|
2350
2389
|
|
|
2351
2390
|
### `AcqArtifactListResponseSchema`
|
|
2352
2391
|
|
|
2353
2392
|
```typescript
|
|
2354
|
-
export const AcqArtifactListResponseSchema = z.object({
|
|
2355
|
-
artifacts: z.array(AcqArtifactResponseSchema)
|
|
2393
|
+
export const AcqArtifactListResponseSchema = z.object({
|
|
2394
|
+
artifacts: z.array(AcqArtifactResponseSchema)
|
|
2356
2395
|
})
|
|
2357
2396
|
```
|
|
2358
2397
|
|
|
2359
2398
|
### `ListMembersQuerySchema`
|
|
2360
2399
|
|
|
2361
2400
|
```typescript
|
|
2362
|
-
export const ListMembersQuerySchema = z
|
|
2363
|
-
.object({
|
|
2364
|
-
limit: z.coerce.number().int().min(1).max(500).default(50),
|
|
2365
|
-
offset: z.coerce.number().int().min(0).default(0)
|
|
2366
|
-
})
|
|
2401
|
+
export const ListMembersQuerySchema = z
|
|
2402
|
+
.object({
|
|
2403
|
+
limit: z.coerce.number().int().min(1).max(500).default(50),
|
|
2404
|
+
offset: z.coerce.number().int().min(0).default(0)
|
|
2405
|
+
})
|
|
2367
2406
|
.strict()
|
|
2368
2407
|
```
|
|
2369
2408
|
|
|
2370
2409
|
### `MemberIdParamsSchema`
|
|
2371
2410
|
|
|
2372
2411
|
```typescript
|
|
2373
|
-
export const MemberIdParamsSchema = z.object({
|
|
2374
|
-
memberId: UuidSchema
|
|
2412
|
+
export const MemberIdParamsSchema = z.object({
|
|
2413
|
+
memberId: UuidSchema
|
|
2375
2414
|
})
|
|
2376
2415
|
```
|
|
2377
2416
|
|
|
2378
2417
|
### `AcqListMemberContactSummarySchema`
|
|
2379
2418
|
|
|
2380
2419
|
```typescript
|
|
2381
|
-
export const AcqListMemberContactSummarySchema = z.object({
|
|
2382
|
-
id: z.string(),
|
|
2383
|
-
email: z.string(),
|
|
2384
|
-
firstName: z.string().nullable(),
|
|
2385
|
-
lastName: z.string().nullable(),
|
|
2386
|
-
title: z.string().nullable(),
|
|
2387
|
-
linkedinUrl: z.string().nullable(),
|
|
2388
|
-
companyId: z.string().nullable()
|
|
2420
|
+
export const AcqListMemberContactSummarySchema = z.object({
|
|
2421
|
+
id: z.string(),
|
|
2422
|
+
email: z.string(),
|
|
2423
|
+
firstName: z.string().nullable(),
|
|
2424
|
+
lastName: z.string().nullable(),
|
|
2425
|
+
title: z.string().nullable(),
|
|
2426
|
+
linkedinUrl: z.string().nullable(),
|
|
2427
|
+
companyId: z.string().nullable()
|
|
2389
2428
|
})
|
|
2390
2429
|
```
|
|
2391
2430
|
|
|
2392
2431
|
### `AcqListMemberResponseSchema`
|
|
2393
2432
|
|
|
2394
2433
|
```typescript
|
|
2395
|
-
export const AcqListMemberResponseSchema = z.object({
|
|
2396
|
-
id: z.string(),
|
|
2397
|
-
listId: z.string(),
|
|
2398
|
-
contactId: z.string(),
|
|
2399
|
-
pipelineKey: z.string(),
|
|
2400
|
-
stageKey: z.string(),
|
|
2401
|
-
stateKey: z.string(),
|
|
2402
|
-
activityLog: z.unknown(),
|
|
2403
|
-
addedAt: z.string(),
|
|
2404
|
-
addedBy: z.string().nullable(),
|
|
2405
|
-
sourceExecutionId: z.string().nullable(),
|
|
2406
|
-
contact: AcqListMemberContactSummarySchema.nullable()
|
|
2434
|
+
export const AcqListMemberResponseSchema = z.object({
|
|
2435
|
+
id: z.string(),
|
|
2436
|
+
listId: z.string(),
|
|
2437
|
+
contactId: z.string(),
|
|
2438
|
+
pipelineKey: z.string(),
|
|
2439
|
+
stageKey: z.string(),
|
|
2440
|
+
stateKey: z.string(),
|
|
2441
|
+
activityLog: z.unknown(),
|
|
2442
|
+
addedAt: z.string(),
|
|
2443
|
+
addedBy: z.string().nullable(),
|
|
2444
|
+
sourceExecutionId: z.string().nullable(),
|
|
2445
|
+
contact: AcqListMemberContactSummarySchema.nullable()
|
|
2407
2446
|
})
|
|
2408
2447
|
```
|
|
2409
2448
|
|
|
2410
2449
|
### `AcqListMembersResponseSchema`
|
|
2411
2450
|
|
|
2412
2451
|
```typescript
|
|
2413
|
-
export const AcqListMembersResponseSchema = z.object({
|
|
2414
|
-
members: z.array(AcqListMemberResponseSchema)
|
|
2452
|
+
export const AcqListMembersResponseSchema = z.object({
|
|
2453
|
+
members: z.array(AcqListMemberResponseSchema)
|
|
2415
2454
|
})
|
|
2416
2455
|
```
|
|
2417
2456
|
|
|
2418
2457
|
### `ListCompanyIdParamsSchema`
|
|
2419
2458
|
|
|
2420
2459
|
```typescript
|
|
2421
|
-
export const ListCompanyIdParamsSchema = z.object({
|
|
2422
|
-
listCompanyId: UuidSchema
|
|
2460
|
+
export const ListCompanyIdParamsSchema = z.object({
|
|
2461
|
+
listCompanyId: UuidSchema
|
|
2423
2462
|
})
|
|
2424
2463
|
```
|
|
2425
2464
|
|
|
2426
2465
|
### `AcqListCompanyResponseSchema`
|
|
2427
2466
|
|
|
2428
2467
|
```typescript
|
|
2429
|
-
export const AcqListCompanyResponseSchema = z.object({
|
|
2430
|
-
id: z.string(),
|
|
2431
|
-
listId: z.string(),
|
|
2432
|
-
companyId: z.string(),
|
|
2433
|
-
pipelineKey: z.string(),
|
|
2434
|
-
stageKey: z.string(),
|
|
2435
|
-
stateKey: z.string(),
|
|
2436
|
-
activityLog: z.unknown(),
|
|
2437
|
-
addedAt: z.string(),
|
|
2438
|
-
addedBy: z.string().nullable(),
|
|
2439
|
-
sourceExecutionId: z.string().nullable()
|
|
2468
|
+
export const AcqListCompanyResponseSchema = z.object({
|
|
2469
|
+
id: z.string(),
|
|
2470
|
+
listId: z.string(),
|
|
2471
|
+
companyId: z.string(),
|
|
2472
|
+
pipelineKey: z.string(),
|
|
2473
|
+
stageKey: z.string(),
|
|
2474
|
+
stateKey: z.string(),
|
|
2475
|
+
activityLog: z.unknown(),
|
|
2476
|
+
addedAt: z.string(),
|
|
2477
|
+
addedBy: z.string().nullable(),
|
|
2478
|
+
sourceExecutionId: z.string().nullable()
|
|
2440
2479
|
})
|
|
2441
2480
|
```
|
|
2442
2481
|
|
|
2443
2482
|
### `AcqCompanySchemas`
|
|
2444
2483
|
|
|
2445
2484
|
```typescript
|
|
2446
|
-
export const AcqCompanySchemas = {
|
|
2447
|
-
CompanyIdParams: CompanyIdParamsSchema,
|
|
2448
|
-
ListCompaniesQuery: ListCompaniesQuerySchema,
|
|
2449
|
-
CreateCompanyRequest: CreateCompanyRequestSchema,
|
|
2450
|
-
UpdateCompanyRequest: UpdateCompanyRequestSchema,
|
|
2451
|
-
AcqCompanyResponse: AcqCompanyResponseSchema,
|
|
2452
|
-
AcqCompanyListResponse: AcqCompanyListResponseSchema,
|
|
2453
|
-
AcqCompanyFacetsResponse: AcqCompanyFacetsResponseSchema
|
|
2485
|
+
export const AcqCompanySchemas = {
|
|
2486
|
+
CompanyIdParams: CompanyIdParamsSchema,
|
|
2487
|
+
ListCompaniesQuery: ListCompaniesQuerySchema,
|
|
2488
|
+
CreateCompanyRequest: CreateCompanyRequestSchema,
|
|
2489
|
+
UpdateCompanyRequest: UpdateCompanyRequestSchema,
|
|
2490
|
+
AcqCompanyResponse: AcqCompanyResponseSchema,
|
|
2491
|
+
AcqCompanyListResponse: AcqCompanyListResponseSchema,
|
|
2492
|
+
AcqCompanyFacetsResponse: AcqCompanyFacetsResponseSchema
|
|
2454
2493
|
}
|
|
2455
2494
|
```
|
|
2456
2495
|
|
|
2457
2496
|
### `AcqContactSchemas`
|
|
2458
2497
|
|
|
2459
2498
|
```typescript
|
|
2460
|
-
export const AcqContactSchemas = {
|
|
2461
|
-
ContactIdParams: ContactIdParamsSchema,
|
|
2462
|
-
ListContactsQuery: ListContactsQuerySchema,
|
|
2463
|
-
CreateContactRequest: CreateContactRequestSchema,
|
|
2464
|
-
UpdateContactRequest: UpdateContactRequestSchema,
|
|
2465
|
-
AcqContactResponse: AcqContactResponseSchema,
|
|
2466
|
-
AcqContactListResponse: AcqContactListResponseSchema
|
|
2499
|
+
export const AcqContactSchemas = {
|
|
2500
|
+
ContactIdParams: ContactIdParamsSchema,
|
|
2501
|
+
ListContactsQuery: ListContactsQuerySchema,
|
|
2502
|
+
CreateContactRequest: CreateContactRequestSchema,
|
|
2503
|
+
UpdateContactRequest: UpdateContactRequestSchema,
|
|
2504
|
+
AcqContactResponse: AcqContactResponseSchema,
|
|
2505
|
+
AcqContactListResponse: AcqContactListResponseSchema
|
|
2467
2506
|
}
|
|
2468
2507
|
```
|
|
2469
2508
|
|
|
2470
2509
|
### `AcqListSchemas`
|
|
2471
2510
|
|
|
2472
2511
|
```typescript
|
|
2473
|
-
export const AcqListSchemas = {
|
|
2474
|
-
// Params
|
|
2475
|
-
ListIdParams: ListIdParamsSchema,
|
|
2476
|
-
|
|
2477
|
-
// Primitives (for UI / tests)
|
|
2478
|
-
ListStatus: ListStatusSchema,
|
|
2479
|
-
ScrapingConfig: ScrapingConfigSchema,
|
|
2480
|
-
IcpRubric: IcpRubricSchema,
|
|
2481
|
-
PipelineConfig: PipelineConfigSchema,
|
|
2482
|
-
PipelineStage: PipelineStageSchema,
|
|
2483
|
-
BuildPlanSnapshot: BuildPlanSnapshotSchema,
|
|
2484
|
-
BuildPlanSnapshotStep: BuildPlanSnapshotStepSchema,
|
|
2485
|
-
AcqListMetadata: AcqListMetadataSchema,
|
|
2486
|
-
ProcessingStageStatus: ProcessingStageStatusSchema,
|
|
2487
|
-
ListStageCounts: ListStageCountsSchema,
|
|
2488
|
-
ListTelemetry: ListTelemetrySchema,
|
|
2489
|
-
|
|
2490
|
-
// Requests
|
|
2491
|
-
CreateListRequest: CreateListRequestSchema,
|
|
2492
|
-
UpdateListRequest: UpdateListRequestSchema,
|
|
2493
|
-
UpdateListStatusRequest: UpdateListStatusRequestSchema,
|
|
2494
|
-
UpdateListConfigRequest: UpdateListConfigRequestSchema,
|
|
2495
|
-
AddCompaniesToListRequest: AddCompaniesToListRequestSchema,
|
|
2496
|
-
RemoveCompaniesFromListRequest: RemoveCompaniesFromListRequestSchema,
|
|
2497
|
-
AddContactsToListRequest: AddContactsToListRequestSchema,
|
|
2498
|
-
RecordListExecutionRequest: RecordListExecutionRequestSchema,
|
|
2499
|
-
|
|
2500
|
-
// Responses
|
|
2501
|
-
AcqListResponse: AcqListResponseSchema,
|
|
2502
|
-
AcqListListResponse: AcqListListResponseSchema,
|
|
2503
|
-
ListTelemetryResponse: ListTelemetryResponseSchema,
|
|
2504
|
-
ListTelemetryListResponse: ListTelemetryListResponseSchema,
|
|
2505
|
-
ListExecutionsResponse: ListExecutionsResponseSchema,
|
|
2506
|
-
ListProgressResponse: ListProgressResponseSchema
|
|
2512
|
+
export const AcqListSchemas = {
|
|
2513
|
+
// Params
|
|
2514
|
+
ListIdParams: ListIdParamsSchema,
|
|
2515
|
+
|
|
2516
|
+
// Primitives (for UI / tests)
|
|
2517
|
+
ListStatus: ListStatusSchema,
|
|
2518
|
+
ScrapingConfig: ScrapingConfigSchema,
|
|
2519
|
+
IcpRubric: IcpRubricSchema,
|
|
2520
|
+
PipelineConfig: PipelineConfigSchema,
|
|
2521
|
+
PipelineStage: PipelineStageSchema,
|
|
2522
|
+
BuildPlanSnapshot: BuildPlanSnapshotSchema,
|
|
2523
|
+
BuildPlanSnapshotStep: BuildPlanSnapshotStepSchema,
|
|
2524
|
+
AcqListMetadata: AcqListMetadataSchema,
|
|
2525
|
+
ProcessingStageStatus: ProcessingStageStatusSchema,
|
|
2526
|
+
ListStageCounts: ListStageCountsSchema,
|
|
2527
|
+
ListTelemetry: ListTelemetrySchema,
|
|
2528
|
+
|
|
2529
|
+
// Requests
|
|
2530
|
+
CreateListRequest: CreateListRequestSchema,
|
|
2531
|
+
UpdateListRequest: UpdateListRequestSchema,
|
|
2532
|
+
UpdateListStatusRequest: UpdateListStatusRequestSchema,
|
|
2533
|
+
UpdateListConfigRequest: UpdateListConfigRequestSchema,
|
|
2534
|
+
AddCompaniesToListRequest: AddCompaniesToListRequestSchema,
|
|
2535
|
+
RemoveCompaniesFromListRequest: RemoveCompaniesFromListRequestSchema,
|
|
2536
|
+
AddContactsToListRequest: AddContactsToListRequestSchema,
|
|
2537
|
+
RecordListExecutionRequest: RecordListExecutionRequestSchema,
|
|
2538
|
+
|
|
2539
|
+
// Responses
|
|
2540
|
+
AcqListResponse: AcqListResponseSchema,
|
|
2541
|
+
AcqListListResponse: AcqListListResponseSchema,
|
|
2542
|
+
ListTelemetryResponse: ListTelemetryResponseSchema,
|
|
2543
|
+
ListTelemetryListResponse: ListTelemetryListResponseSchema,
|
|
2544
|
+
ListExecutionsResponse: ListExecutionsResponseSchema,
|
|
2545
|
+
ListProgressResponse: ListProgressResponseSchema
|
|
2507
2546
|
}
|
|
2508
2547
|
```
|
|
2509
2548
|
|
|
2510
2549
|
### `AcqSubstrateSchemas`
|
|
2511
2550
|
|
|
2512
2551
|
```typescript
|
|
2513
|
-
export const AcqSubstrateSchemas = {
|
|
2514
|
-
// Artifacts
|
|
2515
|
-
ListArtifactsQuery: ListArtifactsQuerySchema,
|
|
2516
|
-
CreateArtifactRequest: CreateArtifactRequestSchema,
|
|
2517
|
-
AcqArtifactResponse: AcqArtifactResponseSchema,
|
|
2518
|
-
AcqArtifactListResponse: AcqArtifactListResponseSchema,
|
|
2519
|
-
|
|
2520
|
-
// List members
|
|
2521
|
-
ListMembersQuery: ListMembersQuerySchema,
|
|
2522
|
-
MemberIdParams: MemberIdParamsSchema,
|
|
2523
|
-
AcqListMemberResponse: AcqListMemberResponseSchema,
|
|
2524
|
-
AcqListMembersResponse: AcqListMembersResponseSchema,
|
|
2525
|
-
|
|
2526
|
-
// List companies
|
|
2527
|
-
ListCompanyIdParams: ListCompanyIdParamsSchema,
|
|
2528
|
-
AcqListCompanyResponse: AcqListCompanyResponseSchema,
|
|
2529
|
-
|
|
2530
|
-
// Transition (shared with deals — TransitionItemRequestSchema)
|
|
2531
|
-
TransitionItemRequest: TransitionItemRequestSchema
|
|
2552
|
+
export const AcqSubstrateSchemas = {
|
|
2553
|
+
// Artifacts
|
|
2554
|
+
ListArtifactsQuery: ListArtifactsQuerySchema,
|
|
2555
|
+
CreateArtifactRequest: CreateArtifactRequestSchema,
|
|
2556
|
+
AcqArtifactResponse: AcqArtifactResponseSchema,
|
|
2557
|
+
AcqArtifactListResponse: AcqArtifactListResponseSchema,
|
|
2558
|
+
|
|
2559
|
+
// List members
|
|
2560
|
+
ListMembersQuery: ListMembersQuerySchema,
|
|
2561
|
+
MemberIdParams: MemberIdParamsSchema,
|
|
2562
|
+
AcqListMemberResponse: AcqListMemberResponseSchema,
|
|
2563
|
+
AcqListMembersResponse: AcqListMembersResponseSchema,
|
|
2564
|
+
|
|
2565
|
+
// List companies
|
|
2566
|
+
ListCompanyIdParams: ListCompanyIdParamsSchema,
|
|
2567
|
+
AcqListCompanyResponse: AcqListCompanyResponseSchema,
|
|
2568
|
+
|
|
2569
|
+
// Transition (shared with deals — TransitionItemRequestSchema)
|
|
2570
|
+
TransitionItemRequest: TransitionItemRequestSchema
|
|
2532
2571
|
}
|
|
2533
2572
|
```
|
|
2534
2573
|
|
|
@@ -2713,39 +2752,39 @@ export const LEAD_GEN_PIPELINE_DEFINITIONS: Record<string, StatefulPipelineDefin
|
|
|
2713
2752
|
### `PaginationParams`
|
|
2714
2753
|
|
|
2715
2754
|
```typescript
|
|
2716
|
-
export interface PaginationParams {
|
|
2717
|
-
limit: number
|
|
2718
|
-
offset: number
|
|
2755
|
+
export interface PaginationParams {
|
|
2756
|
+
limit: number
|
|
2757
|
+
offset: number
|
|
2719
2758
|
}
|
|
2720
2759
|
```
|
|
2721
2760
|
|
|
2722
2761
|
### `PaginatedResult`
|
|
2723
2762
|
|
|
2724
2763
|
```typescript
|
|
2725
|
-
export interface PaginatedResult<T> {
|
|
2726
|
-
data: T[]
|
|
2727
|
-
total: number
|
|
2728
|
-
limit: number
|
|
2729
|
-
offset: number
|
|
2764
|
+
export interface PaginatedResult<T> {
|
|
2765
|
+
data: T[]
|
|
2766
|
+
total: number
|
|
2767
|
+
limit: number
|
|
2768
|
+
offset: number
|
|
2730
2769
|
}
|
|
2731
2770
|
```
|
|
2732
2771
|
|
|
2733
2772
|
### `CreateListParams`
|
|
2734
2773
|
|
|
2735
2774
|
```typescript
|
|
2736
|
-
export interface CreateListParams {
|
|
2737
|
-
organizationId: string
|
|
2738
|
-
name: string
|
|
2739
|
-
description?: string
|
|
2740
|
-
type?: string
|
|
2741
|
-
batchIds?: string[]
|
|
2775
|
+
export interface CreateListParams {
|
|
2776
|
+
organizationId: string
|
|
2777
|
+
name: string
|
|
2778
|
+
description?: string
|
|
2779
|
+
type?: string
|
|
2780
|
+
batchIds?: string[]
|
|
2742
2781
|
instantlyCampaignId?: string
|
|
2743
2782
|
status?: ListStatus
|
|
2744
2783
|
buildTemplateId?: string
|
|
2745
2784
|
metadata?: Record<string, unknown>
|
|
2746
2785
|
scrapingConfig?: ScrapingConfig
|
|
2747
2786
|
icp?: IcpRubric
|
|
2748
|
-
pipelineConfig?: PipelineConfig
|
|
2787
|
+
pipelineConfig?: PipelineConfig
|
|
2749
2788
|
}
|
|
2750
2789
|
```
|
|
2751
2790
|
|
|
@@ -2762,49 +2801,49 @@ export interface UpdateListParams {
|
|
|
2762
2801
|
### `CreateCompanyParams`
|
|
2763
2802
|
|
|
2764
2803
|
```typescript
|
|
2765
|
-
export interface CreateCompanyParams {
|
|
2766
|
-
organizationId: string
|
|
2767
|
-
name: string
|
|
2768
|
-
domain?: string
|
|
2769
|
-
linkedinUrl?: string
|
|
2770
|
-
website?: string
|
|
2771
|
-
numEmployees?: number
|
|
2772
|
-
foundedYear?: number
|
|
2773
|
-
locationCity?: string
|
|
2774
|
-
locationState?: string
|
|
2775
|
-
category?: string
|
|
2776
|
-
source?: string
|
|
2777
|
-
batchId?: string
|
|
2778
|
-
verticalResearch?: string
|
|
2804
|
+
export interface CreateCompanyParams {
|
|
2805
|
+
organizationId: string
|
|
2806
|
+
name: string
|
|
2807
|
+
domain?: string
|
|
2808
|
+
linkedinUrl?: string
|
|
2809
|
+
website?: string
|
|
2810
|
+
numEmployees?: number
|
|
2811
|
+
foundedYear?: number
|
|
2812
|
+
locationCity?: string
|
|
2813
|
+
locationState?: string
|
|
2814
|
+
category?: string
|
|
2815
|
+
source?: string
|
|
2816
|
+
batchId?: string
|
|
2817
|
+
verticalResearch?: string
|
|
2779
2818
|
}
|
|
2780
2819
|
```
|
|
2781
2820
|
|
|
2782
2821
|
### `UpdateCompanyParams`
|
|
2783
2822
|
|
|
2784
2823
|
```typescript
|
|
2785
|
-
export interface UpdateCompanyParams {
|
|
2786
|
-
name?: string
|
|
2787
|
-
domain?: string
|
|
2788
|
-
linkedinUrl?: string
|
|
2789
|
-
website?: string
|
|
2790
|
-
numEmployees?: number
|
|
2791
|
-
foundedYear?: number
|
|
2792
|
-
locationCity?: string
|
|
2793
|
-
locationState?: string
|
|
2794
|
-
category?: string
|
|
2795
|
-
segment?: string
|
|
2796
|
-
pipelineStatus?: Record<string, unknown>
|
|
2797
|
-
enrichmentData?: Record<string, unknown>
|
|
2798
|
-
source?: string
|
|
2799
|
-
batchId?: string
|
|
2800
|
-
status?: 'active' | 'invalid'
|
|
2801
|
-
verticalResearch?: string | null
|
|
2802
|
-
/** Track A: flat qualification score column (null until a scoring rubric is defined) */
|
|
2803
|
-
qualificationScore?: number | null
|
|
2804
|
-
/** Track A: flat qualification signals jsonb — mirrors the former pipeline_status.qualification shape */
|
|
2805
|
-
qualificationSignals?: Record<string, unknown> | null
|
|
2806
|
-
/** Track A: key identifying the rubric used for qualification */
|
|
2807
|
-
qualificationRubricKey?: string | null
|
|
2824
|
+
export interface UpdateCompanyParams {
|
|
2825
|
+
name?: string
|
|
2826
|
+
domain?: string
|
|
2827
|
+
linkedinUrl?: string
|
|
2828
|
+
website?: string
|
|
2829
|
+
numEmployees?: number
|
|
2830
|
+
foundedYear?: number
|
|
2831
|
+
locationCity?: string
|
|
2832
|
+
locationState?: string
|
|
2833
|
+
category?: string
|
|
2834
|
+
segment?: string
|
|
2835
|
+
pipelineStatus?: Record<string, unknown>
|
|
2836
|
+
enrichmentData?: Record<string, unknown>
|
|
2837
|
+
source?: string
|
|
2838
|
+
batchId?: string
|
|
2839
|
+
status?: 'active' | 'invalid'
|
|
2840
|
+
verticalResearch?: string | null
|
|
2841
|
+
/** Track A: flat qualification score column (null until a scoring rubric is defined) */
|
|
2842
|
+
qualificationScore?: number | null
|
|
2843
|
+
/** Track A: flat qualification signals jsonb — mirrors the former pipeline_status.qualification shape */
|
|
2844
|
+
qualificationSignals?: Record<string, unknown> | null
|
|
2845
|
+
/** Track A: key identifying the rubric used for qualification */
|
|
2846
|
+
qualificationRubricKey?: string | null
|
|
2808
2847
|
}
|
|
2809
2848
|
```
|
|
2810
2849
|
|
|
@@ -2817,56 +2856,57 @@ export type UpsertCompanyParams = CreateCompanyParams
|
|
|
2817
2856
|
### `CompanyFilters`
|
|
2818
2857
|
|
|
2819
2858
|
```typescript
|
|
2820
|
-
export interface CompanyFilters {
|
|
2821
|
-
listId?: string // Filter to companies in a specific list (via acq_list_companies)
|
|
2822
|
-
search?: string
|
|
2823
|
-
domain?: string
|
|
2824
|
-
website?: string
|
|
2825
|
-
segment?: string
|
|
2826
|
-
category?: string
|
|
2827
|
-
pipelineStatus?: Record<string, unknown>
|
|
2828
|
-
/** Exclude companies whose pipeline_status contains this value (PostgREST NOT contains) */
|
|
2829
|
-
pipelineStatusNot?: Record<string, unknown>
|
|
2830
|
-
batchId?: string
|
|
2831
|
-
status?: 'active' | 'invalid'
|
|
2832
|
-
includeAll?: boolean
|
|
2833
|
-
excludeColumns?: Array<'enrichmentData' | 'pipelineStatus'>
|
|
2859
|
+
export interface CompanyFilters {
|
|
2860
|
+
listId?: string // Filter to companies in a specific list (via acq_list_companies)
|
|
2861
|
+
search?: string
|
|
2862
|
+
domain?: string
|
|
2863
|
+
website?: string
|
|
2864
|
+
segment?: string
|
|
2865
|
+
category?: string
|
|
2866
|
+
pipelineStatus?: Record<string, unknown>
|
|
2867
|
+
/** Exclude companies whose pipeline_status contains this value (PostgREST NOT contains) */
|
|
2868
|
+
pipelineStatusNot?: Record<string, unknown>
|
|
2869
|
+
batchId?: string
|
|
2870
|
+
status?: 'active' | 'invalid'
|
|
2871
|
+
includeAll?: boolean
|
|
2872
|
+
excludeColumns?: Array<'enrichmentData' | 'pipelineStatus'>
|
|
2873
|
+
limit?: number
|
|
2834
2874
|
}
|
|
2835
2875
|
```
|
|
2836
2876
|
|
|
2837
2877
|
### `CreateContactParams`
|
|
2838
2878
|
|
|
2839
2879
|
```typescript
|
|
2840
|
-
export interface CreateContactParams {
|
|
2841
|
-
organizationId: string
|
|
2842
|
-
email: string
|
|
2843
|
-
companyId?: string
|
|
2844
|
-
firstName?: string
|
|
2845
|
-
lastName?: string
|
|
2846
|
-
linkedinUrl?: string
|
|
2847
|
-
title?: string
|
|
2848
|
-
source?: string
|
|
2849
|
-
sourceId?: string
|
|
2850
|
-
batchId?: string
|
|
2880
|
+
export interface CreateContactParams {
|
|
2881
|
+
organizationId: string
|
|
2882
|
+
email: string
|
|
2883
|
+
companyId?: string
|
|
2884
|
+
firstName?: string
|
|
2885
|
+
lastName?: string
|
|
2886
|
+
linkedinUrl?: string
|
|
2887
|
+
title?: string
|
|
2888
|
+
source?: string
|
|
2889
|
+
sourceId?: string
|
|
2890
|
+
batchId?: string
|
|
2851
2891
|
}
|
|
2852
2892
|
```
|
|
2853
2893
|
|
|
2854
2894
|
### `UpdateContactParams`
|
|
2855
2895
|
|
|
2856
2896
|
```typescript
|
|
2857
|
-
export interface UpdateContactParams {
|
|
2858
|
-
companyId?: string
|
|
2859
|
-
emailValid?: 'VALID' | 'INVALID' | 'RISKY' | 'UNKNOWN'
|
|
2860
|
-
firstName?: string
|
|
2861
|
-
lastName?: string
|
|
2862
|
-
linkedinUrl?: string
|
|
2863
|
-
title?: string
|
|
2864
|
-
headline?: string
|
|
2865
|
-
filterReason?: string
|
|
2866
|
-
openingLine?: string
|
|
2867
|
-
pipelineStatus?: Record<string, unknown>
|
|
2868
|
-
enrichmentData?: Record<string, unknown>
|
|
2869
|
-
status?: 'active' | 'invalid'
|
|
2897
|
+
export interface UpdateContactParams {
|
|
2898
|
+
companyId?: string
|
|
2899
|
+
emailValid?: 'VALID' | 'INVALID' | 'RISKY' | 'UNKNOWN'
|
|
2900
|
+
firstName?: string
|
|
2901
|
+
lastName?: string
|
|
2902
|
+
linkedinUrl?: string
|
|
2903
|
+
title?: string
|
|
2904
|
+
headline?: string
|
|
2905
|
+
filterReason?: string
|
|
2906
|
+
openingLine?: string
|
|
2907
|
+
pipelineStatus?: Record<string, unknown>
|
|
2908
|
+
enrichmentData?: Record<string, unknown>
|
|
2909
|
+
status?: 'active' | 'invalid'
|
|
2870
2910
|
}
|
|
2871
2911
|
```
|
|
2872
2912
|
|
|
@@ -2879,87 +2919,87 @@ export type UpsertContactParams = CreateContactParams
|
|
|
2879
2919
|
### `ContactFilters`
|
|
2880
2920
|
|
|
2881
2921
|
```typescript
|
|
2882
|
-
export interface ContactFilters {
|
|
2883
|
-
listId?: string // Filter to contacts in a specific list (via acq_list_members)
|
|
2884
|
-
search?: string
|
|
2885
|
-
openingLineIsNull?: boolean // Filter to contacts without personalization
|
|
2886
|
-
pipelineStatus?: Record<string, unknown>
|
|
2887
|
-
batchId?: string
|
|
2888
|
-
contactStatus?: 'active' | 'invalid' // Filter by contact status (soft-delete flag)
|
|
2922
|
+
export interface ContactFilters {
|
|
2923
|
+
listId?: string // Filter to contacts in a specific list (via acq_list_members)
|
|
2924
|
+
search?: string
|
|
2925
|
+
openingLineIsNull?: boolean // Filter to contacts without personalization
|
|
2926
|
+
pipelineStatus?: Record<string, unknown>
|
|
2927
|
+
batchId?: string
|
|
2928
|
+
contactStatus?: 'active' | 'invalid' // Filter by contact status (soft-delete flag)
|
|
2889
2929
|
}
|
|
2890
2930
|
```
|
|
2891
2931
|
|
|
2892
2932
|
### `UpsertSocialPostParams`
|
|
2893
2933
|
|
|
2894
2934
|
```typescript
|
|
2895
|
-
export interface UpsertSocialPostParams {
|
|
2896
|
-
organizationId: string
|
|
2897
|
-
platform: string
|
|
2898
|
-
platformPostId: string
|
|
2899
|
-
authorName: string
|
|
2900
|
-
authorUrl?: string | null
|
|
2901
|
-
postTitle: string
|
|
2902
|
-
postText: string
|
|
2903
|
-
postUrl: string
|
|
2904
|
-
engagementCount?: number
|
|
2905
|
-
commentsCount?: number
|
|
2906
|
-
postedAt: string
|
|
2907
|
-
metadata?: Record<string, unknown>
|
|
2908
|
-
relevanceScore?: number
|
|
2909
|
-
matchedKeywords?: string[]
|
|
2910
|
-
matchedQuery?: string | null
|
|
2911
|
-
initialDraft?: string | null
|
|
2912
|
-
finalResponse?: string | null
|
|
2913
|
-
sourceCategory?: string | null
|
|
2935
|
+
export interface UpsertSocialPostParams {
|
|
2936
|
+
organizationId: string
|
|
2937
|
+
platform: string
|
|
2938
|
+
platformPostId: string
|
|
2939
|
+
authorName: string
|
|
2940
|
+
authorUrl?: string | null
|
|
2941
|
+
postTitle: string
|
|
2942
|
+
postText: string
|
|
2943
|
+
postUrl: string
|
|
2944
|
+
engagementCount?: number
|
|
2945
|
+
commentsCount?: number
|
|
2946
|
+
postedAt: string
|
|
2947
|
+
metadata?: Record<string, unknown>
|
|
2948
|
+
relevanceScore?: number
|
|
2949
|
+
matchedKeywords?: string[]
|
|
2950
|
+
matchedQuery?: string | null
|
|
2951
|
+
initialDraft?: string | null
|
|
2952
|
+
finalResponse?: string | null
|
|
2953
|
+
sourceCategory?: string | null
|
|
2914
2954
|
}
|
|
2915
2955
|
```
|
|
2916
2956
|
|
|
2917
2957
|
### `UpsertSocialPostsParams`
|
|
2918
2958
|
|
|
2919
2959
|
```typescript
|
|
2920
|
-
export interface UpsertSocialPostsParams {
|
|
2921
|
-
organizationId: string
|
|
2922
|
-
posts: Omit<UpsertSocialPostParams, 'organizationId'>[]
|
|
2960
|
+
export interface UpsertSocialPostsParams {
|
|
2961
|
+
organizationId: string
|
|
2962
|
+
posts: Omit<UpsertSocialPostParams, 'organizationId'>[]
|
|
2923
2963
|
}
|
|
2924
2964
|
```
|
|
2925
2965
|
|
|
2926
2966
|
### `UpsertSocialPostsResult`
|
|
2927
2967
|
|
|
2928
2968
|
```typescript
|
|
2929
|
-
export interface UpsertSocialPostsResult {
|
|
2930
|
-
inserted: number
|
|
2931
|
-
duplicatesSkipped: number
|
|
2969
|
+
export interface UpsertSocialPostsResult {
|
|
2970
|
+
inserted: number
|
|
2971
|
+
duplicatesSkipped: number
|
|
2932
2972
|
}
|
|
2933
2973
|
```
|
|
2934
2974
|
|
|
2935
2975
|
### `AddContactsToListParams`
|
|
2936
2976
|
|
|
2937
2977
|
```typescript
|
|
2938
|
-
export interface AddContactsToListParams {
|
|
2939
|
-
organizationId: string
|
|
2940
|
-
listId: string
|
|
2941
|
-
contactIds: string[]
|
|
2978
|
+
export interface AddContactsToListParams {
|
|
2979
|
+
organizationId: string
|
|
2980
|
+
listId: string
|
|
2981
|
+
contactIds: string[]
|
|
2942
2982
|
}
|
|
2943
2983
|
```
|
|
2944
2984
|
|
|
2945
2985
|
### `AddContactsToListResult`
|
|
2946
2986
|
|
|
2947
2987
|
```typescript
|
|
2948
|
-
export interface AddContactsToListResult {
|
|
2949
|
-
added: number
|
|
2950
|
-
alreadyExisted: number
|
|
2988
|
+
export interface AddContactsToListResult {
|
|
2989
|
+
added: number
|
|
2990
|
+
alreadyExisted: number
|
|
2951
2991
|
}
|
|
2952
2992
|
```
|
|
2953
2993
|
|
|
2954
2994
|
### `UpdateListConfigParams`
|
|
2955
2995
|
|
|
2956
2996
|
```typescript
|
|
2957
|
-
export interface UpdateListConfigParams {
|
|
2958
|
-
organizationId: string
|
|
2959
|
-
listId: string
|
|
2960
|
-
scrapingConfig?: ScrapingConfig
|
|
2961
|
-
icp?: IcpRubric
|
|
2962
|
-
pipelineConfig?: PipelineConfig
|
|
2997
|
+
export interface UpdateListConfigParams {
|
|
2998
|
+
organizationId: string
|
|
2999
|
+
listId: string
|
|
3000
|
+
scrapingConfig?: ScrapingConfig
|
|
3001
|
+
icp?: IcpRubric
|
|
3002
|
+
pipelineConfig?: PipelineConfig
|
|
2963
3003
|
}
|
|
2964
3004
|
```
|
|
2965
3005
|
|
|
@@ -2992,117 +3032,117 @@ export interface UpdateContactStageParams {
|
|
|
2992
3032
|
### `AddCompaniesToListParams`
|
|
2993
3033
|
|
|
2994
3034
|
```typescript
|
|
2995
|
-
export interface AddCompaniesToListParams {
|
|
2996
|
-
organizationId: string
|
|
2997
|
-
listId: string
|
|
2998
|
-
companyIds: string[]
|
|
3035
|
+
export interface AddCompaniesToListParams {
|
|
3036
|
+
organizationId: string
|
|
3037
|
+
listId: string
|
|
3038
|
+
companyIds: string[]
|
|
2999
3039
|
}
|
|
3000
3040
|
```
|
|
3001
3041
|
|
|
3002
3042
|
### `AddCompaniesToListResult`
|
|
3003
3043
|
|
|
3004
3044
|
```typescript
|
|
3005
|
-
export interface AddCompaniesToListResult {
|
|
3006
|
-
added: number
|
|
3007
|
-
alreadyExisted: number
|
|
3045
|
+
export interface AddCompaniesToListResult {
|
|
3046
|
+
added: number
|
|
3047
|
+
alreadyExisted: number
|
|
3008
3048
|
}
|
|
3009
3049
|
```
|
|
3010
3050
|
|
|
3011
3051
|
### `RemoveCompaniesFromListParams`
|
|
3012
3052
|
|
|
3013
3053
|
```typescript
|
|
3014
|
-
export interface RemoveCompaniesFromListParams {
|
|
3015
|
-
organizationId: string
|
|
3016
|
-
listId: string
|
|
3017
|
-
companyIds: string[]
|
|
3054
|
+
export interface RemoveCompaniesFromListParams {
|
|
3055
|
+
organizationId: string
|
|
3056
|
+
listId: string
|
|
3057
|
+
companyIds: string[]
|
|
3018
3058
|
}
|
|
3019
3059
|
```
|
|
3020
3060
|
|
|
3021
3061
|
### `RemoveCompaniesFromListResult`
|
|
3022
3062
|
|
|
3023
3063
|
```typescript
|
|
3024
|
-
export interface RemoveCompaniesFromListResult {
|
|
3025
|
-
removed: number
|
|
3064
|
+
export interface RemoveCompaniesFromListResult {
|
|
3065
|
+
removed: number
|
|
3026
3066
|
}
|
|
3027
3067
|
```
|
|
3028
3068
|
|
|
3029
3069
|
### `RecordListExecutionParams`
|
|
3030
3070
|
|
|
3031
3071
|
```typescript
|
|
3032
|
-
export interface RecordListExecutionParams {
|
|
3033
|
-
organizationId: string
|
|
3034
|
-
listId: string
|
|
3035
|
-
executionId: string
|
|
3036
|
-
configSnapshot?: Record<string, unknown>
|
|
3072
|
+
export interface RecordListExecutionParams {
|
|
3073
|
+
organizationId: string
|
|
3074
|
+
listId: string
|
|
3075
|
+
executionId: string
|
|
3076
|
+
configSnapshot?: Record<string, unknown>
|
|
3037
3077
|
}
|
|
3038
3078
|
```
|
|
3039
3079
|
|
|
3040
3080
|
### `ListExecutionSummary`
|
|
3041
3081
|
|
|
3042
3082
|
```typescript
|
|
3043
|
-
export interface ListExecutionSummary {
|
|
3044
|
-
executionId: string
|
|
3045
|
-
resourceId: string
|
|
3046
|
-
status: string
|
|
3047
|
-
createdAt: string
|
|
3048
|
-
completedAt: string | null
|
|
3049
|
-
durationMs: number | null
|
|
3083
|
+
export interface ListExecutionSummary {
|
|
3084
|
+
executionId: string
|
|
3085
|
+
resourceId: string
|
|
3086
|
+
status: string
|
|
3087
|
+
createdAt: string
|
|
3088
|
+
completedAt: string | null
|
|
3089
|
+
durationMs: number | null
|
|
3050
3090
|
}
|
|
3051
3091
|
```
|
|
3052
3092
|
|
|
3053
3093
|
### `BulkImportParams`
|
|
3054
3094
|
|
|
3055
3095
|
```typescript
|
|
3056
|
-
export interface BulkImportParams {
|
|
3057
|
-
organizationId: string
|
|
3058
|
-
contacts: CreateContactParams[]
|
|
3059
|
-
listId?: string
|
|
3096
|
+
export interface BulkImportParams {
|
|
3097
|
+
organizationId: string
|
|
3098
|
+
contacts: CreateContactParams[]
|
|
3099
|
+
listId?: string
|
|
3060
3100
|
}
|
|
3061
3101
|
```
|
|
3062
3102
|
|
|
3063
3103
|
### `BulkImportResult`
|
|
3064
3104
|
|
|
3065
3105
|
```typescript
|
|
3066
|
-
export interface BulkImportResult {
|
|
3067
|
-
created: number
|
|
3068
|
-
updated: number
|
|
3069
|
-
errors: Array<{ email: string; error: string }>
|
|
3106
|
+
export interface BulkImportResult {
|
|
3107
|
+
created: number
|
|
3108
|
+
updated: number
|
|
3109
|
+
errors: Array<{ email: string; error: string }>
|
|
3070
3110
|
}
|
|
3071
3111
|
```
|
|
3072
3112
|
|
|
3073
3113
|
### `BulkImportCompanyEntry`
|
|
3074
3114
|
|
|
3075
3115
|
```typescript
|
|
3076
|
-
export interface BulkImportCompanyEntry {
|
|
3077
|
-
name: string
|
|
3078
|
-
domain: string
|
|
3079
|
-
website?: string
|
|
3080
|
-
locationCity?: string
|
|
3081
|
-
locationState?: string
|
|
3082
|
-
category?: string
|
|
3083
|
-
source?: string
|
|
3084
|
-
enrichmentData?: Record<string, unknown>
|
|
3085
|
-
pipelineStatus?: Record<string, unknown>
|
|
3116
|
+
export interface BulkImportCompanyEntry {
|
|
3117
|
+
name: string
|
|
3118
|
+
domain: string
|
|
3119
|
+
website?: string
|
|
3120
|
+
locationCity?: string
|
|
3121
|
+
locationState?: string
|
|
3122
|
+
category?: string
|
|
3123
|
+
source?: string
|
|
3124
|
+
enrichmentData?: Record<string, unknown>
|
|
3125
|
+
pipelineStatus?: Record<string, unknown>
|
|
3086
3126
|
}
|
|
3087
3127
|
```
|
|
3088
3128
|
|
|
3089
3129
|
### `BulkImportCompaniesParams`
|
|
3090
3130
|
|
|
3091
3131
|
```typescript
|
|
3092
|
-
export interface BulkImportCompaniesParams {
|
|
3093
|
-
organizationId: string
|
|
3094
|
-
batchId: string
|
|
3095
|
-
companies: BulkImportCompanyEntry[]
|
|
3132
|
+
export interface BulkImportCompaniesParams {
|
|
3133
|
+
organizationId: string
|
|
3134
|
+
batchId: string
|
|
3135
|
+
companies: BulkImportCompanyEntry[]
|
|
3096
3136
|
}
|
|
3097
3137
|
```
|
|
3098
3138
|
|
|
3099
3139
|
### `BulkImportCompaniesResult`
|
|
3100
3140
|
|
|
3101
3141
|
```typescript
|
|
3102
|
-
export interface BulkImportCompaniesResult {
|
|
3103
|
-
created: number
|
|
3104
|
-
skipped: number
|
|
3105
|
-
errors: Array<{ companyName: string; error: string }>
|
|
3142
|
+
export interface BulkImportCompaniesResult {
|
|
3143
|
+
created: number
|
|
3144
|
+
skipped: number
|
|
3145
|
+
errors: Array<{ companyName: string; error: string }>
|
|
3106
3146
|
}
|
|
3107
3147
|
```
|
|
3108
3148
|
|
|
@@ -3265,3 +3305,74 @@ export type ListToolMap = {
|
|
|
3265
3305
|
}
|
|
3266
3306
|
}
|
|
3267
3307
|
```
|
|
3308
|
+
|
|
3309
|
+
## Knowledge Platform Primitives
|
|
3310
|
+
|
|
3311
|
+
### `KnowledgeLinkSchema`
|
|
3312
|
+
|
|
3313
|
+
```typescript
|
|
3314
|
+
export const KnowledgeLinkSchema = z.object({
|
|
3315
|
+
nodeId: NodeIdStringSchema
|
|
3316
|
+
})
|
|
3317
|
+
```
|
|
3318
|
+
|
|
3319
|
+
### `OrgKnowledgeKindSchema`
|
|
3320
|
+
|
|
3321
|
+
```typescript
|
|
3322
|
+
export const OrgKnowledgeKindSchema = z.enum(['playbook', 'strategy', 'reference'])
|
|
3323
|
+
```
|
|
3324
|
+
|
|
3325
|
+
### `OrgKnowledgeNodeSchema`
|
|
3326
|
+
|
|
3327
|
+
```typescript
|
|
3328
|
+
export const OrgKnowledgeNodeSchema = z.object({
|
|
3329
|
+
id: ModelIdSchema,
|
|
3330
|
+
kind: OrgKnowledgeKindSchema,
|
|
3331
|
+
title: z.string().trim().min(1).max(200),
|
|
3332
|
+
summary: z.string().trim().min(1).max(1000),
|
|
3333
|
+
icon: IconNameSchema.optional(),
|
|
3334
|
+
/** Raw MDX string. Phase 2 will introduce a structured block format. */
|
|
3335
|
+
body: z.string().trim().min(1),
|
|
3336
|
+
/**
|
|
3337
|
+
* Graph links to other OM nodes this knowledge node governs.
|
|
3338
|
+
* Each link emits a `governs` edge: knowledge-node -> target node.
|
|
3339
|
+
*/
|
|
3340
|
+
links: z.array(KnowledgeLinkSchema).default([]),
|
|
3341
|
+
/** Identifiers of the roles or members who own this knowledge node. */
|
|
3342
|
+
ownerIds: z.array(ModelIdSchema).default([]),
|
|
3343
|
+
/** ISO date string (YYYY-MM-DD or full ISO 8601) of last meaningful update. */
|
|
3344
|
+
updatedAt: z.string().trim().min(1).max(50)
|
|
3345
|
+
})
|
|
3346
|
+
```
|
|
3347
|
+
|
|
3348
|
+
### `KnowledgeDomainSchema`
|
|
3349
|
+
|
|
3350
|
+
```typescript
|
|
3351
|
+
export const KnowledgeDomainSchema = z.object({
|
|
3352
|
+
nodes: z.array(OrgKnowledgeNodeSchema).default([])
|
|
3353
|
+
})
|
|
3354
|
+
```
|
|
3355
|
+
|
|
3356
|
+
### `OrgKnowledgeNode`
|
|
3357
|
+
|
|
3358
|
+
```typescript
|
|
3359
|
+
export type OrgKnowledgeNode = z.infer<typeof OrgKnowledgeNodeSchema>
|
|
3360
|
+
```
|
|
3361
|
+
|
|
3362
|
+
### `OrgKnowledgeKind`
|
|
3363
|
+
|
|
3364
|
+
```typescript
|
|
3365
|
+
export type OrgKnowledgeKind = z.infer<typeof OrgKnowledgeKindSchema>
|
|
3366
|
+
```
|
|
3367
|
+
|
|
3368
|
+
### `KnowledgeLink`
|
|
3369
|
+
|
|
3370
|
+
```typescript
|
|
3371
|
+
export type KnowledgeLink = z.infer<typeof KnowledgeLinkSchema>
|
|
3372
|
+
```
|
|
3373
|
+
|
|
3374
|
+
### `KnowledgeDomain`
|
|
3375
|
+
|
|
3376
|
+
```typescript
|
|
3377
|
+
export type KnowledgeDomain = z.infer<typeof KnowledgeDomainSchema>
|
|
3378
|
+
```
|