@leadpoet/client 0.0.0-stage → 0.1.2
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/README.md +160 -2
- package/cli.js +436 -0
- package/cli.js.map +7 -0
- package/client.js +309 -0
- package/client.js.map +7 -0
- package/mcp.js +415 -0
- package/mcp.js.map +7 -0
- package/package.json +33 -4
- package/skill/SKILL.md +64 -0
- package/types/scripts/leadpoet-mcp.d.ts +5 -0
- package/types/scripts/leadpoet.d.ts +7 -0
- package/types/shared/leadpoet-client.d.ts +896 -0
- package/types/shared/workspace-operations.d.ts +2220 -0
package/client.js
ADDED
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// shared/workspace-operations.ts
|
|
4
|
+
var WORKSPACE_OPERATIONS = [
|
|
5
|
+
{ "method": "post", "nativePath": "/api/requests", "path": "/requests", "id": "createRequest", "scope": "lead_engine:write", "bodyScopes": { "recurrence": ["outreach:send"] }, "group": "workspace", "retry": "header" },
|
|
6
|
+
{ "method": "get", "nativePath": "/api/requests/contact-settings", "path": "/requests/contact-settings", "id": "getContactAllowance", "scope": "lead_engine:read", "group": "workspace", "retry": "none" },
|
|
7
|
+
{ "method": "get", "nativePath": "/api/queries", "path": "/requests", "id": "listRequests", "scope": "lead_engine:read", "group": "workspace", "retry": "none" },
|
|
8
|
+
{ "method": "get", "nativePath": "/api/queries/:id", "path": "/requests/:id", "id": "getRequest", "scope": "lead_engine:read", "group": "workspace", "retry": "none" },
|
|
9
|
+
{ "method": "get", "nativePath": "/api/company-pipeline", "path": "/pipeline", "id": "getPipeline", "scope": "pipeline:read", "group": "workspace", "retry": "none" },
|
|
10
|
+
{ "method": "patch", "nativePath": "/api/company-pipeline/cards/:id", "path": "/pipeline/companies/:id", "id": "updateCompany", "scope": "pipeline:write", "group": "workspace", "retry": "state" },
|
|
11
|
+
{ "method": "get", "nativePath": "/api/company-pipeline/contact-enrichment/readiness", "path": "/pipeline/contact-enrichment/readiness", "id": "getContactReadiness", "scope": "pipeline:read", "group": "workspace", "retry": "none" },
|
|
12
|
+
{ "method": "post", "nativePath": "/api/company-pipeline/cards/:id/contact-requests", "path": "/pipeline/companies/:id/contact-requests", "id": "requestContacts", "scope": "pipeline:write", "group": "workspace", "retry": "header" },
|
|
13
|
+
{ "method": "get", "nativePath": "/api/company-pipeline/cards/:cardId/contact-requests/:requestId", "path": "/pipeline/companies/:cardId/contact-requests/:requestId", "id": "getContactRequest", "scope": "pipeline:read", "group": "workspace", "retry": "none" },
|
|
14
|
+
{ "method": "get", "nativePath": "/api/company-pipeline/cards/:cardId/contact-requests/latest", "path": "/pipeline/companies/:cardId/contact-requests/latest", "id": "getLatestContactRequest", "scope": "pipeline:read", "group": "workspace", "retry": "none" },
|
|
15
|
+
{ "method": "get", "nativePath": "/api/icp-profiles", "path": "/icps", "id": "listIcps", "scope": "lead_engine:read", "group": "workspace", "retry": "none" },
|
|
16
|
+
{ "method": "post", "nativePath": "/api/icp-profiles/audiences", "path": "/icps/audiences", "id": "createIcp", "scope": "lead_engine:write", "group": "workspace", "retry": "header" },
|
|
17
|
+
{ "method": "get", "nativePath": "/api/icp-profiles/:icpId", "path": "/icps/:icpId", "id": "getIcp", "scope": "lead_engine:read", "group": "workspace", "retry": "none" },
|
|
18
|
+
{ "method": "get", "nativePath": "/api/icp-profiles/:icpId/versions", "path": "/icps/:icpId/versions", "id": "listIcpVersions", "scope": "lead_engine:read", "group": "workspace", "retry": "none" },
|
|
19
|
+
{ "method": "post", "nativePath": "/api/icp-profiles/:icpId/draft", "path": "/icps/:icpId/draft", "id": "createIcpDraft", "scope": "lead_engine:write", "group": "workspace", "retry": "none" },
|
|
20
|
+
{ "method": "patch", "nativePath": "/api/icp-profiles/:icpId/drafts/:draftId", "path": "/icps/:icpId/drafts/:draftId", "id": "updateIcpDraft", "scope": "lead_engine:write", "group": "workspace", "retry": "state" },
|
|
21
|
+
{ "method": "post", "nativePath": "/api/icp-profiles/:icpId/drafts/:draftId/publish", "path": "/icps/:icpId/drafts/:draftId/publish", "id": "publishIcp", "scope": "lead_engine:write", "group": "workspace", "retry": "header" },
|
|
22
|
+
{ "method": "post", "nativePath": "/api/icp-profiles/:icpId/archive", "path": "/icps/:icpId/archive", "id": "archiveIcp", "scope": "lead_engine:write", "group": "workspace", "retry": "header" },
|
|
23
|
+
{ "method": "get", "nativePath": "/api/company-pipeline/contact-engagements", "path": "/pipeline/contacts", "id": "listPipelineContacts", "scope": "pipeline:read", "group": "workspace", "retry": "none" },
|
|
24
|
+
{ "method": "patch", "nativePath": "/api/company-pipeline/contact-engagements/:engagementId/stage", "path": "/pipeline/contacts/:engagementId/stage", "id": "moveContact", "scope": "pipeline:write", "group": "workspace", "retry": "body" },
|
|
25
|
+
{ "method": "patch", "nativePath": "/api/company-pipeline/contact-engagements/:engagementId/pin", "path": "/pipeline/contacts/:engagementId/pin", "id": "pinContact", "scope": "pipeline:write", "group": "workspace", "retry": "state" },
|
|
26
|
+
{ "method": "get", "nativePath": "/api/company-pipeline/deals", "path": "/pipeline/deals", "id": "listDeals", "scope": "pipeline:read", "group": "workspace", "retry": "none" },
|
|
27
|
+
{ "method": "post", "nativePath": "/api/company-pipeline/cards/:cardId/deals", "path": "/pipeline/companies/:cardId/deals", "id": "createDeal", "scope": "pipeline:write", "group": "workspace", "retry": "header" },
|
|
28
|
+
{ "method": "patch", "nativePath": "/api/company-pipeline/deals/:dealId", "path": "/pipeline/deals/:dealId", "id": "updateDeal", "scope": "pipeline:write", "group": "workspace", "retry": "state" },
|
|
29
|
+
{ "method": "patch", "nativePath": "/api/company-pipeline/deals/:dealId/stage", "path": "/pipeline/deals/:dealId/stage", "id": "moveDeal", "scope": "pipeline:write", "group": "workspace", "retry": "body" },
|
|
30
|
+
{ "method": "get", "nativePath": "/api/company-pipeline/pipeline-config", "path": "/pipeline/configuration", "id": "getPipelineConfiguration", "scope": "pipeline:read", "group": "workspace", "retry": "none" },
|
|
31
|
+
{ "method": "get", "nativePath": "/api/company-pipeline/cards/:cardId/notes", "path": "/pipeline/companies/:cardId/notes", "id": "listCompanyNotes", "scope": "pipeline:read", "group": "workspace", "retry": "none" },
|
|
32
|
+
{ "method": "post", "nativePath": "/api/company-pipeline/cards/:cardId/notes", "path": "/pipeline/companies/:cardId/notes", "id": "createCompanyNote", "scope": "pipeline:write", "group": "workspace", "retry": "header_uuid" },
|
|
33
|
+
{ "method": "get", "nativePath": "/accounts", "path": "/outreach/accounts", "id": "listSendingAccounts", "scope": "outreach:read", "group": "outreach", "retry": "none" },
|
|
34
|
+
{ "method": "get", "nativePath": "/conversations", "path": "/outreach/conversations", "id": "listConversations", "scope": "outreach:read", "group": "outreach", "retry": "none" },
|
|
35
|
+
{ "method": "get", "nativePath": "/workspace-profile", "path": "/outreach/profile", "id": "getOutreachProfile", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
36
|
+
{ "method": "put", "nativePath": "/workspace-profile", "path": "/outreach/profile", "id": "updateOutreachProfile", "scope": "outreach:write", "group": "campaigns", "retry": "state" },
|
|
37
|
+
{ "method": "get", "nativePath": "/audience-sources", "path": "/outreach/audience-sources", "id": "listAudienceSources", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
38
|
+
{ "method": "get", "nativePath": "/audience-contacts", "path": "/outreach/audience-contacts", "id": "listAudienceContacts", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
39
|
+
{ "method": "post", "nativePath": "/audience-snapshots/preview-selection", "path": "/outreach/audiences/preview", "id": "previewAudience", "scope": "outreach:write", "group": "campaigns", "retry": "operation_id" },
|
|
40
|
+
{ "method": "post", "nativePath": "/audience-snapshots/from-selection", "path": "/outreach/audiences", "id": "createAudience", "scope": "outreach:write", "group": "campaigns", "retry": "operation_id" },
|
|
41
|
+
{ "method": "get", "nativePath": "/strategies", "path": "/outreach/campaigns", "id": "listCampaigns", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
42
|
+
{ "method": "get", "nativePath": "/campaign-product-descriptions", "path": "/outreach/campaign-product-descriptions", "id": "listCampaignProductDescriptions", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
43
|
+
{ "method": "post", "nativePath": "/strategies", "path": "/outreach/campaigns", "id": "createCampaign", "scope": "outreach:write", "group": "campaigns", "retry": "operation_id" },
|
|
44
|
+
{ "method": "get", "nativePath": "/strategies/:id", "path": "/outreach/campaigns/:id", "id": "getCampaign", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
45
|
+
{ "method": "put", "nativePath": "/strategies/:id", "path": "/outreach/campaigns/:id", "id": "updateCampaign", "scope": "outreach:write", "group": "campaigns", "retry": "state" },
|
|
46
|
+
{ "method": "post", "nativePath": "/strategies/:id/preview", "path": "/outreach/campaigns/:id/preview", "id": "previewCampaign", "scope": "outreach:read", "group": "campaigns", "retry": "safe" },
|
|
47
|
+
{ "method": "post", "nativePath": "/strategies/:id/contract-proposal", "path": "/outreach/campaigns/:id/contract-proposal", "id": "proposeCampaignContract", "scope": "outreach:read", "group": "campaigns", "retry": "safe" },
|
|
48
|
+
{ "method": "post", "nativePath": "/strategies/:id/launch", "path": "/outreach/campaigns/:id/launch", "id": "launchCampaign", "scope": "outreach:send", "group": "campaigns", "retry": "bound" },
|
|
49
|
+
{ "method": "post", "nativePath": "/strategies/:id/pause", "path": "/outreach/campaigns/:id/pause", "id": "pauseCampaign", "scope": "outreach:write", "group": "campaigns", "retry": "state" },
|
|
50
|
+
{ "method": "post", "nativePath": "/strategies/:id/resume", "path": "/outreach/campaigns/:id/resume", "id": "resumeCampaign", "scope": "outreach:send", "group": "campaigns", "retry": "state" },
|
|
51
|
+
{ "method": "get", "nativePath": "/review", "path": "/outreach/review", "id": "listReview", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
52
|
+
{ "method": "post", "nativePath": "/review/:messageId/deny", "path": "/outreach/review/:messageId/deny", "id": "denyMessage", "scope": "outreach:write", "group": "campaigns", "retry": "bound" },
|
|
53
|
+
{ "method": "post", "nativePath": "/review/:messageId/skip", "path": "/outreach/review/:messageId/skip", "id": "skipMessage", "scope": "outreach:write", "group": "campaigns", "retry": "bound" },
|
|
54
|
+
{ "method": "get", "nativePath": "/replies", "path": "/outreach/replies", "id": "listReplies", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
55
|
+
{ "method": "get", "nativePath": "/performance/summary", "path": "/outreach/analytics", "id": "getOutreachAnalytics", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
56
|
+
{ "method": "post", "nativePath": "/review/prepare-approval", "path": "/outreach/review/approve", "id": "approveMessages", "scope": "outreach:send", "group": "campaigns", "retry": "bound" },
|
|
57
|
+
{ "method": "post", "nativePath": "/conversations/:id/reply", "path": "/outreach/conversations/:id/reply", "id": "replyToConversation", "scope": "outreach:send", "group": "outreach", "retry": "request_id" },
|
|
58
|
+
{ "method": "post", "nativePath": "/strategies/:id/archive", "path": "/outreach/campaigns/:id/archive", "id": "archiveCampaign", "scope": "outreach:write", "group": "campaigns", "retry": "state" },
|
|
59
|
+
{ "method": "get", "nativePath": "/", "path": "/outreach/sequence-templates", "id": "listSequenceTemplates", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
60
|
+
{ "method": "get", "nativePath": "/:id", "path": "/outreach/sequence-templates/:id", "id": "getSequenceTemplate", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
61
|
+
{ "method": "get", "nativePath": "/from-campaign/:id", "path": "/outreach/campaigns/:id/sequence", "id": "getCampaignSequence", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
62
|
+
{ "method": "post", "nativePath": "/", "path": "/outreach/sequence-templates", "id": "createSequenceTemplate", "scope": "outreach:write", "group": "campaigns", "retry": "operation_id" },
|
|
63
|
+
{ "method": "post", "nativePath": "/:id/duplicate", "path": "/outreach/sequence-templates/:id/duplicate", "id": "duplicateSequenceTemplate", "scope": "outreach:write", "group": "campaigns", "retry": "operation_id" },
|
|
64
|
+
{ "method": "post", "nativePath": "/:id/archive", "path": "/outreach/sequence-templates/:id/archive", "id": "archiveSequenceTemplate", "scope": "outreach:write", "group": "campaigns", "retry": "state" },
|
|
65
|
+
{ "method": "get", "nativePath": "/strategies/:id/messaging", "path": "/outreach/campaigns/:id/messaging", "id": "getCampaignMessaging", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
66
|
+
{ "method": "put", "nativePath": "/strategies/:id/messaging", "path": "/outreach/campaigns/:id/messaging", "id": "updateCampaignMessaging", "scope": "outreach:send", "group": "campaigns", "retry": "operation_id" },
|
|
67
|
+
{ "method": "get", "nativePath": "/api/recurring-requests", "path": "/recurring-requests", "id": "listRecurringRequests", "scope": "lead_engine:read", "group": "workspace", "retry": "none" },
|
|
68
|
+
{ "method": "get", "nativePath": "/api/recurring-requests/options", "path": "/recurring-requests/options", "id": "getRecurringRequestOptions", "scope": "lead_engine:read", "group": "workspace", "retry": "none" },
|
|
69
|
+
{ "method": "post", "nativePath": "/api/recurring-requests", "path": "/recurring-requests", "id": "createRecurringRequest", "scope": "lead_engine:write", "group": "workspace", "retry": "operation_id", "additionalScopes": ["outreach:send"] },
|
|
70
|
+
{ "method": "patch", "nativePath": "/api/recurring-requests/setups/:id", "path": "/recurring-requests/setups/:id", "id": "updateRecurringSetup", "scope": "lead_engine:write", "group": "workspace", "retry": "bound", "additionalScopes": ["outreach:send"] },
|
|
71
|
+
{ "method": "patch", "nativePath": "/api/recurring-requests/:id", "path": "/recurring-requests/:id", "id": "updateRecurringRequest", "scope": "lead_engine:write", "group": "workspace", "retry": "bound", "additionalScopes": ["outreach:send"] },
|
|
72
|
+
{ "method": "get", "nativePath": "/queued", "path": "/outreach/queued", "id": "listQueuedMessages", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
73
|
+
{ "method": "get", "nativePath": "/queued/:messageId", "path": "/outreach/queued/:messageId", "id": "getQueuedMessage", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
74
|
+
{ "method": "get", "nativePath": "/queued/:messageId/outcome", "path": "/outreach/queued/:messageId/outcome", "id": "getMessageOutcome", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
75
|
+
{ "method": "post", "nativePath": "/queued/priority", "path": "/outreach/queued/priority", "id": "prioritizeMessages", "scope": "outreach:send", "group": "campaigns", "retry": "request_id" },
|
|
76
|
+
{ "method": "post", "nativePath": "/queued/:messageId/cancel", "path": "/outreach/queued/:messageId/cancel", "id": "cancelQueuedMessage", "scope": "outreach:write", "group": "campaigns", "retry": "bound" },
|
|
77
|
+
{ "method": "post", "nativePath": "/queued/:messageId/return-to-review", "path": "/outreach/queued/:messageId/return-to-review", "id": "returnQueuedMessageToReview", "scope": "outreach:write", "group": "campaigns", "retry": "bound" },
|
|
78
|
+
{ "method": "get", "nativePath": "/queued/:messageId/edit-session", "path": "/outreach/queued/:messageId/edit-session", "id": "getQueuedMessageEditSession", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
79
|
+
{ "method": "post", "nativePath": "/queued/:messageId/resume-unchanged", "path": "/outreach/queued/:messageId/resume-unchanged", "id": "resumeQueuedMessageUnchanged", "scope": "outreach:send", "group": "campaigns", "retry": "bound" },
|
|
80
|
+
{ "method": "post", "nativePath": "/queued/:messageId/send-now", "path": "/outreach/queued/:messageId/send-now", "id": "sendQueuedMessageNow", "scope": "outreach:send", "group": "campaigns", "retry": "bound" },
|
|
81
|
+
{ "method": "post", "nativePath": "/queued/:messageId/send-sooner", "path": "/outreach/queued/:messageId/send-sooner", "id": "sendQueuedMessageSooner", "scope": "outreach:send", "group": "campaigns", "retry": "bound" },
|
|
82
|
+
{ "method": "patch", "nativePath": "/strategies/:id/name", "path": "/outreach/campaigns/:id/name", "id": "renameCampaign", "scope": "outreach:write", "group": "campaigns", "retry": "state" },
|
|
83
|
+
{ "method": "post", "nativePath": "/strategies/:id/restore", "path": "/outreach/campaigns/:id/restore", "id": "restoreCampaign", "scope": "outreach:write", "group": "campaigns", "retry": "state" },
|
|
84
|
+
{ "method": "post", "nativePath": "/sender-allocations/preview", "path": "/outreach/sender-allocations/preview", "id": "previewSenderAllocations", "scope": "outreach:read", "group": "campaigns", "retry": "safe" },
|
|
85
|
+
{ "method": "put", "nativePath": "/strategies/:id/sending-schedule", "path": "/outreach/campaigns/:id/sending-schedule", "id": "updateCampaignSchedule", "scope": "outreach:send", "group": "campaigns", "retry": "state" },
|
|
86
|
+
{ "method": "get", "nativePath": "/strategies/:id/activity", "path": "/outreach/campaigns/:id/activity", "id": "getCampaignActivity", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
87
|
+
{ "method": "get", "nativePath": "/strategies/:id/decisions", "path": "/outreach/campaigns/:id/decisions", "id": "getCampaignDecisions", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
88
|
+
{ "method": "get", "nativePath": "/strategies/:id/reviews", "path": "/outreach/campaigns/:id/reviews", "id": "getCampaignReviews", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
89
|
+
{ "method": "get", "nativePath": "/audience-snapshots", "path": "/outreach/audiences", "id": "listAudiences", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
90
|
+
{ "method": "get", "nativePath": "/audience-snapshots/:id/funnel", "path": "/outreach/audiences/:id/funnel", "id": "getAudienceFunnel", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
91
|
+
{ "method": "get", "nativePath": "/audience-snapshots/:snapshotId/preflight", "path": "/outreach/audiences/:snapshotId/preflight", "id": "getAudiencePreflight", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
92
|
+
{ "method": "post", "nativePath": "/strategies/:id/message-preview", "path": "/outreach/campaigns/:id/message-preview", "id": "previewCampaignMessage", "scope": "outreach:read", "group": "campaigns", "retry": "safe" },
|
|
93
|
+
{ "method": "post", "nativePath": "/safety-attention/delivery-unknown/:messageId/check", "path": "/outreach/safety-attention/delivery-unknown/:messageId/check", "id": "checkMessageDelivery", "scope": "outreach:write", "group": "campaigns", "retry": "state" },
|
|
94
|
+
{ "method": "post", "nativePath": "/api/icp-profiles", "path": "/icps", "id": "createManualIcp", "scope": "lead_engine:write", "group": "workspace", "retry": "header" },
|
|
95
|
+
{ "method": "get", "nativePath": "/api/icp-profiles/:icpId/usage", "path": "/icps/:icpId/usage", "id": "getIcpUsage", "scope": "lead_engine:read", "group": "workspace", "retry": "none" },
|
|
96
|
+
{ "method": "get", "nativePath": "/strategies/:id/description", "path": "/outreach/campaigns/:id/description", "id": "getCampaignDescription", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
97
|
+
{ "method": "put", "nativePath": "/strategies/:id/description", "path": "/outreach/campaigns/:id/description", "id": "updateCampaignDescription", "scope": "outreach:send", "group": "campaigns", "retry": "operation_id" },
|
|
98
|
+
{ "method": "get", "nativePath": "/performance/filters", "path": "/outreach/analytics/filters", "id": "getAnalyticsFilters", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
99
|
+
{ "method": "get", "nativePath": "/performance/analytics", "path": "/outreach/analytics/report", "id": "getAnalyticsReport", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
100
|
+
{ "method": "post", "nativePath": "/api/icp-profiles/lead-engine-audience", "path": "/icps/lead-engine-audience", "id": "saveLeadEngineAudience", "scope": "lead_engine:write", "group": "workspace", "retry": "header" },
|
|
101
|
+
{ "method": "post", "nativePath": "/api/icp-profiles/from-scan", "path": "/icps/from-scan", "id": "createIcpFromScan", "scope": "lead_engine:write", "group": "workspace", "retry": "header" },
|
|
102
|
+
{ "method": "post", "nativePath": "/api/icp-profiles/:icpId/apply-preview", "path": "/icps/:icpId/apply-preview", "id": "previewIcpApplication", "scope": "lead_engine:read", "group": "workspace", "retry": "safe" },
|
|
103
|
+
{ "method": "post", "nativePath": "/api/icp-profiles/:icpId/promote-overrides", "path": "/icps/:icpId/promote-overrides", "id": "promoteIcpOverrides", "scope": "lead_engine:write", "group": "workspace", "retry": "header" },
|
|
104
|
+
{ "method": "get", "nativePath": "/api/company-pipeline/deal-summaries", "path": "/pipeline/deal-summaries", "id": "getDealSummaries", "scope": "pipeline:read", "group": "workspace", "retry": "none" },
|
|
105
|
+
{ "method": "get", "nativePath": "/api/revenue-insights", "path": "/pipeline/revenue-insights", "id": "getRevenueInsights", "scope": "pipeline:read", "group": "workspace", "retry": "none" },
|
|
106
|
+
{ "method": "get", "nativePath": "/api/company-pipeline/cards/:cardId/deals", "path": "/pipeline/companies/:cardId/deals", "id": "listCompanyDeals", "scope": "pipeline:read", "group": "workspace", "retry": "none" },
|
|
107
|
+
{ "method": "patch", "nativePath": "/api/company-pipeline/deals/:dealId/pin", "path": "/pipeline/deals/:dealId/pin", "id": "pinDeal", "scope": "pipeline:write", "group": "workspace", "retry": "state" },
|
|
108
|
+
{ "method": "patch", "nativePath": "/api/company-pipeline/deals/:dealId/attribution", "path": "/pipeline/deals/:dealId/attribution", "id": "updateDealAttribution", "scope": "pipeline:write", "group": "workspace", "retry": "state" },
|
|
109
|
+
{ "method": "patch", "nativePath": "/api/company-pipeline/deals/actions/bulk-stage", "path": "/pipeline/deals/actions/bulk-stage", "id": "moveDeals", "scope": "pipeline:write", "group": "workspace", "retry": "body" },
|
|
110
|
+
{ "method": "patch", "nativePath": "/api/company-pipeline/contact-engagements/actions/bulk-stage", "path": "/pipeline/contacts/actions/bulk-stage", "id": "moveContacts", "scope": "pipeline:write", "group": "workspace", "retry": "body" },
|
|
111
|
+
{ "method": "post", "nativePath": "/api/company-pipeline/contact-engagements/:engagementId/qualification-deal/undo", "path": "/pipeline/contacts/:engagementId/qualification-deal/undo", "id": "undoContactQualification", "scope": "pipeline:write", "group": "workspace", "retry": "body" },
|
|
112
|
+
{ "method": "get", "nativePath": "/api/company-pipeline/cards/:cardId/note-counts", "path": "/pipeline/companies/:cardId/note-counts", "id": "getCompanyNoteCounts", "scope": "pipeline:read", "group": "workspace", "retry": "none" },
|
|
113
|
+
{ "method": "post", "nativePath": "/api/company-pipeline/cards/:cardId/notes/clear", "path": "/pipeline/companies/:cardId/notes/archive", "id": "archiveCompanyNotes", "scope": "pipeline:write", "group": "workspace", "retry": "state" },
|
|
114
|
+
{ "method": "post", "nativePath": "/strategies/:id/audience/preview", "path": "/outreach/campaigns/:id/audience/preview", "id": "previewCampaignAudience", "scope": "outreach:write", "group": "campaigns", "retry": "operation_id", "retryIdentity": "campaignAudience" },
|
|
115
|
+
{ "method": "post", "nativePath": "/strategies/:id/audience/add", "path": "/outreach/campaigns/:id/audience/add", "id": "addCampaignAudience", "scope": "outreach:send", "group": "campaigns", "retry": "operation_id", "retryIdentity": "campaignAudience" },
|
|
116
|
+
{ "method": "get", "nativePath": "/strategies/:id/audience/contacts", "path": "/outreach/campaigns/:id/audience/contacts", "id": "listCampaignContacts", "scope": "outreach:read", "group": "campaigns", "retry": "none" },
|
|
117
|
+
{ "method": "post", "nativePath": "/strategies/:id/audience/contacts/:enrollmentId/remove", "path": "/outreach/campaigns/:id/audience/contacts/:enrollmentId/remove", "id": "removePendingCampaignContact", "scope": "outreach:write", "group": "campaigns", "retry": "state" },
|
|
118
|
+
{ "method": "post", "nativePath": "/conversations/:id/sequence", "path": "/outreach/conversations/:id/sequence", "id": "updateConversationSequence", "scope": "outreach:send", "group": "campaigns", "retry": "state" },
|
|
119
|
+
{ "method": "put", "nativePath": "/strategies/:id/contact-cap", "path": "/outreach/campaigns/:id/contact-cap", "id": "updateCampaignContactCap", "scope": "outreach:send", "group": "campaigns", "retry": "operation_id" },
|
|
120
|
+
{ "method": "put", "nativePath": "/strategies/:id/sender-allocations", "path": "/outreach/campaigns/:id/sender-allocations", "id": "updateSenderAllocations", "scope": "outreach:send", "group": "campaigns", "retry": "state" },
|
|
121
|
+
{ "method": "put", "nativePath": "/strategies/:id/sending-days", "path": "/outreach/campaigns/:id/sending-days", "id": "updateSendingDays", "scope": "outreach:send", "group": "campaigns", "retry": "state" },
|
|
122
|
+
{ "method": "post", "nativePath": "/strategies/:id/change-mode", "path": "/outreach/campaigns/:id/change-mode", "id": "changeCampaignMode", "scope": "outreach:send", "group": "campaigns", "retry": "bound" },
|
|
123
|
+
{ "method": "post", "nativePath": "/strategies/:id/discard", "path": "/outreach/campaigns/:id/discard", "id": "discardCampaign", "scope": "outreach:write", "group": "campaigns", "retry": "state" },
|
|
124
|
+
{ "method": "post", "nativePath": "/strategies/:id/drafts/restore", "path": "/outreach/campaigns/:id/drafts/restore", "id": "restoreCampaignDrafts", "scope": "outreach:write", "group": "campaigns", "retry": "state" },
|
|
125
|
+
{ "method": "post", "nativePath": "/safety-attention/delivery-unknown/:messageId/resolve", "path": "/outreach/safety-attention/delivery-unknown/:messageId/resolve", "id": "resolveUnknownDelivery", "scope": "outreach:send", "group": "campaigns", "retry": "bound" },
|
|
126
|
+
{ "method": "post", "nativePath": "/review/bulk-approve", "path": "/outreach/review/bulk-approve", "id": "bulkApproveMessages", "scope": "outreach:send", "group": "campaigns", "retry": "bound" },
|
|
127
|
+
{ "method": "post", "nativePath": "/review/bulk-deny", "path": "/outreach/review/bulk-deny", "id": "bulkDenyMessages", "scope": "outreach:write", "group": "campaigns", "retry": "bound" },
|
|
128
|
+
{ "method": "post", "nativePath": "/review/bulk-skip", "path": "/outreach/review/bulk-skip", "id": "bulkSkipMessages", "scope": "outreach:write", "group": "campaigns", "retry": "bound" },
|
|
129
|
+
{ "method": "post", "nativePath": "/review/:messageId/recheck-autopilot", "path": "/outreach/review/:messageId/recheck-autopilot", "id": "recheckMessageAutopilot", "scope": "outreach:send", "group": "campaigns", "retry": "bound" }
|
|
130
|
+
];
|
|
131
|
+
var bodyScopeRules = (operation) => Object.entries(operation.bodyScopes ?? {});
|
|
132
|
+
var requiredScopes = (operation, body) => [
|
|
133
|
+
operation.scope,
|
|
134
|
+
...operation.additionalScopes ?? [],
|
|
135
|
+
...bodyScopeRules(operation).flatMap(([field, scopes]) => body && typeof body === "object" && Object.prototype.hasOwnProperty.call(body, field) ? scopes : [])
|
|
136
|
+
].filter(Boolean);
|
|
137
|
+
var LEGACY_API_OPERATIONS = [
|
|
138
|
+
{ method: "get", path: "/pricing", id: "getPricing", scope: "", retry: "none" },
|
|
139
|
+
{ method: "get", path: "/me", id: "getApiIdentity", scope: "", retry: "none" },
|
|
140
|
+
{ method: "get", path: "/credits", id: "getCredits", scope: "credits:read", retry: "none" },
|
|
141
|
+
{ method: "get", path: "/reference/countries", id: "listCountries", scope: "", retry: "none" },
|
|
142
|
+
{ method: "get", path: "/reference/states", id: "listStates", scope: "", retry: "none" },
|
|
143
|
+
{ method: "get", path: "/reference/cities", id: "listCities", scope: "", retry: "none" },
|
|
144
|
+
{ method: "get", path: "/reference/company-sizes", id: "listCompanySizes", scope: "", retry: "none" },
|
|
145
|
+
{ method: "get", path: "/reference/lead-types", id: "listLeadTypes", scope: "", retry: "none" },
|
|
146
|
+
{ method: "get", path: "/lead-requests", id: "listLeadRequests", scope: "lead_requests:read", retry: "none" },
|
|
147
|
+
{ method: "post", path: "/lead-requests", id: "createLeadRequest", scope: "lead_requests:write", additionalScopes: ["leads:read"], retry: "header" },
|
|
148
|
+
{ method: "get", path: "/lead-requests/:id", id: "getLeadRequest", scope: "lead_requests:read", retry: "none" },
|
|
149
|
+
{ method: "post", path: "/company-requests", id: "createCompanyRequest", scope: "company_requests:write", additionalScopes: ["company_requests:read"], retry: "header" },
|
|
150
|
+
{ method: "get", path: "/company-requests/:id", id: "getCompanyRequest", scope: "company_requests:read", retry: "none" }
|
|
151
|
+
];
|
|
152
|
+
var CLIENT_OPERATIONS = [...WORKSPACE_OPERATIONS, ...LEGACY_API_OPERATIONS.map((operation) => ({ ...operation, group: "legacy", nativePath: operation.path }))];
|
|
153
|
+
|
|
154
|
+
// shared/leadpoet-client.ts
|
|
155
|
+
var LeadpoetError = class extends Error {
|
|
156
|
+
constructor(message, status, code, requestId, details, retryAfterSeconds) {
|
|
157
|
+
super(message);
|
|
158
|
+
this.status = status;
|
|
159
|
+
this.code = code;
|
|
160
|
+
this.requestId = requestId;
|
|
161
|
+
this.details = details;
|
|
162
|
+
this.retryAfterSeconds = retryAfterSeconds;
|
|
163
|
+
this.name = "LeadpoetError";
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
var object = (value) => Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
167
|
+
var keyRequired = (retry) => ["header", "header_uuid", "operation_id", "request_id", "body"].includes(retry);
|
|
168
|
+
var operations = CLIENT_OPERATIONS.map(({ nativePath: _native, group: _group, ...operation }) => operation);
|
|
169
|
+
var LeadpoetClient = class {
|
|
170
|
+
#apiKey;
|
|
171
|
+
constructor(options) {
|
|
172
|
+
const url = new URL(options.baseUrl);
|
|
173
|
+
if (url.username || url.password || url.search || url.hash || !(url.protocol === "https:" || url.protocol === "http:" && ["localhost", "127.0.0.1", "[::1]"].includes(url.hostname))) {
|
|
174
|
+
throw new Error("Use an HTTPS API base URL, or HTTP on localhost; credentials, query strings and fragments are forbidden");
|
|
175
|
+
}
|
|
176
|
+
if (url.pathname.replace(/\/$/, "") !== "/api/v1") throw new Error("The API base URL must end in /api/v1");
|
|
177
|
+
if (!options.apiKey || /\s/.test(options.apiKey)) throw new LeadpoetError("Set LEADPOET_API_KEY to a valid API key", 401, "authentication_required");
|
|
178
|
+
this.baseUrl = url.href.replace(/\/$/, "");
|
|
179
|
+
this.#apiKey = options.apiKey;
|
|
180
|
+
this.fetcher = options.fetch ?? fetch;
|
|
181
|
+
this.timeoutMs = options.timeoutMs ?? 3e4;
|
|
182
|
+
if (!Number.isSafeInteger(this.timeoutMs) || this.timeoutMs < 1 || this.timeoutMs > 3e5) throw new Error("timeoutMs must be an integer between 1 and 300000");
|
|
183
|
+
}
|
|
184
|
+
async openapi(signal) {
|
|
185
|
+
const { value: result, requestId } = await this.request("/openapi.json", "GET", void 0, void 0, signal);
|
|
186
|
+
if (!object(result) || !object(result.paths)) throw new LeadpoetError("Invalid OpenAPI response", 502, "invalid_response", requestId);
|
|
187
|
+
return result;
|
|
188
|
+
}
|
|
189
|
+
async call(operationId, input = {}) {
|
|
190
|
+
const operation = CLIENT_OPERATIONS.find((item) => item.id === operationId);
|
|
191
|
+
if (!operation) throw new Error("Unknown operation; use operations to discover supported calls");
|
|
192
|
+
if (requiredScopes(operation, input.body).includes("outreach:send") && input.allowSend !== true) throw new Error("This operation authorizes delivery; explicit allowSend is required");
|
|
193
|
+
const expected = [...operation.path.matchAll(/:([A-Za-z]+)/g)].map((match) => match[1]);
|
|
194
|
+
if (Object.keys(input.params ?? {}).some((name) => !expected.includes(name))) throw new Error("Unexpected path parameter");
|
|
195
|
+
let path = operation.path;
|
|
196
|
+
for (const name of expected) {
|
|
197
|
+
const value = input.params?.[name];
|
|
198
|
+
if (!value || !/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i.test(value)) throw new Error(`Expected UUID parameter: ${name}`);
|
|
199
|
+
path = path.replace(`:${name}`, encodeURIComponent(value));
|
|
200
|
+
}
|
|
201
|
+
if (keyRequired(operation.retry) && !input.idempotencyKey) throw new Error("This operation requires a persisted idempotencyKey");
|
|
202
|
+
if (input.idempotencyKey && !/^[A-Za-z0-9._:-]{8,160}$/.test(input.idempotencyKey)) throw new Error("Invalid idempotencyKey");
|
|
203
|
+
if (operation.method === "get" && input.body !== void 0) throw new Error("Read operations do not accept a body");
|
|
204
|
+
const query = new URLSearchParams();
|
|
205
|
+
for (const [name, value] of Object.entries(input.query ?? {})) {
|
|
206
|
+
if (Array.isArray(value)) for (const item of value) query.append(name, item);
|
|
207
|
+
else query.set(name, String(value));
|
|
208
|
+
}
|
|
209
|
+
if (query.size) path += `?${query}`;
|
|
210
|
+
const { value: result, requestId } = await this.request(path, operation.method.toUpperCase(), input.body, input.idempotencyKey, input.signal, operation.group === "legacy");
|
|
211
|
+
if (!object(result) || !("data" in result) || typeof result.request_id !== "string") throw new LeadpoetError("Invalid API response", 502, "invalid_response", requestId);
|
|
212
|
+
return result;
|
|
213
|
+
}
|
|
214
|
+
/** Bounded paging for the request history contract. Other cursors are operation-specific. */
|
|
215
|
+
async *requestPages(options = {}) {
|
|
216
|
+
const max = options.maxPages ?? 100;
|
|
217
|
+
if (!Number.isInteger(max) || max < 1 || max > 1e3) throw new Error("maxPages must be between 1 and 1000");
|
|
218
|
+
const start = options.page ?? 1, limit = options.limit ?? 25;
|
|
219
|
+
if (!Number.isInteger(start) || start < 1 || start > 1e5 || !Number.isInteger(limit) || limit < 1 || limit > 100) throw new Error("Invalid request pagination bounds");
|
|
220
|
+
for (let page = start, count = 0; count < max; page++, count++) {
|
|
221
|
+
const result = await this.call("listRequests", { query: { page, limit }, signal: options.signal });
|
|
222
|
+
if (!object(result.data) || typeof result.data.total !== "number" || !Number.isSafeInteger(result.data.total) || result.data.total < 0 || !Array.isArray(result.data.queries)) {
|
|
223
|
+
throw new LeadpoetError("Invalid request pagination metadata", 502, "invalid_response", result.request_id);
|
|
224
|
+
}
|
|
225
|
+
yield result;
|
|
226
|
+
if (page * limit >= result.data.total) return;
|
|
227
|
+
}
|
|
228
|
+
throw new LeadpoetError("Pagination limit reached; resume from the last page", 0, "pagination_limit");
|
|
229
|
+
}
|
|
230
|
+
async waitForRequest(id, options = {}) {
|
|
231
|
+
const timeout = options.timeoutMs ?? 3e5, interval = options.intervalMs ?? 2e3;
|
|
232
|
+
if (!Number.isSafeInteger(timeout) || timeout < 1 || timeout > 36e5 || !Number.isSafeInteger(interval) || interval < 1 || interval > 36e5) throw new Error("Invalid polling bounds");
|
|
233
|
+
const signal = AbortSignal.any([AbortSignal.timeout(timeout), ...options.signal ? [options.signal] : []]);
|
|
234
|
+
while (true) {
|
|
235
|
+
const result = await this.call("getRequest", { params: { id }, signal });
|
|
236
|
+
if (!object(result.data) || typeof result.data.status !== "string" || !result.data.status.trim()) {
|
|
237
|
+
throw new LeadpoetError("Invalid request status response", 502, "invalid_response", result.request_id);
|
|
238
|
+
}
|
|
239
|
+
if (["ready", "error", "completed", "failed", "cancelled", "canceled"].includes(String(result.data.status))) return result;
|
|
240
|
+
if (!["pending", "processing"].includes(result.data.status)) {
|
|
241
|
+
throw new LeadpoetError("Invalid request status response", 502, "invalid_response", result.request_id);
|
|
242
|
+
}
|
|
243
|
+
await new Promise((resolve, reject) => {
|
|
244
|
+
const onAbort = () => {
|
|
245
|
+
clearTimeout(timer);
|
|
246
|
+
reject(signal.reason);
|
|
247
|
+
};
|
|
248
|
+
const timer = setTimeout(() => {
|
|
249
|
+
signal.removeEventListener("abort", onAbort);
|
|
250
|
+
resolve();
|
|
251
|
+
}, interval);
|
|
252
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
253
|
+
if (signal.aborted) onAbort();
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
async request(path, method, body, idempotencyKey, signal, wrapLegacy = false) {
|
|
258
|
+
const deadline = AbortSignal.any([AbortSignal.timeout(this.timeoutMs), ...signal ? [signal] : []]);
|
|
259
|
+
const response = await this.fetcher(this.baseUrl + path, {
|
|
260
|
+
method,
|
|
261
|
+
redirect: "error",
|
|
262
|
+
credentials: "omit",
|
|
263
|
+
headers: { Authorization: `Bearer ${this.#apiKey}`, Accept: "application/json", ...body ? { "Content-Type": "application/json" } : {}, ...idempotencyKey ? { "Idempotency-Key": idempotencyKey } : {} },
|
|
264
|
+
...body ? { body: JSON.stringify(body) } : {},
|
|
265
|
+
signal: deadline
|
|
266
|
+
});
|
|
267
|
+
const retry = response.headers.get("retry-after");
|
|
268
|
+
const seconds = retry ? /^\d+$/.test(retry) ? Number(retry) : Math.max(0, Math.ceil((Date.parse(retry) - Date.now()) / 1e3)) : void 0;
|
|
269
|
+
const retryAfterSeconds = Number.isFinite(seconds) ? seconds : void 0;
|
|
270
|
+
let value;
|
|
271
|
+
let cancelBody = () => {
|
|
272
|
+
};
|
|
273
|
+
try {
|
|
274
|
+
value = await new Promise((resolve, reject) => {
|
|
275
|
+
cancelBody = () => reject(deadline.reason);
|
|
276
|
+
deadline.addEventListener("abort", cancelBody, { once: true });
|
|
277
|
+
if (deadline.aborted) {
|
|
278
|
+
cancelBody();
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
response.json().then(resolve, reject);
|
|
282
|
+
});
|
|
283
|
+
} catch {
|
|
284
|
+
deadline.throwIfAborted();
|
|
285
|
+
throw new LeadpoetError("The API returned a non-JSON response", response.ok ? 502 : response.status, "invalid_response", response.headers.get("x-request-id") ?? void 0, void 0, retryAfterSeconds);
|
|
286
|
+
} finally {
|
|
287
|
+
deadline.removeEventListener("abort", cancelBody);
|
|
288
|
+
}
|
|
289
|
+
if (!response.ok) {
|
|
290
|
+
const error = object(value) && object(value.error) ? value.error : {};
|
|
291
|
+
throw new LeadpoetError(
|
|
292
|
+
typeof error.message === "string" ? error.message : "API request failed",
|
|
293
|
+
response.status,
|
|
294
|
+
typeof error.code === "string" ? error.code : "request_failed",
|
|
295
|
+
typeof error.request_id === "string" ? error.request_id : response.headers.get("x-request-id") ?? void 0,
|
|
296
|
+
error.details,
|
|
297
|
+
retryAfterSeconds
|
|
298
|
+
);
|
|
299
|
+
}
|
|
300
|
+
const requestId = response.headers.get("x-request-id") ?? void 0;
|
|
301
|
+
return { value: wrapLegacy ? { data: value, request_id: requestId ?? "" } : value, requestId };
|
|
302
|
+
}
|
|
303
|
+
};
|
|
304
|
+
export {
|
|
305
|
+
LeadpoetClient,
|
|
306
|
+
LeadpoetError,
|
|
307
|
+
operations
|
|
308
|
+
};
|
|
309
|
+
//# sourceMappingURL=client.js.map
|
package/client.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../shared/workspace-operations.ts", "../../shared/leadpoet-client.ts"],
|
|
4
|
+
"sourcesContent": ["/** Explicit public surface: adding an app route never exposes it automatically. */\nexport const WORKSPACE_OPERATIONS = [\n {\"method\": \"post\", \"nativePath\": \"/api/requests\", \"path\": \"/requests\", \"id\": \"createRequest\", \"scope\": \"lead_engine:write\", \"bodyScopes\": { \"recurrence\": [\"outreach:send\"] }, \"group\": \"workspace\", \"retry\": \"header\"},\n {\"method\": \"get\", \"nativePath\": \"/api/requests/contact-settings\", \"path\": \"/requests/contact-settings\", \"id\": \"getContactAllowance\", \"scope\": \"lead_engine:read\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/api/queries\", \"path\": \"/requests\", \"id\": \"listRequests\", \"scope\": \"lead_engine:read\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/api/queries/:id\", \"path\": \"/requests/:id\", \"id\": \"getRequest\", \"scope\": \"lead_engine:read\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/api/company-pipeline\", \"path\": \"/pipeline\", \"id\": \"getPipeline\", \"scope\": \"pipeline:read\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"patch\", \"nativePath\": \"/api/company-pipeline/cards/:id\", \"path\": \"/pipeline/companies/:id\", \"id\": \"updateCompany\", \"scope\": \"pipeline:write\", \"group\": \"workspace\", \"retry\": \"state\"},\n {\"method\": \"get\", \"nativePath\": \"/api/company-pipeline/contact-enrichment/readiness\", \"path\": \"/pipeline/contact-enrichment/readiness\", \"id\": \"getContactReadiness\", \"scope\": \"pipeline:read\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"post\", \"nativePath\": \"/api/company-pipeline/cards/:id/contact-requests\", \"path\": \"/pipeline/companies/:id/contact-requests\", \"id\": \"requestContacts\", \"scope\": \"pipeline:write\", \"group\": \"workspace\", \"retry\": \"header\"},\n {\"method\": \"get\", \"nativePath\": \"/api/company-pipeline/cards/:cardId/contact-requests/:requestId\", \"path\": \"/pipeline/companies/:cardId/contact-requests/:requestId\", \"id\": \"getContactRequest\", \"scope\": \"pipeline:read\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/api/company-pipeline/cards/:cardId/contact-requests/latest\", \"path\": \"/pipeline/companies/:cardId/contact-requests/latest\", \"id\": \"getLatestContactRequest\", \"scope\": \"pipeline:read\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/api/icp-profiles\", \"path\": \"/icps\", \"id\": \"listIcps\", \"scope\": \"lead_engine:read\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"post\", \"nativePath\": \"/api/icp-profiles/audiences\", \"path\": \"/icps/audiences\", \"id\": \"createIcp\", \"scope\": \"lead_engine:write\", \"group\": \"workspace\", \"retry\": \"header\"},\n {\"method\": \"get\", \"nativePath\": \"/api/icp-profiles/:icpId\", \"path\": \"/icps/:icpId\", \"id\": \"getIcp\", \"scope\": \"lead_engine:read\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/api/icp-profiles/:icpId/versions\", \"path\": \"/icps/:icpId/versions\", \"id\": \"listIcpVersions\", \"scope\": \"lead_engine:read\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"post\", \"nativePath\": \"/api/icp-profiles/:icpId/draft\", \"path\": \"/icps/:icpId/draft\", \"id\": \"createIcpDraft\", \"scope\": \"lead_engine:write\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"patch\", \"nativePath\": \"/api/icp-profiles/:icpId/drafts/:draftId\", \"path\": \"/icps/:icpId/drafts/:draftId\", \"id\": \"updateIcpDraft\", \"scope\": \"lead_engine:write\", \"group\": \"workspace\", \"retry\": \"state\"},\n {\"method\": \"post\", \"nativePath\": \"/api/icp-profiles/:icpId/drafts/:draftId/publish\", \"path\": \"/icps/:icpId/drafts/:draftId/publish\", \"id\": \"publishIcp\", \"scope\": \"lead_engine:write\", \"group\": \"workspace\", \"retry\": \"header\"},\n {\"method\": \"post\", \"nativePath\": \"/api/icp-profiles/:icpId/archive\", \"path\": \"/icps/:icpId/archive\", \"id\": \"archiveIcp\", \"scope\": \"lead_engine:write\", \"group\": \"workspace\", \"retry\": \"header\"},\n {\"method\": \"get\", \"nativePath\": \"/api/company-pipeline/contact-engagements\", \"path\": \"/pipeline/contacts\", \"id\": \"listPipelineContacts\", \"scope\": \"pipeline:read\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"patch\", \"nativePath\": \"/api/company-pipeline/contact-engagements/:engagementId/stage\", \"path\": \"/pipeline/contacts/:engagementId/stage\", \"id\": \"moveContact\", \"scope\": \"pipeline:write\", \"group\": \"workspace\", \"retry\": \"body\"},\n {\"method\": \"patch\", \"nativePath\": \"/api/company-pipeline/contact-engagements/:engagementId/pin\", \"path\": \"/pipeline/contacts/:engagementId/pin\", \"id\": \"pinContact\", \"scope\": \"pipeline:write\", \"group\": \"workspace\", \"retry\": \"state\"},\n {\"method\": \"get\", \"nativePath\": \"/api/company-pipeline/deals\", \"path\": \"/pipeline/deals\", \"id\": \"listDeals\", \"scope\": \"pipeline:read\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"post\", \"nativePath\": \"/api/company-pipeline/cards/:cardId/deals\", \"path\": \"/pipeline/companies/:cardId/deals\", \"id\": \"createDeal\", \"scope\": \"pipeline:write\", \"group\": \"workspace\", \"retry\": \"header\"},\n {\"method\": \"patch\", \"nativePath\": \"/api/company-pipeline/deals/:dealId\", \"path\": \"/pipeline/deals/:dealId\", \"id\": \"updateDeal\", \"scope\": \"pipeline:write\", \"group\": \"workspace\", \"retry\": \"state\"},\n {\"method\": \"patch\", \"nativePath\": \"/api/company-pipeline/deals/:dealId/stage\", \"path\": \"/pipeline/deals/:dealId/stage\", \"id\": \"moveDeal\", \"scope\": \"pipeline:write\", \"group\": \"workspace\", \"retry\": \"body\"},\n {\"method\": \"get\", \"nativePath\": \"/api/company-pipeline/pipeline-config\", \"path\": \"/pipeline/configuration\", \"id\": \"getPipelineConfiguration\", \"scope\": \"pipeline:read\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/api/company-pipeline/cards/:cardId/notes\", \"path\": \"/pipeline/companies/:cardId/notes\", \"id\": \"listCompanyNotes\", \"scope\": \"pipeline:read\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"post\", \"nativePath\": \"/api/company-pipeline/cards/:cardId/notes\", \"path\": \"/pipeline/companies/:cardId/notes\", \"id\": \"createCompanyNote\", \"scope\": \"pipeline:write\", \"group\": \"workspace\", \"retry\": \"header_uuid\"},\n {\"method\": \"get\", \"nativePath\": \"/accounts\", \"path\": \"/outreach/accounts\", \"id\": \"listSendingAccounts\", \"scope\": \"outreach:read\", \"group\": \"outreach\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/conversations\", \"path\": \"/outreach/conversations\", \"id\": \"listConversations\", \"scope\": \"outreach:read\", \"group\": \"outreach\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/workspace-profile\", \"path\": \"/outreach/profile\", \"id\": \"getOutreachProfile\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"put\", \"nativePath\": \"/workspace-profile\", \"path\": \"/outreach/profile\", \"id\": \"updateOutreachProfile\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"state\"},\n {\"method\": \"get\", \"nativePath\": \"/audience-sources\", \"path\": \"/outreach/audience-sources\", \"id\": \"listAudienceSources\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/audience-contacts\", \"path\": \"/outreach/audience-contacts\", \"id\": \"listAudienceContacts\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"post\", \"nativePath\": \"/audience-snapshots/preview-selection\", \"path\": \"/outreach/audiences/preview\", \"id\": \"previewAudience\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"operation_id\"},\n {\"method\": \"post\", \"nativePath\": \"/audience-snapshots/from-selection\", \"path\": \"/outreach/audiences\", \"id\": \"createAudience\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"operation_id\"},\n {\"method\": \"get\", \"nativePath\": \"/strategies\", \"path\": \"/outreach/campaigns\", \"id\": \"listCampaigns\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/campaign-product-descriptions\", \"path\": \"/outreach/campaign-product-descriptions\", \"id\": \"listCampaignProductDescriptions\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"post\", \"nativePath\": \"/strategies\", \"path\": \"/outreach/campaigns\", \"id\": \"createCampaign\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"operation_id\"},\n {\"method\": \"get\", \"nativePath\": \"/strategies/:id\", \"path\": \"/outreach/campaigns/:id\", \"id\": \"getCampaign\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"put\", \"nativePath\": \"/strategies/:id\", \"path\": \"/outreach/campaigns/:id\", \"id\": \"updateCampaign\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"state\"},\n {\"method\": \"post\", \"nativePath\": \"/strategies/:id/preview\", \"path\": \"/outreach/campaigns/:id/preview\", \"id\": \"previewCampaign\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"safe\"},\n {\"method\": \"post\", \"nativePath\": \"/strategies/:id/contract-proposal\", \"path\": \"/outreach/campaigns/:id/contract-proposal\", \"id\": \"proposeCampaignContract\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"safe\"},\n {\"method\": \"post\", \"nativePath\": \"/strategies/:id/launch\", \"path\": \"/outreach/campaigns/:id/launch\", \"id\": \"launchCampaign\", \"scope\": \"outreach:send\", \"group\": \"campaigns\", \"retry\": \"bound\"},\n {\"method\": \"post\", \"nativePath\": \"/strategies/:id/pause\", \"path\": \"/outreach/campaigns/:id/pause\", \"id\": \"pauseCampaign\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"state\"},\n {\"method\": \"post\", \"nativePath\": \"/strategies/:id/resume\", \"path\": \"/outreach/campaigns/:id/resume\", \"id\": \"resumeCampaign\", \"scope\": \"outreach:send\", \"group\": \"campaigns\", \"retry\": \"state\"},\n {\"method\": \"get\", \"nativePath\": \"/review\", \"path\": \"/outreach/review\", \"id\": \"listReview\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"post\", \"nativePath\": \"/review/:messageId/deny\", \"path\": \"/outreach/review/:messageId/deny\", \"id\": \"denyMessage\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"bound\"},\n {\"method\": \"post\", \"nativePath\": \"/review/:messageId/skip\", \"path\": \"/outreach/review/:messageId/skip\", \"id\": \"skipMessage\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"bound\"},\n {\"method\": \"get\", \"nativePath\": \"/replies\", \"path\": \"/outreach/replies\", \"id\": \"listReplies\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/performance/summary\", \"path\": \"/outreach/analytics\", \"id\": \"getOutreachAnalytics\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"post\", \"nativePath\": \"/review/prepare-approval\", \"path\": \"/outreach/review/approve\", \"id\": \"approveMessages\", \"scope\": \"outreach:send\", \"group\": \"campaigns\", \"retry\": \"bound\"},\n {\"method\": \"post\", \"nativePath\": \"/conversations/:id/reply\", \"path\": \"/outreach/conversations/:id/reply\", \"id\": \"replyToConversation\", \"scope\": \"outreach:send\", \"group\": \"outreach\", \"retry\": \"request_id\"},\n {\"method\": \"post\", \"nativePath\": \"/strategies/:id/archive\", \"path\": \"/outreach/campaigns/:id/archive\", \"id\": \"archiveCampaign\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"state\"},\n {\"method\": \"get\", \"nativePath\": \"/\", \"path\": \"/outreach/sequence-templates\", \"id\": \"listSequenceTemplates\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/:id\", \"path\": \"/outreach/sequence-templates/:id\", \"id\": \"getSequenceTemplate\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/from-campaign/:id\", \"path\": \"/outreach/campaigns/:id/sequence\", \"id\": \"getCampaignSequence\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"post\", \"nativePath\": \"/\", \"path\": \"/outreach/sequence-templates\", \"id\": \"createSequenceTemplate\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"operation_id\"},\n {\"method\": \"post\", \"nativePath\": \"/:id/duplicate\", \"path\": \"/outreach/sequence-templates/:id/duplicate\", \"id\": \"duplicateSequenceTemplate\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"operation_id\"},\n {\"method\": \"post\", \"nativePath\": \"/:id/archive\", \"path\": \"/outreach/sequence-templates/:id/archive\", \"id\": \"archiveSequenceTemplate\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"state\"},\n {\"method\": \"get\", \"nativePath\": \"/strategies/:id/messaging\", \"path\": \"/outreach/campaigns/:id/messaging\", \"id\": \"getCampaignMessaging\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"put\", \"nativePath\": \"/strategies/:id/messaging\", \"path\": \"/outreach/campaigns/:id/messaging\", \"id\": \"updateCampaignMessaging\", \"scope\": \"outreach:send\", \"group\": \"campaigns\", \"retry\": \"operation_id\"},\n {\"method\": \"get\", \"nativePath\": \"/api/recurring-requests\", \"path\": \"/recurring-requests\", \"id\": \"listRecurringRequests\", \"scope\": \"lead_engine:read\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/api/recurring-requests/options\", \"path\": \"/recurring-requests/options\", \"id\": \"getRecurringRequestOptions\", \"scope\": \"lead_engine:read\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"post\", \"nativePath\": \"/api/recurring-requests\", \"path\": \"/recurring-requests\", \"id\": \"createRecurringRequest\", \"scope\": \"lead_engine:write\", \"group\": \"workspace\", \"retry\": \"operation_id\", \"additionalScopes\": [\"outreach:send\"]},\n {\"method\": \"patch\", \"nativePath\": \"/api/recurring-requests/setups/:id\", \"path\": \"/recurring-requests/setups/:id\", \"id\": \"updateRecurringSetup\", \"scope\": \"lead_engine:write\", \"group\": \"workspace\", \"retry\": \"bound\", \"additionalScopes\": [\"outreach:send\"]},\n {\"method\": \"patch\", \"nativePath\": \"/api/recurring-requests/:id\", \"path\": \"/recurring-requests/:id\", \"id\": \"updateRecurringRequest\", \"scope\": \"lead_engine:write\", \"group\": \"workspace\", \"retry\": \"bound\", \"additionalScopes\": [\"outreach:send\"]},\n {\"method\": \"get\", \"nativePath\": \"/queued\", \"path\": \"/outreach/queued\", \"id\": \"listQueuedMessages\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/queued/:messageId\", \"path\": \"/outreach/queued/:messageId\", \"id\": \"getQueuedMessage\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/queued/:messageId/outcome\", \"path\": \"/outreach/queued/:messageId/outcome\", \"id\": \"getMessageOutcome\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"post\", \"nativePath\": \"/queued/priority\", \"path\": \"/outreach/queued/priority\", \"id\": \"prioritizeMessages\", \"scope\": \"outreach:send\", \"group\": \"campaigns\", \"retry\": \"request_id\"},\n {\"method\": \"post\", \"nativePath\": \"/queued/:messageId/cancel\", \"path\": \"/outreach/queued/:messageId/cancel\", \"id\": \"cancelQueuedMessage\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"bound\"},\n {\"method\": \"post\", \"nativePath\": \"/queued/:messageId/return-to-review\", \"path\": \"/outreach/queued/:messageId/return-to-review\", \"id\": \"returnQueuedMessageToReview\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"bound\"},\n {\"method\": \"get\", \"nativePath\": \"/queued/:messageId/edit-session\", \"path\": \"/outreach/queued/:messageId/edit-session\", \"id\": \"getQueuedMessageEditSession\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"post\", \"nativePath\": \"/queued/:messageId/resume-unchanged\", \"path\": \"/outreach/queued/:messageId/resume-unchanged\", \"id\": \"resumeQueuedMessageUnchanged\", \"scope\": \"outreach:send\", \"group\": \"campaigns\", \"retry\": \"bound\"},\n {\"method\": \"post\", \"nativePath\": \"/queued/:messageId/send-now\", \"path\": \"/outreach/queued/:messageId/send-now\", \"id\": \"sendQueuedMessageNow\", \"scope\": \"outreach:send\", \"group\": \"campaigns\", \"retry\": \"bound\"},\n {\"method\": \"post\", \"nativePath\": \"/queued/:messageId/send-sooner\", \"path\": \"/outreach/queued/:messageId/send-sooner\", \"id\": \"sendQueuedMessageSooner\", \"scope\": \"outreach:send\", \"group\": \"campaigns\", \"retry\": \"bound\"},\n {\"method\": \"patch\", \"nativePath\": \"/strategies/:id/name\", \"path\": \"/outreach/campaigns/:id/name\", \"id\": \"renameCampaign\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"state\"},\n {\"method\": \"post\", \"nativePath\": \"/strategies/:id/restore\", \"path\": \"/outreach/campaigns/:id/restore\", \"id\": \"restoreCampaign\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"state\"},\n {\"method\": \"post\", \"nativePath\": \"/sender-allocations/preview\", \"path\": \"/outreach/sender-allocations/preview\", \"id\": \"previewSenderAllocations\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"safe\"},\n {\"method\": \"put\", \"nativePath\": \"/strategies/:id/sending-schedule\", \"path\": \"/outreach/campaigns/:id/sending-schedule\", \"id\": \"updateCampaignSchedule\", \"scope\": \"outreach:send\", \"group\": \"campaigns\", \"retry\": \"state\"},\n {\"method\": \"get\", \"nativePath\": \"/strategies/:id/activity\", \"path\": \"/outreach/campaigns/:id/activity\", \"id\": \"getCampaignActivity\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/strategies/:id/decisions\", \"path\": \"/outreach/campaigns/:id/decisions\", \"id\": \"getCampaignDecisions\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/strategies/:id/reviews\", \"path\": \"/outreach/campaigns/:id/reviews\", \"id\": \"getCampaignReviews\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/audience-snapshots\", \"path\": \"/outreach/audiences\", \"id\": \"listAudiences\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/audience-snapshots/:id/funnel\", \"path\": \"/outreach/audiences/:id/funnel\", \"id\": \"getAudienceFunnel\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/audience-snapshots/:snapshotId/preflight\", \"path\": \"/outreach/audiences/:snapshotId/preflight\", \"id\": \"getAudiencePreflight\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"post\", \"nativePath\": \"/strategies/:id/message-preview\", \"path\": \"/outreach/campaigns/:id/message-preview\", \"id\": \"previewCampaignMessage\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"safe\"},\n {\"method\": \"post\", \"nativePath\": \"/safety-attention/delivery-unknown/:messageId/check\", \"path\": \"/outreach/safety-attention/delivery-unknown/:messageId/check\", \"id\": \"checkMessageDelivery\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"state\"},\n {\"method\": \"post\", \"nativePath\": \"/api/icp-profiles\", \"path\": \"/icps\", \"id\": \"createManualIcp\", \"scope\": \"lead_engine:write\", \"group\": \"workspace\", \"retry\": \"header\"},\n {\"method\": \"get\", \"nativePath\": \"/api/icp-profiles/:icpId/usage\", \"path\": \"/icps/:icpId/usage\", \"id\": \"getIcpUsage\", \"scope\": \"lead_engine:read\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/strategies/:id/description\", \"path\": \"/outreach/campaigns/:id/description\", \"id\": \"getCampaignDescription\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"put\", \"nativePath\": \"/strategies/:id/description\", \"path\": \"/outreach/campaigns/:id/description\", \"id\": \"updateCampaignDescription\", \"scope\": \"outreach:send\", \"group\": \"campaigns\", \"retry\": \"operation_id\"},\n {\"method\": \"get\", \"nativePath\": \"/performance/filters\", \"path\": \"/outreach/analytics/filters\", \"id\": \"getAnalyticsFilters\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/performance/analytics\", \"path\": \"/outreach/analytics/report\", \"id\": \"getAnalyticsReport\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"post\", \"nativePath\": \"/api/icp-profiles/lead-engine-audience\", \"path\": \"/icps/lead-engine-audience\", \"id\": \"saveLeadEngineAudience\", \"scope\": \"lead_engine:write\", \"group\": \"workspace\", \"retry\": \"header\"},\n {\"method\": \"post\", \"nativePath\": \"/api/icp-profiles/from-scan\", \"path\": \"/icps/from-scan\", \"id\": \"createIcpFromScan\", \"scope\": \"lead_engine:write\", \"group\": \"workspace\", \"retry\": \"header\"},\n {\"method\": \"post\", \"nativePath\": \"/api/icp-profiles/:icpId/apply-preview\", \"path\": \"/icps/:icpId/apply-preview\", \"id\": \"previewIcpApplication\", \"scope\": \"lead_engine:read\", \"group\": \"workspace\", \"retry\": \"safe\"},\n {\"method\": \"post\", \"nativePath\": \"/api/icp-profiles/:icpId/promote-overrides\", \"path\": \"/icps/:icpId/promote-overrides\", \"id\": \"promoteIcpOverrides\", \"scope\": \"lead_engine:write\", \"group\": \"workspace\", \"retry\": \"header\"},\n {\"method\": \"get\", \"nativePath\": \"/api/company-pipeline/deal-summaries\", \"path\": \"/pipeline/deal-summaries\", \"id\": \"getDealSummaries\", \"scope\": \"pipeline:read\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/api/revenue-insights\", \"path\": \"/pipeline/revenue-insights\", \"id\": \"getRevenueInsights\", \"scope\": \"pipeline:read\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"get\", \"nativePath\": \"/api/company-pipeline/cards/:cardId/deals\", \"path\": \"/pipeline/companies/:cardId/deals\", \"id\": \"listCompanyDeals\", \"scope\": \"pipeline:read\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"patch\", \"nativePath\": \"/api/company-pipeline/deals/:dealId/pin\", \"path\": \"/pipeline/deals/:dealId/pin\", \"id\": \"pinDeal\", \"scope\": \"pipeline:write\", \"group\": \"workspace\", \"retry\": \"state\"},\n {\"method\": \"patch\", \"nativePath\": \"/api/company-pipeline/deals/:dealId/attribution\", \"path\": \"/pipeline/deals/:dealId/attribution\", \"id\": \"updateDealAttribution\", \"scope\": \"pipeline:write\", \"group\": \"workspace\", \"retry\": \"state\"},\n {\"method\": \"patch\", \"nativePath\": \"/api/company-pipeline/deals/actions/bulk-stage\", \"path\": \"/pipeline/deals/actions/bulk-stage\", \"id\": \"moveDeals\", \"scope\": \"pipeline:write\", \"group\": \"workspace\", \"retry\": \"body\"},\n {\"method\": \"patch\", \"nativePath\": \"/api/company-pipeline/contact-engagements/actions/bulk-stage\", \"path\": \"/pipeline/contacts/actions/bulk-stage\", \"id\": \"moveContacts\", \"scope\": \"pipeline:write\", \"group\": \"workspace\", \"retry\": \"body\"},\n {\"method\": \"post\", \"nativePath\": \"/api/company-pipeline/contact-engagements/:engagementId/qualification-deal/undo\", \"path\": \"/pipeline/contacts/:engagementId/qualification-deal/undo\", \"id\": \"undoContactQualification\", \"scope\": \"pipeline:write\", \"group\": \"workspace\", \"retry\": \"body\"},\n {\"method\": \"get\", \"nativePath\": \"/api/company-pipeline/cards/:cardId/note-counts\", \"path\": \"/pipeline/companies/:cardId/note-counts\", \"id\": \"getCompanyNoteCounts\", \"scope\": \"pipeline:read\", \"group\": \"workspace\", \"retry\": \"none\"},\n {\"method\": \"post\", \"nativePath\": \"/api/company-pipeline/cards/:cardId/notes/clear\", \"path\": \"/pipeline/companies/:cardId/notes/archive\", \"id\": \"archiveCompanyNotes\", \"scope\": \"pipeline:write\", \"group\": \"workspace\", \"retry\": \"state\"},\n {\"method\": \"post\", \"nativePath\": \"/strategies/:id/audience/preview\", \"path\": \"/outreach/campaigns/:id/audience/preview\", \"id\": \"previewCampaignAudience\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"operation_id\", \"retryIdentity\": \"campaignAudience\"},\n {\"method\": \"post\", \"nativePath\": \"/strategies/:id/audience/add\", \"path\": \"/outreach/campaigns/:id/audience/add\", \"id\": \"addCampaignAudience\", \"scope\": \"outreach:send\", \"group\": \"campaigns\", \"retry\": \"operation_id\", \"retryIdentity\": \"campaignAudience\"},\n {\"method\": \"get\", \"nativePath\": \"/strategies/:id/audience/contacts\", \"path\": \"/outreach/campaigns/:id/audience/contacts\", \"id\": \"listCampaignContacts\", \"scope\": \"outreach:read\", \"group\": \"campaigns\", \"retry\": \"none\"},\n {\"method\": \"post\", \"nativePath\": \"/strategies/:id/audience/contacts/:enrollmentId/remove\", \"path\": \"/outreach/campaigns/:id/audience/contacts/:enrollmentId/remove\", \"id\": \"removePendingCampaignContact\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"state\"},\n {\"method\": \"post\", \"nativePath\": \"/conversations/:id/sequence\", \"path\": \"/outreach/conversations/:id/sequence\", \"id\": \"updateConversationSequence\", \"scope\": \"outreach:send\", \"group\": \"campaigns\", \"retry\": \"state\"},\n {\"method\": \"put\", \"nativePath\": \"/strategies/:id/contact-cap\", \"path\": \"/outreach/campaigns/:id/contact-cap\", \"id\": \"updateCampaignContactCap\", \"scope\": \"outreach:send\", \"group\": \"campaigns\", \"retry\": \"operation_id\"},\n {\"method\": \"put\", \"nativePath\": \"/strategies/:id/sender-allocations\", \"path\": \"/outreach/campaigns/:id/sender-allocations\", \"id\": \"updateSenderAllocations\", \"scope\": \"outreach:send\", \"group\": \"campaigns\", \"retry\": \"state\"},\n {\"method\": \"put\", \"nativePath\": \"/strategies/:id/sending-days\", \"path\": \"/outreach/campaigns/:id/sending-days\", \"id\": \"updateSendingDays\", \"scope\": \"outreach:send\", \"group\": \"campaigns\", \"retry\": \"state\"},\n {\"method\": \"post\", \"nativePath\": \"/strategies/:id/change-mode\", \"path\": \"/outreach/campaigns/:id/change-mode\", \"id\": \"changeCampaignMode\", \"scope\": \"outreach:send\", \"group\": \"campaigns\", \"retry\": \"bound\"},\n {\"method\": \"post\", \"nativePath\": \"/strategies/:id/discard\", \"path\": \"/outreach/campaigns/:id/discard\", \"id\": \"discardCampaign\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"state\"},\n {\"method\": \"post\", \"nativePath\": \"/strategies/:id/drafts/restore\", \"path\": \"/outreach/campaigns/:id/drafts/restore\", \"id\": \"restoreCampaignDrafts\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"state\"},\n {\"method\": \"post\", \"nativePath\": \"/safety-attention/delivery-unknown/:messageId/resolve\", \"path\": \"/outreach/safety-attention/delivery-unknown/:messageId/resolve\", \"id\": \"resolveUnknownDelivery\", \"scope\": \"outreach:send\", \"group\": \"campaigns\", \"retry\": \"bound\"},\n {\"method\": \"post\", \"nativePath\": \"/review/bulk-approve\", \"path\": \"/outreach/review/bulk-approve\", \"id\": \"bulkApproveMessages\", \"scope\": \"outreach:send\", \"group\": \"campaigns\", \"retry\": \"bound\"},\n {\"method\": \"post\", \"nativePath\": \"/review/bulk-deny\", \"path\": \"/outreach/review/bulk-deny\", \"id\": \"bulkDenyMessages\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"bound\"},\n {\"method\": \"post\", \"nativePath\": \"/review/bulk-skip\", \"path\": \"/outreach/review/bulk-skip\", \"id\": \"bulkSkipMessages\", \"scope\": \"outreach:write\", \"group\": \"campaigns\", \"retry\": \"bound\"},\n {\"method\": \"post\", \"nativePath\": \"/review/:messageId/recheck-autopilot\", \"path\": \"/outreach/review/:messageId/recheck-autopilot\", \"id\": \"recheckMessageAutopilot\", \"scope\": \"outreach:send\", \"group\": \"campaigns\", \"retry\": \"bound\"},\n] as const;\nexport type WorkspaceOperation = (typeof WORKSPACE_OPERATIONS)[number];\nexport type WorkspaceOperationId = WorkspaceOperation[\"id\"];\nexport type WorkspaceApiGroup = WorkspaceOperation[\"group\"];\n\ntype OperationPermissions = { scope: string; additionalScopes?: readonly string[]; bodyScopes?: Readonly<Record<string, readonly string[]>> };\n/** Additional authority required when a top-level body field is present. */\nexport const bodyScopeRules = (operation: OperationPermissions): [string, readonly string[]][] => Object.entries(operation.bodyScopes ?? {});\nexport const requiredScopes = (operation: OperationPermissions, body?: unknown): string[] => [\n operation.scope, ...(operation.additionalScopes ?? []),\n ...bodyScopeRules(operation).flatMap(([field, scopes]) => body && typeof body === \"object\" && Object.prototype.hasOwnProperty.call(body, field) ? scopes : []),\n].filter(Boolean);\n\n/** Existing v1 contracts remain unchanged; clients normalize their transport only. */\nexport const LEGACY_API_OPERATIONS = [\n { method: \"get\", path: \"/pricing\", id: \"getPricing\", scope: \"\", retry: \"none\" },\n { method: \"get\", path: \"/me\", id: \"getApiIdentity\", scope: \"\", retry: \"none\" },\n { method: \"get\", path: \"/credits\", id: \"getCredits\", scope: \"credits:read\", retry: \"none\" },\n { method: \"get\", path: \"/reference/countries\", id: \"listCountries\", scope: \"\", retry: \"none\" },\n { method: \"get\", path: \"/reference/states\", id: \"listStates\", scope: \"\", retry: \"none\" },\n { method: \"get\", path: \"/reference/cities\", id: \"listCities\", scope: \"\", retry: \"none\" },\n { method: \"get\", path: \"/reference/company-sizes\", id: \"listCompanySizes\", scope: \"\", retry: \"none\" },\n { method: \"get\", path: \"/reference/lead-types\", id: \"listLeadTypes\", scope: \"\", retry: \"none\" },\n { method: \"get\", path: \"/lead-requests\", id: \"listLeadRequests\", scope: \"lead_requests:read\", retry: \"none\" },\n { method: \"post\", path: \"/lead-requests\", id: \"createLeadRequest\", scope: \"lead_requests:write\", additionalScopes: [\"leads:read\"], retry: \"header\" },\n { method: \"get\", path: \"/lead-requests/:id\", id: \"getLeadRequest\", scope: \"lead_requests:read\", retry: \"none\" },\n { method: \"post\", path: \"/company-requests\", id: \"createCompanyRequest\", scope: \"company_requests:write\", additionalScopes: [\"company_requests:read\"], retry: \"header\" },\n { method: \"get\", path: \"/company-requests/:id\", id: \"getCompanyRequest\", scope: \"company_requests:read\", retry: \"none\" },\n] as const;\nexport const CLIENT_OPERATIONS = [...WORKSPACE_OPERATIONS, ...LEGACY_API_OPERATIONS.map(operation => ({ ...operation, group: \"legacy\" as const, nativePath: operation.path }))] as const;\nexport type ClientOperationId = (typeof CLIENT_OPERATIONS)[number][\"id\"];\n", "import { CLIENT_OPERATIONS, requiredScopes, type ClientOperationId } from \"./workspace-operations.js\";\n\nexport type Json = null | boolean | number | string | Json[] | { [key: string]: Json };\nexport type JsonObject = { [key: string]: Json };\nexport type ApiResult<T = Json> = { data: T; request_id: string };\nexport type CallInput = {\n params?: Record<string, string>;\n query?: Record<string, string | number | boolean | readonly string[]>;\n body?: JsonObject;\n /** Caller-owned identity. Persist alongside the body before a durable create. */\n idempotencyKey?: string;\n signal?: AbortSignal;\n /** Explicitly allow this call to authorize delivery. Does not grant API scopes. */\n allowSend?: boolean;\n};\nexport class LeadpoetError extends Error {\n constructor(message: string, readonly status: number, readonly code: string,\n readonly requestId?: string, readonly details?: Json, readonly retryAfterSeconds?: number) {\n super(message); this.name = \"LeadpoetError\";\n }\n}\nconst object = (value: unknown): value is JsonObject => Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\nconst keyRequired = (retry: string) => [\"header\", \"header_uuid\", \"operation_id\", \"request_id\", \"body\"].includes(retry);\nexport const operations = CLIENT_OPERATIONS.map(({ nativePath: _native, group: _group, ...operation }) => operation);\n\n/** One credential per instance. No global credential store, cookies, or ambient session. */\nexport class LeadpoetClient {\n readonly baseUrl: string;\n readonly #apiKey: string;\n private readonly fetcher: typeof fetch;\n private readonly timeoutMs: number;\n constructor(options: { baseUrl: string; apiKey: string; fetch?: typeof fetch; timeoutMs?: number }) {\n const url = new URL(options.baseUrl);\n if (url.username || url.password || url.search || url.hash ||\n !(url.protocol === \"https:\" || (url.protocol === \"http:\" && [\"localhost\", \"127.0.0.1\", \"[::1]\"].includes(url.hostname)))) {\n throw new Error(\"Use an HTTPS API base URL, or HTTP on localhost; credentials, query strings and fragments are forbidden\");\n }\n if (url.pathname.replace(/\\/$/, \"\") !== \"/api/v1\") throw new Error(\"The API base URL must end in /api/v1\");\n if (!options.apiKey || /\\s/.test(options.apiKey)) throw new LeadpoetError(\"Set LEADPOET_API_KEY to a valid API key\", 401, \"authentication_required\");\n this.baseUrl = url.href.replace(/\\/$/, \"\");\n this.#apiKey = options.apiKey;\n this.fetcher = options.fetch ?? fetch;\n this.timeoutMs = options.timeoutMs ?? 30_000;\n if (!Number.isSafeInteger(this.timeoutMs) || this.timeoutMs < 1 || this.timeoutMs > 300_000) throw new Error(\"timeoutMs must be an integer between 1 and 300000\");\n }\n async openapi(signal?: AbortSignal): Promise<JsonObject> {\n const { value: result, requestId } = await this.request(\"/openapi.json\", \"GET\", undefined, undefined, signal);\n if (!object(result) || !object(result.paths)) throw new LeadpoetError(\"Invalid OpenAPI response\", 502, \"invalid_response\", requestId);\n return result;\n }\n async call<T = Json>(operationId: ClientOperationId, input: CallInput = {}): Promise<ApiResult<T>> {\n const operation = CLIENT_OPERATIONS.find(item => item.id === operationId);\n if (!operation) throw new Error(\"Unknown operation; use operations to discover supported calls\");\n if (requiredScopes(operation, input.body).includes(\"outreach:send\") && input.allowSend !== true) throw new Error(\"This operation authorizes delivery; explicit allowSend is required\");\n const expected = [...operation.path.matchAll(/:([A-Za-z]+)/g)].map(match => match[1]);\n if (Object.keys(input.params ?? {}).some(name => !expected.includes(name))) throw new Error(\"Unexpected path parameter\");\n let path: string = operation.path;\n for (const name of expected) {\n const value = input.params?.[name];\n if (!value || !/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i.test(value)) throw new Error(`Expected UUID parameter: ${name}`);\n path = path.replace(`:${name}`, encodeURIComponent(value));\n }\n if (keyRequired(operation.retry) && !input.idempotencyKey) throw new Error(\"This operation requires a persisted idempotencyKey\");\n if (input.idempotencyKey && !/^[A-Za-z0-9._:-]{8,160}$/.test(input.idempotencyKey)) throw new Error(\"Invalid idempotencyKey\");\n if (operation.method === \"get\" && input.body !== undefined) throw new Error(\"Read operations do not accept a body\");\n const query = new URLSearchParams();\n for (const [name, value] of Object.entries(input.query ?? {})) {\n if (Array.isArray(value)) for (const item of value) query.append(name, item);\n else query.set(name, String(value));\n }\n if (query.size) path += `?${query}`;\n const { value: result, requestId } = await this.request(path, operation.method.toUpperCase(), input.body, input.idempotencyKey, input.signal, operation.group === \"legacy\");\n if (!object(result) || !(\"data\" in result) || typeof result.request_id !== \"string\") throw new LeadpoetError(\"Invalid API response\", 502, \"invalid_response\", requestId);\n return result as ApiResult<T>;\n }\n /** Bounded paging for the request history contract. Other cursors are operation-specific. */\n async *requestPages(options: { page?: number; limit?: number; maxPages?: number; signal?: AbortSignal } = {}): AsyncGenerator<ApiResult<JsonObject>> {\n const max = options.maxPages ?? 100;\n if (!Number.isInteger(max) || max < 1 || max > 1000) throw new Error(\"maxPages must be between 1 and 1000\");\n const start = options.page ?? 1, limit = options.limit ?? 25;\n if (!Number.isInteger(start) || start < 1 || start > 100_000 || !Number.isInteger(limit) || limit < 1 || limit > 100) throw new Error(\"Invalid request pagination bounds\");\n for (let page = start, count = 0; count < max; page++, count++) {\n const result = await this.call<JsonObject>(\"listRequests\", { query: { page, limit }, signal: options.signal });\n if (!object(result.data) || typeof result.data.total !== \"number\" || !Number.isSafeInteger(result.data.total) || result.data.total < 0 || !Array.isArray(result.data.queries)) {\n throw new LeadpoetError(\"Invalid request pagination metadata\", 502, \"invalid_response\", result.request_id);\n }\n yield result;\n if (page * limit >= result.data.total) return;\n }\n throw new LeadpoetError(\"Pagination limit reached; resume from the last page\", 0, \"pagination_limit\");\n }\n async waitForRequest(id: string, options: { timeoutMs?: number; intervalMs?: number; signal?: AbortSignal } = {}): Promise<ApiResult<JsonObject>> {\n const timeout = options.timeoutMs ?? 300_000, interval = options.intervalMs ?? 2_000;\n if (!Number.isSafeInteger(timeout) || timeout < 1 || timeout > 3_600_000 || !Number.isSafeInteger(interval) || interval < 1 || interval > 3_600_000) throw new Error(\"Invalid polling bounds\");\n const signal = AbortSignal.any([AbortSignal.timeout(timeout), ...(options.signal ? [options.signal] : [])]);\n while (true) {\n const result = await this.call<JsonObject>(\"getRequest\", { params: { id }, signal });\n if (!object(result.data) || typeof result.data.status !== \"string\" || !result.data.status.trim()) {\n throw new LeadpoetError(\"Invalid request status response\", 502, \"invalid_response\", result.request_id);\n }\n if ([\"ready\", \"error\", \"completed\", \"failed\", \"cancelled\", \"canceled\"].includes(String(result.data.status))) return result;\n if (![\"pending\", \"processing\"].includes(result.data.status)) {\n throw new LeadpoetError(\"Invalid request status response\", 502, \"invalid_response\", result.request_id);\n }\n await new Promise<void>((resolve, reject) => {\n const onAbort = () => { clearTimeout(timer); reject(signal.reason); };\n const timer = setTimeout(() => { signal.removeEventListener(\"abort\", onAbort); resolve(); }, interval);\n signal.addEventListener(\"abort\", onAbort, { once: true });\n if (signal.aborted) onAbort();\n });\n }\n }\n private async request(path: string, method: string, body?: JsonObject, idempotencyKey?: string, signal?: AbortSignal, wrapLegacy = false): Promise<{ value: Json; requestId?: string }> {\n // Never automatically retry writes: an interrupted response can follow a committed action.\n const deadline = AbortSignal.any([AbortSignal.timeout(this.timeoutMs), ...(signal ? [signal] : [])]);\n const response = await this.fetcher(this.baseUrl + path, {\n method, redirect: \"error\", credentials: \"omit\",\n headers: { Authorization: `Bearer ${this.#apiKey}`, Accept: \"application/json\", ...(body ? { \"Content-Type\": \"application/json\" } : {}), ...(idempotencyKey ? { \"Idempotency-Key\": idempotencyKey } : {}) },\n ...(body ? { body: JSON.stringify(body) } : {}),\n signal: deadline,\n });\n // Proxy failures may have no JSON body. Capture backoff headers before\n // parsing so SDK, CLI and MCP callers can still honor the server's delay.\n const retry = response.headers.get(\"retry-after\");\n const seconds = retry ? (/^\\d+$/.test(retry) ? Number(retry) : Math.max(0, Math.ceil((Date.parse(retry) - Date.now()) / 1000))) : undefined;\n const retryAfterSeconds = Number.isFinite(seconds) ? seconds : undefined;\n let value: Json;\n let cancelBody: () => void = () => {};\n try {\n // Keep an explicit cancellation listener through body consumption. Some\n // fetch transports can leave their body promise pending after headers.\n value = await new Promise<Json>((resolve, reject) => {\n cancelBody = () => reject(deadline.reason);\n deadline.addEventListener(\"abort\", cancelBody, { once: true });\n if (deadline.aborted) { cancelBody(); return; }\n response.json().then(resolve, reject);\n });\n }\n catch {\n // Fetch can resolve headers before the deadline interrupts the body.\n // Keep cancellation distinct from malformed JSON and never retry a write.\n deadline.throwIfAborted();\n throw new LeadpoetError(\"The API returned a non-JSON response\", response.ok ? 502 : response.status, \"invalid_response\", response.headers.get(\"x-request-id\") ?? undefined, undefined, retryAfterSeconds);\n } finally { deadline.removeEventListener(\"abort\", cancelBody); }\n if (!response.ok) {\n const error = object(value) && object(value.error) ? value.error : {};\n throw new LeadpoetError(typeof error.message === \"string\" ? error.message : \"API request failed\", response.status,\n typeof error.code === \"string\" ? error.code : \"request_failed\",\n typeof error.request_id === \"string\" ? error.request_id : response.headers.get(\"x-request-id\") ?? undefined,\n error.details, retryAfterSeconds);\n }\n const requestId = response.headers.get(\"x-request-id\") ?? undefined;\n return { value: wrapLegacy ? { data: value, request_id: requestId ?? \"\" } : value, requestId };\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|