@apex-inc/sdk 0.1.1 → 0.6.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/README.md +70 -2
- package/dist/esm/index.js +175 -7
- package/dist/esm/management.js +395 -3
- package/dist/esm/plg-events.js +45 -0
- package/dist/index.d.ts +254 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +182 -8
- package/dist/index.js.map +1 -1
- package/dist/management.d.ts +285 -2
- package/dist/management.d.ts.map +1 -1
- package/dist/management.js +395 -3
- package/dist/management.js.map +1 -1
- package/dist/plg-events.d.ts +131 -0
- package/dist/plg-events.d.ts.map +1 -0
- package/dist/plg-events.js +50 -0
- package/dist/plg-events.js.map +1 -0
- package/package.json +6 -1
- package/skills/apex-communications/SKILL.md +217 -1
- package/skills/apex-experimentation/SKILL.md +2 -2
- package/skills/apex-growth-tracking/SKILL.md +93 -2
- package/skills/apex-integration-cookbook/SKILL.md +141 -26
- package/skills/apex-partner-network/SKILL.md +191 -0
package/dist/management.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
3
|
* Programmatic access to Apex APIs using an API key (same as MCP server).
|
|
4
|
-
* Intended for Node.js backends; sends x-api-key and x-apex-
|
|
4
|
+
* Intended for Node.js backends; sends x-api-key and x-apex-workspace on each request.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.createManagementClient = createManagementClient;
|
|
@@ -12,7 +12,7 @@ function keyHeaders(cfg) {
|
|
|
12
12
|
return {
|
|
13
13
|
"Content-Type": "application/json",
|
|
14
14
|
"x-api-key": cfg.apiKey,
|
|
15
|
-
"x-apex-
|
|
15
|
+
"x-apex-workspace": cfg.workspaceKey,
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
@@ -34,7 +34,7 @@ function createManagementClient(cfg) {
|
|
|
34
34
|
async assignVariant(experimentId, visitorId) {
|
|
35
35
|
const cookie = [
|
|
36
36
|
`apex_vid=${encodeURIComponent(visitorId)}`,
|
|
37
|
-
`apex_project=${encodeURIComponent(cfg.
|
|
37
|
+
`apex_project=${encodeURIComponent(cfg.workspaceKey)}`,
|
|
38
38
|
].join("; ");
|
|
39
39
|
const res = await fetch(`${root}/api/experiments/${encodeURIComponent(experimentId)}/assign`, {
|
|
40
40
|
headers: { ...headers, Cookie: cookie },
|
|
@@ -45,7 +45,49 @@ function createManagementClient(cfg) {
|
|
|
45
45
|
}
|
|
46
46
|
return res.json();
|
|
47
47
|
},
|
|
48
|
+
/** Fetch a single experiment (unified shape). */
|
|
49
|
+
async getExperiment(id) {
|
|
50
|
+
const res = await fetch(`${root}/api/experiments/${encodeURIComponent(id)}?unified=true`, { headers });
|
|
51
|
+
if (!res.ok)
|
|
52
|
+
throw new Error(`Apex getExperiment failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
53
|
+
return res.json();
|
|
54
|
+
},
|
|
55
|
+
/**
|
|
56
|
+
* Computed results + the shared readiness verdict
|
|
57
|
+
* (collecting | decisive | inconclusive | guardrail) for any surface.
|
|
58
|
+
*/
|
|
59
|
+
async getExperimentResults(id) {
|
|
60
|
+
const res = await fetch(`${root}/api/experiments/${encodeURIComponent(id)}/results`, { headers });
|
|
61
|
+
if (!res.ok)
|
|
62
|
+
throw new Error(`Apex getExperimentResults failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
63
|
+
return res.json();
|
|
64
|
+
},
|
|
65
|
+
/**
|
|
66
|
+
* Promote the experiment's winner (re-verifies the readiness gate
|
|
67
|
+
* server-side; pass `force` to override). Winner content is written into
|
|
68
|
+
* the canonical communication as a new version.
|
|
69
|
+
*/
|
|
70
|
+
async promoteExperiment(id, opts) {
|
|
71
|
+
const res = await fetch(`${root}/api/experiments/${encodeURIComponent(id)}/promote`, { method: "POST", headers, body: JSON.stringify(opts ?? {}) });
|
|
72
|
+
if (!res.ok)
|
|
73
|
+
throw new Error(`Apex promoteExperiment failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
74
|
+
return res.json();
|
|
75
|
+
},
|
|
48
76
|
// ─── Communications ───────────────────────────────────────────────
|
|
77
|
+
/** Append a content variant to a communication (composer-columns model; an experiment arm). */
|
|
78
|
+
async createCommVariant(commId, opts) {
|
|
79
|
+
const res = await fetch(`${root}/api/communications/${encodeURIComponent(commId)}/variants`, { method: "POST", headers, body: JSON.stringify(opts ?? {}) });
|
|
80
|
+
if (!res.ok)
|
|
81
|
+
throw new Error(`Apex createCommVariant failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
82
|
+
return res.json();
|
|
83
|
+
},
|
|
84
|
+
/** List the content variants (`content.variants[]`) of a communication. */
|
|
85
|
+
async listCommVariants(commId) {
|
|
86
|
+
const res = await fetch(`${root}/api/communications/${encodeURIComponent(commId)}/variants`, { headers });
|
|
87
|
+
if (!res.ok)
|
|
88
|
+
throw new Error(`Apex listCommVariants failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
89
|
+
return res.json();
|
|
90
|
+
},
|
|
49
91
|
async recommendCommunications() {
|
|
50
92
|
const res = await fetch(`${root}/api/communications/recommend`, { method: "POST", headers });
|
|
51
93
|
if (!res.ok)
|
|
@@ -151,6 +193,356 @@ function createManagementClient(cfg) {
|
|
|
151
193
|
throw new Error(`Apex getEventIntegrationStatus failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
152
194
|
return res.json();
|
|
153
195
|
},
|
|
196
|
+
// ─── Partner Network — Programs (MMP-161) ─────────────────────────
|
|
197
|
+
//
|
|
198
|
+
// Every method below runs under the merchant's x-apex-workspace scope.
|
|
199
|
+
// Partner-facing flows (self-signup, dashboard, Stripe Connect OAuth)
|
|
200
|
+
// are cookie-authed in the portal and not wrapped in this SDK.
|
|
201
|
+
async listPrograms() {
|
|
202
|
+
const res = await fetch(`${root}/api/mobile/affiliates/programs`, { headers });
|
|
203
|
+
if (!res.ok)
|
|
204
|
+
throw new Error(`Apex listPrograms failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
205
|
+
return res.json();
|
|
206
|
+
},
|
|
207
|
+
async createProgram(params) {
|
|
208
|
+
const res = await fetch(`${root}/api/mobile/affiliates/programs`, {
|
|
209
|
+
method: "POST",
|
|
210
|
+
headers,
|
|
211
|
+
body: JSON.stringify(params),
|
|
212
|
+
});
|
|
213
|
+
if (!res.ok)
|
|
214
|
+
throw new Error(`Apex createProgram failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
215
|
+
return res.json();
|
|
216
|
+
},
|
|
217
|
+
async updateProgram(programId, updates) {
|
|
218
|
+
const res = await fetch(`${root}/api/mobile/affiliates/programs/${encodeURIComponent(programId)}`, {
|
|
219
|
+
method: "PATCH",
|
|
220
|
+
headers,
|
|
221
|
+
body: JSON.stringify(updates),
|
|
222
|
+
});
|
|
223
|
+
if (!res.ok)
|
|
224
|
+
throw new Error(`Apex updateProgram failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
225
|
+
return res.json();
|
|
226
|
+
},
|
|
227
|
+
async listProgramMembers(programId) {
|
|
228
|
+
const res = await fetch(`${root}/api/mobile/affiliates/programs/${encodeURIComponent(programId)}/members`, { headers });
|
|
229
|
+
if (!res.ok)
|
|
230
|
+
throw new Error(`Apex listProgramMembers failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
231
|
+
return res.json();
|
|
232
|
+
},
|
|
233
|
+
/** Apply program default commission to every existing member (respects overrides). */
|
|
234
|
+
async applyProgramDefaultToMembers(programId) {
|
|
235
|
+
const res = await fetch(`${root}/api/mobile/affiliates/programs/${encodeURIComponent(programId)}/apply-to-members`, {
|
|
236
|
+
method: "POST",
|
|
237
|
+
headers,
|
|
238
|
+
});
|
|
239
|
+
if (!res.ok)
|
|
240
|
+
throw new Error(`Apex applyProgramDefaultToMembers failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
241
|
+
return res.json();
|
|
242
|
+
},
|
|
243
|
+
// ─── Partner Network — Rate overrides ─────────────────────────────
|
|
244
|
+
/** Override a single membership's commission (sticky — survives program default updates). */
|
|
245
|
+
async updateMembershipRate(profileId, params) {
|
|
246
|
+
const res = await fetch(`${root}/api/mobile/affiliates/memberships/${encodeURIComponent(profileId)}/rate`, {
|
|
247
|
+
method: "POST",
|
|
248
|
+
headers,
|
|
249
|
+
body: JSON.stringify(params),
|
|
250
|
+
});
|
|
251
|
+
if (!res.ok)
|
|
252
|
+
throw new Error(`Apex updateMembershipRate failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
253
|
+
return res.json();
|
|
254
|
+
},
|
|
255
|
+
/** Reset a membership back to its program's default commission. */
|
|
256
|
+
async resetMembershipRate(profileId, reason) {
|
|
257
|
+
const res = await fetch(`${root}/api/mobile/affiliates/memberships/${encodeURIComponent(profileId)}/rate`, {
|
|
258
|
+
method: "POST",
|
|
259
|
+
headers,
|
|
260
|
+
body: JSON.stringify({ reset: true, reason }),
|
|
261
|
+
});
|
|
262
|
+
if (!res.ok)
|
|
263
|
+
throw new Error(`Apex resetMembershipRate failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
264
|
+
return res.json();
|
|
265
|
+
},
|
|
266
|
+
// ─── Partner Network — Invitations ────────────────────────────────
|
|
267
|
+
/** Send a magic-link invite to a partner (email resolves to existing profile or creates pending). */
|
|
268
|
+
async invitePartner(params) {
|
|
269
|
+
const res = await fetch(`${root}/api/mobile/affiliates/invites`, {
|
|
270
|
+
method: "POST",
|
|
271
|
+
headers,
|
|
272
|
+
body: JSON.stringify(params),
|
|
273
|
+
});
|
|
274
|
+
if (!res.ok)
|
|
275
|
+
throw new Error(`Apex invitePartner failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
276
|
+
return res.json();
|
|
277
|
+
},
|
|
278
|
+
// ─── Partner Network — Payouts (MMP-145 + MMP-151) ────────────────
|
|
279
|
+
/** Pending payouts grouped into aging buckets (0-30, 30-60, 60+). */
|
|
280
|
+
async listPendingPayouts() {
|
|
281
|
+
const res = await fetch(`${root}/api/mobile/affiliates/payouts/pending`, { headers });
|
|
282
|
+
if (!res.ok)
|
|
283
|
+
throw new Error(`Apex listPendingPayouts failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
284
|
+
return res.json();
|
|
285
|
+
},
|
|
286
|
+
/** Approve one or more pending payouts (creates HoldbackEntry per approved conversion). */
|
|
287
|
+
async approvePayouts(conversionIds) {
|
|
288
|
+
const res = await fetch(`${root}/api/mobile/affiliates/payouts/approve`, {
|
|
289
|
+
method: "POST",
|
|
290
|
+
headers,
|
|
291
|
+
body: JSON.stringify({ conversionIds }),
|
|
292
|
+
});
|
|
293
|
+
if (!res.ok)
|
|
294
|
+
throw new Error(`Apex approvePayouts failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
295
|
+
return res.json();
|
|
296
|
+
},
|
|
297
|
+
/** Reject pending payouts (opens an audit FraudCase severity=low). */
|
|
298
|
+
async rejectPayouts(conversionIds, reason) {
|
|
299
|
+
const res = await fetch(`${root}/api/mobile/affiliates/payouts/reject`, {
|
|
300
|
+
method: "POST",
|
|
301
|
+
headers,
|
|
302
|
+
body: JSON.stringify({ conversionIds, reason }),
|
|
303
|
+
});
|
|
304
|
+
if (!res.ok)
|
|
305
|
+
throw new Error(`Apex rejectPayouts failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
306
|
+
return res.json();
|
|
307
|
+
},
|
|
308
|
+
// ─── Partner Network — Fees (MMP-158) ─────────────────────────────
|
|
309
|
+
/** Merchant-facing fee disclosure. Returns every fee kind Apex charges this merchant. */
|
|
310
|
+
async getEffectiveFees() {
|
|
311
|
+
const res = await fetch(`${root}/api/mobile/affiliates/fees`, { headers });
|
|
312
|
+
if (!res.ok)
|
|
313
|
+
throw new Error(`Apex getEffectiveFees failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
314
|
+
return res.json();
|
|
315
|
+
},
|
|
316
|
+
// ─── Partner Network — Vouch (MMP-156) ────────────────────────────
|
|
317
|
+
/**
|
|
318
|
+
* Vouch for a partner — one-tier bump for 60 days. Requires indemnity
|
|
319
|
+
* acknowledgment. Fails if the partner is already verified.
|
|
320
|
+
*/
|
|
321
|
+
async vouchForPartner(profileId, params) {
|
|
322
|
+
const res = await fetch(`${root}/api/mobile/affiliates/${encodeURIComponent(profileId)}/vouch`, {
|
|
323
|
+
method: "POST",
|
|
324
|
+
headers,
|
|
325
|
+
body: JSON.stringify(params),
|
|
326
|
+
});
|
|
327
|
+
if (!res.ok)
|
|
328
|
+
throw new Error(`Apex vouchForPartner failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
329
|
+
return res.json();
|
|
330
|
+
},
|
|
331
|
+
// ─── Communications — end-user preferences (DFC-016) ─────────────────
|
|
332
|
+
//
|
|
333
|
+
// Two API-key methods for managing an end-user's communication
|
|
334
|
+
// preferences from the customer's backend. `preferences.get` and
|
|
335
|
+
// `preferences.update` proxy `/api/communications/preferences/[id]`
|
|
336
|
+
// with the org-scoped key — the route's dual-auth layer treats the
|
|
337
|
+
// API-key caller as a trusted server.
|
|
338
|
+
preferences: {
|
|
339
|
+
async get(endUserId) {
|
|
340
|
+
const res = await fetch(`${root}/api/communications/preferences/${encodeURIComponent(endUserId)}?workspaceKey=${encodeURIComponent(cfg.workspaceKey)}`, { headers });
|
|
341
|
+
if (!res.ok) {
|
|
342
|
+
throw new Error(`Apex preferences.get failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
343
|
+
}
|
|
344
|
+
return res.json();
|
|
345
|
+
},
|
|
346
|
+
async update(endUserId, patch) {
|
|
347
|
+
const res = await fetch(`${root}/api/communications/preferences/${encodeURIComponent(endUserId)}?workspaceKey=${encodeURIComponent(cfg.workspaceKey)}`, {
|
|
348
|
+
method: "PATCH",
|
|
349
|
+
headers,
|
|
350
|
+
body: JSON.stringify(patch),
|
|
351
|
+
});
|
|
352
|
+
if (!res.ok) {
|
|
353
|
+
throw new Error(`Apex preferences.update failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
354
|
+
}
|
|
355
|
+
return res.json();
|
|
356
|
+
},
|
|
357
|
+
},
|
|
358
|
+
// ─── Communications — inbox notifications (DFC-016) ──────────────────
|
|
359
|
+
//
|
|
360
|
+
// Read + write helpers for the in-app inbox. The `mark-read` and
|
|
361
|
+
// `mark-all-read` paths target the existing PATCH route on the
|
|
362
|
+
// workspace-admin gate (the SDK's API key satisfies that gate).
|
|
363
|
+
notifications: {
|
|
364
|
+
async list(endUserId, opts) {
|
|
365
|
+
const qs = new URLSearchParams({ userId: endUserId });
|
|
366
|
+
if (opts?.limit)
|
|
367
|
+
qs.set("limit", String(opts.limit));
|
|
368
|
+
if (opts?.unreadOnly)
|
|
369
|
+
qs.set("unreadOnly", "true");
|
|
370
|
+
const res = await fetch(`${root}/api/communications/notifications?${qs.toString()}`, { headers });
|
|
371
|
+
if (!res.ok) {
|
|
372
|
+
throw new Error(`Apex notifications.list failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
373
|
+
}
|
|
374
|
+
return res.json();
|
|
375
|
+
},
|
|
376
|
+
async markRead(notificationId) {
|
|
377
|
+
const res = await fetch(`${root}/api/communications/notifications`, {
|
|
378
|
+
method: "PATCH",
|
|
379
|
+
headers,
|
|
380
|
+
body: JSON.stringify({ notificationId }),
|
|
381
|
+
});
|
|
382
|
+
if (!res.ok) {
|
|
383
|
+
throw new Error(`Apex notifications.markRead failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
384
|
+
}
|
|
385
|
+
},
|
|
386
|
+
async markAllRead(endUserId) {
|
|
387
|
+
const res = await fetch(`${root}/api/communications/notifications`, {
|
|
388
|
+
method: "PATCH",
|
|
389
|
+
headers,
|
|
390
|
+
body: JSON.stringify({ markAll: true, endUserId }),
|
|
391
|
+
});
|
|
392
|
+
if (!res.ok) {
|
|
393
|
+
throw new Error(`Apex notifications.markAllRead failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
394
|
+
}
|
|
395
|
+
},
|
|
396
|
+
},
|
|
397
|
+
// ─── Communications — end-user token mint (DFC-018) ──────────────────
|
|
398
|
+
//
|
|
399
|
+
// Server-side helper that asks Apex to sign an HMAC end-user token
|
|
400
|
+
// for the customer's client. The signing key lives on Apex servers
|
|
401
|
+
// only, so this is the canonical path. Customers call this from
|
|
402
|
+
// their backend, then hand the token to <ApexPreferenceCenter>.
|
|
403
|
+
/**
|
|
404
|
+
* Set up Apex — programmatic access to per-workspace setup state.
|
|
405
|
+
*
|
|
406
|
+
* `get()` returns the current hub signal + per-step overrides
|
|
407
|
+
* (read-only). `complete(stepId)` / `skip(stepId, reason)` mirror
|
|
408
|
+
* the dashboard's write contract at
|
|
409
|
+
* POST /api/workspaces/<workspaceKey>/setup-state/<stepId>.
|
|
410
|
+
*
|
|
411
|
+
* Allowed step IDs are enforced server-side via the SetupRegistry
|
|
412
|
+
* allowlist. Unknown IDs return 400.
|
|
413
|
+
*/
|
|
414
|
+
workspace: {
|
|
415
|
+
setupState: {
|
|
416
|
+
async get() {
|
|
417
|
+
const res = await fetch(`${root}/api/workspaces/${encodeURIComponent(cfg.workspaceKey)}/setup-state`, { headers });
|
|
418
|
+
if (!res.ok) {
|
|
419
|
+
throw new Error(`Apex workspace.setupState.get failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
420
|
+
}
|
|
421
|
+
const json = (await res.json());
|
|
422
|
+
return {
|
|
423
|
+
overrides: json.overrides ?? [],
|
|
424
|
+
signal: json.signal ?? {},
|
|
425
|
+
};
|
|
426
|
+
},
|
|
427
|
+
async complete(stepId) {
|
|
428
|
+
const res = await fetch(`${root}/api/workspaces/${encodeURIComponent(cfg.workspaceKey)}/setup-state/${encodeURIComponent(stepId)}/complete`, { method: "POST", headers });
|
|
429
|
+
if (!res.ok) {
|
|
430
|
+
throw new Error(`Apex workspace.setupState.complete failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
431
|
+
}
|
|
432
|
+
},
|
|
433
|
+
async skip(stepId, reason) {
|
|
434
|
+
const res = await fetch(`${root}/api/workspaces/${encodeURIComponent(cfg.workspaceKey)}/setup-state/${encodeURIComponent(stepId)}/skip`, {
|
|
435
|
+
method: "POST",
|
|
436
|
+
headers,
|
|
437
|
+
body: JSON.stringify({ reason: reason ?? null }),
|
|
438
|
+
});
|
|
439
|
+
if (!res.ok) {
|
|
440
|
+
throw new Error(`Apex workspace.setupState.skip failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
441
|
+
}
|
|
442
|
+
},
|
|
443
|
+
},
|
|
444
|
+
},
|
|
445
|
+
/**
|
|
446
|
+
* Data Sources registry — the producers that send events into this
|
|
447
|
+
* workspace (Website, iOS / Android apps, Backend). Mirrors
|
|
448
|
+
* /api/workspaces/<workspaceKey>/data-sources. `dataSourceId` is
|
|
449
|
+
* reporting-only; these methods manage the registry, not access control.
|
|
450
|
+
*/
|
|
451
|
+
dataSources: {
|
|
452
|
+
async list(opts) {
|
|
453
|
+
const qs = opts?.includeArchived ? "?includeArchived=true" : "";
|
|
454
|
+
const res = await fetch(`${root}/api/workspaces/${encodeURIComponent(cfg.workspaceKey)}/data-sources${qs}`, { headers });
|
|
455
|
+
if (!res.ok) {
|
|
456
|
+
throw new Error(`Apex dataSources.list failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
457
|
+
}
|
|
458
|
+
const json = (await res.json());
|
|
459
|
+
return json.data ?? [];
|
|
460
|
+
},
|
|
461
|
+
async get(id) {
|
|
462
|
+
const res = await fetch(`${root}/api/workspaces/${encodeURIComponent(cfg.workspaceKey)}/data-sources/${encodeURIComponent(id)}`, { headers });
|
|
463
|
+
if (!res.ok) {
|
|
464
|
+
throw new Error(`Apex dataSources.get failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
465
|
+
}
|
|
466
|
+
const json = (await res.json());
|
|
467
|
+
return json.data;
|
|
468
|
+
},
|
|
469
|
+
async create(params) {
|
|
470
|
+
const res = await fetch(`${root}/api/workspaces/${encodeURIComponent(cfg.workspaceKey)}/data-sources`, { method: "POST", headers, body: JSON.stringify(params) });
|
|
471
|
+
if (!res.ok) {
|
|
472
|
+
throw new Error(`Apex dataSources.create failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
473
|
+
}
|
|
474
|
+
const json = (await res.json());
|
|
475
|
+
return json.data;
|
|
476
|
+
},
|
|
477
|
+
async update(id, patch) {
|
|
478
|
+
const res = await fetch(`${root}/api/workspaces/${encodeURIComponent(cfg.workspaceKey)}/data-sources/${encodeURIComponent(id)}`, { method: "PATCH", headers, body: JSON.stringify(patch) });
|
|
479
|
+
if (!res.ok) {
|
|
480
|
+
throw new Error(`Apex dataSources.update failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
481
|
+
}
|
|
482
|
+
const json = (await res.json());
|
|
483
|
+
return json.data;
|
|
484
|
+
},
|
|
485
|
+
async archive(id) {
|
|
486
|
+
const res = await fetch(`${root}/api/workspaces/${encodeURIComponent(cfg.workspaceKey)}/data-sources/${encodeURIComponent(id)}`, { method: "DELETE", headers });
|
|
487
|
+
if (!res.ok) {
|
|
488
|
+
throw new Error(`Apex dataSources.archive failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
489
|
+
}
|
|
490
|
+
},
|
|
491
|
+
async health(id) {
|
|
492
|
+
const res = await fetch(`${root}/api/workspaces/${encodeURIComponent(cfg.workspaceKey)}/data-sources/${encodeURIComponent(id)}/health`, { headers });
|
|
493
|
+
if (!res.ok) {
|
|
494
|
+
throw new Error(`Apex dataSources.health failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
495
|
+
}
|
|
496
|
+
const json = (await res.json());
|
|
497
|
+
return json.data;
|
|
498
|
+
},
|
|
499
|
+
},
|
|
500
|
+
/**
|
|
501
|
+
* Unified analytics reads — per-source / per-platform / per-hostname
|
|
502
|
+
* breakdowns from the ingest-maintained rollups. Honors the source/
|
|
503
|
+
* platform/hostname/range filters the dashboard exposes.
|
|
504
|
+
*/
|
|
505
|
+
analytics: {
|
|
506
|
+
async sources(opts) {
|
|
507
|
+
const qs = new URLSearchParams();
|
|
508
|
+
if (opts?.days)
|
|
509
|
+
qs.set("days", String(opts.days));
|
|
510
|
+
if (opts?.source)
|
|
511
|
+
qs.set("source", opts.source);
|
|
512
|
+
const suffix = qs.toString() ? `?${qs}` : "";
|
|
513
|
+
const res = await fetch(`${root}/api/analytics/sources${suffix}`, {
|
|
514
|
+
headers,
|
|
515
|
+
});
|
|
516
|
+
if (!res.ok) {
|
|
517
|
+
throw new Error(`Apex analytics.sources failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
518
|
+
}
|
|
519
|
+
const json = (await res.json());
|
|
520
|
+
return json.data;
|
|
521
|
+
},
|
|
522
|
+
async hostnames(opts) {
|
|
523
|
+
const qs = opts?.limit ? `?limit=${opts.limit}` : "";
|
|
524
|
+
const res = await fetch(`${root}/api/analytics/hostnames${qs}`, {
|
|
525
|
+
headers,
|
|
526
|
+
});
|
|
527
|
+
if (!res.ok) {
|
|
528
|
+
throw new Error(`Apex analytics.hostnames failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
529
|
+
}
|
|
530
|
+
const json = (await res.json());
|
|
531
|
+
return json.data ?? [];
|
|
532
|
+
},
|
|
533
|
+
},
|
|
534
|
+
async signEndUserToken(params) {
|
|
535
|
+
const res = await fetch(`${root}/api/v1/tokens/end-user`, {
|
|
536
|
+
method: "POST",
|
|
537
|
+
headers,
|
|
538
|
+
body: JSON.stringify(params),
|
|
539
|
+
});
|
|
540
|
+
if (!res.ok) {
|
|
541
|
+
throw new Error(`Apex signEndUserToken failed (${res.status}): ${await res.text().catch(() => "")}`);
|
|
542
|
+
}
|
|
543
|
+
const json = (await res.json());
|
|
544
|
+
return json.data;
|
|
545
|
+
},
|
|
154
546
|
};
|
|
155
547
|
}
|
|
156
548
|
//# sourceMappingURL=management.js.map
|
package/dist/management.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"management.js","sourceRoot":"","sources":["../src/management.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"management.js","sourceRoot":"","sources":["../src/management.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MWO-009 — Apex PLG Event Catalog.
|
|
3
|
+
*
|
|
4
|
+
* Curated, typed event schemas for the eight most common PLG
|
|
5
|
+
* lifecycle moments. Customers import these interfaces directly so
|
|
6
|
+
* their `apex.track()` calls type-check end-to-end, and the Apex
|
|
7
|
+
* dashboard uses them to derive activation / expansion / retention
|
|
8
|
+
* rollups without bespoke queries per customer.
|
|
9
|
+
*
|
|
10
|
+
* import { EVENTS, type ActivatedEvent } from "@apex-inc/sdk/plg-events";
|
|
11
|
+
* apex.track(EVENTS.ACTIVATED, { daysToActivation: 2 } satisfies ActivatedEvent);
|
|
12
|
+
*
|
|
13
|
+
* Adding a new event:
|
|
14
|
+
* 1. Add its name to `EVENTS`.
|
|
15
|
+
* 2. Add its typed interface below.
|
|
16
|
+
* 3. Update the doc page at /docs/plg-event-catalog (Phase 10).
|
|
17
|
+
*
|
|
18
|
+
* Every event is optional. There's no requirement that a customer
|
|
19
|
+
* emit any of these — the catalog is a convention, not a gate.
|
|
20
|
+
* Archived event definitions (Phase 8 follow-up) will stop deriving
|
|
21
|
+
* new rollups but preserve their historical data.
|
|
22
|
+
*/
|
|
23
|
+
export declare const EVENTS: {
|
|
24
|
+
readonly SIGNUP: "signup";
|
|
25
|
+
readonly ACTIVATED: "activated";
|
|
26
|
+
readonly FEATURE_FIRST_USE: "feature_first_use";
|
|
27
|
+
readonly AHA_MOMENT: "aha_moment";
|
|
28
|
+
readonly EXPANSION: "expansion";
|
|
29
|
+
readonly CONTRACTION: "contraction";
|
|
30
|
+
readonly REACTIVATION: "reactivation";
|
|
31
|
+
readonly CHURN: "churn";
|
|
32
|
+
};
|
|
33
|
+
export type PLGEventName = (typeof EVENTS)[keyof typeof EVENTS];
|
|
34
|
+
/**
|
|
35
|
+
* signup — a user created an account. Fire once per user lifecycle.
|
|
36
|
+
* Revenue shouldn't be expected yet; don't confuse with `converted`.
|
|
37
|
+
*/
|
|
38
|
+
export interface SignupEvent {
|
|
39
|
+
/** Auth method (`email`, `google`, `github`, etc.). Optional. */
|
|
40
|
+
method?: string;
|
|
41
|
+
/** Referral source if known. Optional. */
|
|
42
|
+
referralSource?: string;
|
|
43
|
+
/** Invitation code if the signup came from an invite. Optional. */
|
|
44
|
+
invitationId?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* activated — user hit the product's core activation milestone. You
|
|
48
|
+
* define the milestone per product (e.g. "sent a first message").
|
|
49
|
+
* Fire once per user.
|
|
50
|
+
*/
|
|
51
|
+
export interface ActivatedEvent {
|
|
52
|
+
daysToActivation?: number;
|
|
53
|
+
/** Free-form label for the moment ("first message sent"). */
|
|
54
|
+
milestone?: string;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* feature_first_use — user used a named feature for the first time.
|
|
58
|
+
* Emit on every feature, only on first use. Use `apex.feature()` for
|
|
59
|
+
* recurring usage tracking.
|
|
60
|
+
*/
|
|
61
|
+
export interface FeatureFirstUseEvent {
|
|
62
|
+
featureKey: string;
|
|
63
|
+
daysFromSignup?: number;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* aha_moment — the user saw the product's value. Often emitted after
|
|
67
|
+
* a specific sequence ("connected a source and ran their first
|
|
68
|
+
* experiment"). Definition is customer-specific.
|
|
69
|
+
*/
|
|
70
|
+
export interface AhaMomentEvent {
|
|
71
|
+
label: string;
|
|
72
|
+
daysFromSignup?: number;
|
|
73
|
+
/** Confidence signal, 0-1, if the customer's model computes it. */
|
|
74
|
+
confidence?: number;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* expansion — paying account increased spend (upgrade, more seats,
|
|
78
|
+
* more usage). Amount in positive units of the account's currency.
|
|
79
|
+
*/
|
|
80
|
+
export interface ExpansionEvent {
|
|
81
|
+
amount: number;
|
|
82
|
+
currency?: string;
|
|
83
|
+
driver?: "plan_upgrade" | "seat_add" | "usage_overage" | "other";
|
|
84
|
+
fromPlan?: string;
|
|
85
|
+
toPlan?: string;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* contraction — paying account decreased spend without churning
|
|
89
|
+
* outright. Amount in positive units (representing the reduction).
|
|
90
|
+
*/
|
|
91
|
+
export interface ContractionEvent {
|
|
92
|
+
amount: number;
|
|
93
|
+
currency?: string;
|
|
94
|
+
driver?: "plan_downgrade" | "seat_removed" | "usage_drop" | "other";
|
|
95
|
+
fromPlan?: string;
|
|
96
|
+
toPlan?: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* reactivation — a churned account came back. Emit once on re-signup
|
|
100
|
+
* or re-activation after a cancel.
|
|
101
|
+
*/
|
|
102
|
+
export interface ReactivationEvent {
|
|
103
|
+
daysInactive?: number;
|
|
104
|
+
reason?: string;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* churn — account cancelled or let subscription lapse. Fire once on
|
|
108
|
+
* the churn transition; emit `reactivation` later if they come back.
|
|
109
|
+
*/
|
|
110
|
+
export interface ChurnEvent {
|
|
111
|
+
reason?: string;
|
|
112
|
+
cancelType?: "voluntary" | "involuntary";
|
|
113
|
+
daysActive?: number;
|
|
114
|
+
}
|
|
115
|
+
export type PLGEventPayload = SignupEvent | ActivatedEvent | FeatureFirstUseEvent | AhaMomentEvent | ExpansionEvent | ContractionEvent | ReactivationEvent | ChurnEvent;
|
|
116
|
+
/**
|
|
117
|
+
* Typed `apex.track` wrapper specific to PLG events. Not a hard gate —
|
|
118
|
+
* `apex.track()` still accepts any event name — but gives customers
|
|
119
|
+
* compile-time safety on the curated set.
|
|
120
|
+
*/
|
|
121
|
+
export declare function trackPlgEvent<K extends PLGEventName>(_apex: {
|
|
122
|
+
track: (event: string, properties?: Record<string, unknown>) => void;
|
|
123
|
+
}, name: K, payload: PayloadForEvent<K>): void;
|
|
124
|
+
type PayloadForEvent<K extends PLGEventName> = K extends typeof EVENTS.SIGNUP ? SignupEvent : K extends typeof EVENTS.ACTIVATED ? ActivatedEvent : K extends typeof EVENTS.FEATURE_FIRST_USE ? FeatureFirstUseEvent : K extends typeof EVENTS.AHA_MOMENT ? AhaMomentEvent : K extends typeof EVENTS.EXPANSION ? ExpansionEvent : K extends typeof EVENTS.CONTRACTION ? ContractionEvent : K extends typeof EVENTS.REACTIVATION ? ReactivationEvent : K extends typeof EVENTS.CHURN ? ChurnEvent : never;
|
|
125
|
+
/**
|
|
126
|
+
* Read-only exhaustive list of the catalog. Handy for UI surfaces
|
|
127
|
+
* that need to render "all PLG events we know about."
|
|
128
|
+
*/
|
|
129
|
+
export declare const ALL_PLG_EVENTS: readonly PLGEventName[];
|
|
130
|
+
export {};
|
|
131
|
+
//# sourceMappingURL=plg-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plg-events.d.ts","sourceRoot":"","sources":["../src/plg-events.ts"],"names":[],"mappings":"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"}
|