@cstar.help/js 0.18.1 → 0.18.4
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 +14 -8
- package/dist/auth/index.cjs +16 -13
- package/dist/auth/index.d.cts +1 -1
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.js +16 -13
- package/dist/chat/index.d.cts +2 -2
- package/dist/chat/index.d.ts +2 -2
- package/dist/community/index.cjs +16 -13
- package/dist/community/index.d.cts +3 -3
- package/dist/community/index.d.ts +3 -3
- package/dist/community/index.js +16 -13
- package/dist/{errors-bW8CwTn4.d.cts → errors-BnUUTVlT.d.cts} +2 -1
- package/dist/{errors-bW8CwTn4.d.ts → errors-BnUUTVlT.d.ts} +2 -1
- package/dist/index.cjs +283 -123
- package/dist/index.d.cts +185 -64
- package/dist/index.d.ts +185 -64
- package/dist/index.js +283 -123
- package/dist/library/index.cjs +16 -13
- package/dist/library/index.d.cts +1 -1
- package/dist/library/index.d.ts +1 -1
- package/dist/library/index.js +16 -13
- package/dist/quickhelp/index.cjs +20 -15
- package/dist/quickhelp/index.d.cts +26 -2
- package/dist/quickhelp/index.d.ts +26 -2
- package/dist/quickhelp/index.js +20 -15
- package/dist/{types-DF7GprCV.d.cts → types-BHCahwev.d.cts} +3 -3
- package/dist/{types-DF7GprCV.d.ts → types-BHCahwev.d.ts} +3 -3
- package/dist/webhook/index.d.cts +1 -1
- package/dist/webhook/index.d.ts +1 -1
- package/dist/webhook/node.d.cts +1 -1
- package/dist/webhook/node.d.ts +1 -1
- package/dist/{webhookEvents-Lqpsj935.d.cts → webhookEvents-YQer37My.d.cts} +208 -83
- package/dist/{webhookEvents-Lqpsj935.d.ts → webhookEvents-YQer37My.d.ts} +208 -83
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -10,7 +10,7 @@ var ErrorType = {
|
|
|
10
10
|
API_ERROR: "api_error",
|
|
11
11
|
SERVER_ERROR: "server_error"
|
|
12
12
|
};
|
|
13
|
-
var DEFAULT_DOC_URL = "https://cstar.help/developers/
|
|
13
|
+
var DEFAULT_DOC_URL = "https://www.cstar.help/developers/errors";
|
|
14
14
|
function normalizeArgs(messageOrStatus, maybeBody, defaults) {
|
|
15
15
|
if (typeof messageOrStatus === "string") {
|
|
16
16
|
return {
|
|
@@ -53,7 +53,7 @@ var CStarAuthenticationErrorImpl = class extends CStarErrorImpl {
|
|
|
53
53
|
const { statusCode, body: resolved } = normalizeArgs(messageOrStatus, body, {
|
|
54
54
|
type: ErrorType.AUTHENTICATION_ERROR,
|
|
55
55
|
code: "authentication_failed",
|
|
56
|
-
doc_url: `${DEFAULT_DOC_URL}#authentication-
|
|
56
|
+
doc_url: `${DEFAULT_DOC_URL}#authentication-errors`
|
|
57
57
|
});
|
|
58
58
|
super(statusCode, resolved);
|
|
59
59
|
this.name = "CStarAuthenticationError";
|
|
@@ -64,11 +64,11 @@ var CStarRateLimitErrorImpl = class extends CStarErrorImpl {
|
|
|
64
64
|
const { statusCode, body: resolved } = normalizeArgs(messageOrStatus, body, {
|
|
65
65
|
type: ErrorType.RATE_LIMIT_ERROR,
|
|
66
66
|
code: "rate_limit_exceeded",
|
|
67
|
-
doc_url: `${DEFAULT_DOC_URL}#
|
|
67
|
+
doc_url: `${DEFAULT_DOC_URL}#rate_limit_exceeded`
|
|
68
68
|
});
|
|
69
69
|
super(statusCode === 0 ? 429 : statusCode, resolved);
|
|
70
70
|
this.name = "CStarRateLimitError";
|
|
71
|
-
this.retryAfter = retryAfter
|
|
71
|
+
this.retryAfter = retryAfter;
|
|
72
72
|
}
|
|
73
73
|
};
|
|
74
74
|
var CStarNotFoundErrorImpl = class extends CStarErrorImpl {
|
|
@@ -76,7 +76,7 @@ var CStarNotFoundErrorImpl = class extends CStarErrorImpl {
|
|
|
76
76
|
const { statusCode, body: resolved } = normalizeArgs(messageOrStatus, body, {
|
|
77
77
|
type: ErrorType.NOT_FOUND_ERROR,
|
|
78
78
|
code: "resource_not_found",
|
|
79
|
-
doc_url: `${DEFAULT_DOC_URL}#
|
|
79
|
+
doc_url: `${DEFAULT_DOC_URL}#resource_not_found`
|
|
80
80
|
});
|
|
81
81
|
super(statusCode, resolved);
|
|
82
82
|
this.name = "CStarNotFoundError";
|
|
@@ -87,7 +87,7 @@ var CStarValidationErrorImpl = class extends CStarErrorImpl {
|
|
|
87
87
|
const { statusCode, body: resolved } = normalizeArgs(messageOrStatus, body, {
|
|
88
88
|
type: ErrorType.INVALID_REQUEST_ERROR,
|
|
89
89
|
code: "validation_error",
|
|
90
|
-
doc_url: `${DEFAULT_DOC_URL}#
|
|
90
|
+
doc_url: `${DEFAULT_DOC_URL}#invalid-request-errors`
|
|
91
91
|
});
|
|
92
92
|
super(statusCode, resolved);
|
|
93
93
|
this.name = "CStarValidationError";
|
|
@@ -98,7 +98,7 @@ var CStarPermissionErrorImpl = class extends CStarErrorImpl {
|
|
|
98
98
|
const { statusCode, body: resolved } = normalizeArgs(messageOrStatus, body, {
|
|
99
99
|
type: ErrorType.PERMISSION_ERROR,
|
|
100
100
|
code: "permission_denied",
|
|
101
|
-
doc_url: `${DEFAULT_DOC_URL}#
|
|
101
|
+
doc_url: `${DEFAULT_DOC_URL}#insufficient_permissions`
|
|
102
102
|
});
|
|
103
103
|
super(statusCode, resolved);
|
|
104
104
|
this.name = "CStarPermissionError";
|
|
@@ -109,7 +109,7 @@ var CStarConflictErrorImpl = class extends CStarErrorImpl {
|
|
|
109
109
|
const { statusCode, body: resolved } = normalizeArgs(messageOrStatus, body, {
|
|
110
110
|
type: ErrorType.CONFLICT_ERROR,
|
|
111
111
|
code: "conflict",
|
|
112
|
-
doc_url: `${DEFAULT_DOC_URL}#
|
|
112
|
+
doc_url: `${DEFAULT_DOC_URL}#resource_conflict`
|
|
113
113
|
});
|
|
114
114
|
super(statusCode, resolved);
|
|
115
115
|
this.name = "CStarConflictError";
|
|
@@ -120,7 +120,7 @@ var CStarServerErrorImpl = class extends CStarErrorImpl {
|
|
|
120
120
|
const { statusCode, body: resolved } = normalizeArgs(messageOrStatus, body, {
|
|
121
121
|
type: ErrorType.SERVER_ERROR,
|
|
122
122
|
code: "server_error",
|
|
123
|
-
doc_url: `${DEFAULT_DOC_URL}#server-
|
|
123
|
+
doc_url: `${DEFAULT_DOC_URL}#server-errors`
|
|
124
124
|
});
|
|
125
125
|
super(statusCode, resolved);
|
|
126
126
|
this.name = "CStarServerError";
|
|
@@ -131,7 +131,7 @@ var CStarFeatureDisabledErrorImpl = class extends CStarErrorImpl {
|
|
|
131
131
|
const { statusCode, body: resolved } = normalizeArgs(messageOrStatus, body, {
|
|
132
132
|
type: ErrorType.FEATURE_NOT_CONFIGURED,
|
|
133
133
|
code: "feature_not_configured",
|
|
134
|
-
doc_url: `${DEFAULT_DOC_URL}#
|
|
134
|
+
doc_url: `${DEFAULT_DOC_URL}#feature_disabled`
|
|
135
135
|
});
|
|
136
136
|
super(statusCode, resolved);
|
|
137
137
|
this.name = "CStarFeatureDisabledError";
|
|
@@ -141,12 +141,12 @@ var CStarFeatureDisabledErrorImpl = class extends CStarErrorImpl {
|
|
|
141
141
|
};
|
|
142
142
|
var CStarRealtimeUnavailableErrorImpl = class extends CStarErrorImpl {
|
|
143
143
|
constructor(message) {
|
|
144
|
-
const resolved = message ?? "EventSource is not available in this environment. Real-time subscriptions only work in the browser. Move the call to a client-only path (`useEffect` / `onMount`), or pass an `eventSource` polyfill via the realtime options. See https://cstar.help/developers/sdk/realtime#ssr";
|
|
144
|
+
const resolved = message ?? "EventSource is not available in this environment. Real-time subscriptions only work in the browser. Move the call to a client-only path (`useEffect` / `onMount`), or pass an `eventSource` polyfill via the realtime options. See https://www.cstar.help/developers/sdk/js/realtime#ssr";
|
|
145
145
|
super(0, {
|
|
146
146
|
type: ErrorType.API_ERROR,
|
|
147
147
|
code: "realtime_unavailable",
|
|
148
148
|
message: resolved,
|
|
149
|
-
doc_url: "https://cstar.help/developers/sdk/realtime#ssr"
|
|
149
|
+
doc_url: "https://www.cstar.help/developers/sdk/js/realtime#ssr"
|
|
150
150
|
});
|
|
151
151
|
this.name = "CStarRealtimeUnavailableError";
|
|
152
152
|
}
|
|
@@ -222,7 +222,10 @@ function parseError(statusCode, body, retryAfter) {
|
|
|
222
222
|
doc_url: DEFAULT_DOC_URL
|
|
223
223
|
};
|
|
224
224
|
if (statusCode === 429) {
|
|
225
|
-
return new CStarRateLimitError(statusCode, errorBody, retryAfter
|
|
225
|
+
return new CStarRateLimitError(statusCode, errorBody, retryAfter);
|
|
226
|
+
}
|
|
227
|
+
if (errorBody.code === "feature_disabled") {
|
|
228
|
+
return new CStarFeatureDisabledError(statusCode, errorBody);
|
|
226
229
|
}
|
|
227
230
|
const StatusCls = STATUS_TO_CLASS[statusCode];
|
|
228
231
|
if (StatusCls) {
|
|
@@ -237,7 +240,7 @@ function parseError(statusCode, body, retryAfter) {
|
|
|
237
240
|
}
|
|
238
241
|
|
|
239
242
|
// src/client.ts
|
|
240
|
-
var SDK_VERSION = "0.18.
|
|
243
|
+
var SDK_VERSION = "0.18.4";
|
|
241
244
|
var DEFAULT_BASE_URL = "https://www.cstar.help";
|
|
242
245
|
var DEFAULT_API_VERSION = "2026-03-01";
|
|
243
246
|
var DEFAULT_MAX_RETRIES = 3;
|
|
@@ -257,7 +260,7 @@ var HttpClient = class {
|
|
|
257
260
|
this.lastMeta = { requestId: null, timestamp: null, pagination: null };
|
|
258
261
|
if (!config || typeof config.apiKey !== "string" || config.apiKey.length === 0) {
|
|
259
262
|
throw new Error(
|
|
260
|
-
"[cStar] CStarClient: apiKey is required. Pass a secret key (sk_live_... / sk_test_...). Publishable keys (pk_...) cannot read team endpoints; use them with LibraryClient or CommunityClient. See https://cstar.help/developers/quickstart"
|
|
263
|
+
"[cStar] CStarClient: apiKey is required. Pass a secret key (sk_live_... / sk_test_...). Publishable keys (pk_...) cannot read team endpoints; use them with LibraryClient or CommunityClient. See https://www.cstar.help/developers/quickstart"
|
|
261
264
|
);
|
|
262
265
|
}
|
|
263
266
|
if (typeof config.teamId !== "string" || config.teamId.length === 0) {
|
|
@@ -320,7 +323,7 @@ var HttpClient = class {
|
|
|
320
323
|
let inProgressWaitMs = null;
|
|
321
324
|
for (let attempt = 0; attempt <= this.config.maxRetries; attempt++) {
|
|
322
325
|
if (attempt > 0 && lastError) {
|
|
323
|
-
const delay = inProgressWaitMs ?? (lastError instanceof CStarRateLimitError ? Math.min(lastError.retryAfter * 1e3, RATE_LIMIT_RETRY_CAP_MS) : this.getBackoffDelay(attempt));
|
|
326
|
+
const delay = inProgressWaitMs ?? (lastError instanceof CStarRateLimitError ? Math.min((lastError.retryAfter ?? 1) * 1e3, RATE_LIMIT_RETRY_CAP_MS) : this.getBackoffDelay(attempt));
|
|
324
327
|
inProgressWaitMs = null;
|
|
325
328
|
await this.sleep(delay);
|
|
326
329
|
}
|
|
@@ -338,7 +341,7 @@ var HttpClient = class {
|
|
|
338
341
|
type: "connection_error",
|
|
339
342
|
code: "network_error",
|
|
340
343
|
message: `Network request failed: ${networkErr.message}`,
|
|
341
|
-
doc_url: "https://www.cstar.help/developers/errors#
|
|
344
|
+
doc_url: "https://www.cstar.help/developers/errors#network_error"
|
|
342
345
|
});
|
|
343
346
|
if (canRetryAmbiguousFailure && attempt < this.config.maxRetries) continue;
|
|
344
347
|
throw lastError;
|
|
@@ -374,7 +377,8 @@ var HttpClient = class {
|
|
|
374
377
|
}
|
|
375
378
|
if (response.status === 429) {
|
|
376
379
|
lastError = parseError(429, errorBody, retryAfter);
|
|
377
|
-
|
|
380
|
+
const worthWaiting = retryAfter !== void 0 && retryAfter * 1e3 <= RATE_LIMIT_RETRY_CAP_MS;
|
|
381
|
+
if (worthWaiting && attempt < this.config.maxRetries) continue;
|
|
378
382
|
throw lastError;
|
|
379
383
|
}
|
|
380
384
|
lastError = parseError(response.status, errorBody);
|
|
@@ -1211,6 +1215,15 @@ var WebhooksResource = class extends BaseResource {
|
|
|
1211
1215
|
constructor(client) {
|
|
1212
1216
|
super(client, "/webhooks");
|
|
1213
1217
|
}
|
|
1218
|
+
/**
|
|
1219
|
+
* Create a webhook endpoint. Its answer carries the signing secret, so the
|
|
1220
|
+
* API keeps it out of the Idempotency-Key cache: an `idempotencyKey` is
|
|
1221
|
+
* not sent, and a network error or 5xx is not retried, since the webhook
|
|
1222
|
+
* may already exist. List webhooks before creating it again.
|
|
1223
|
+
*/
|
|
1224
|
+
async create(params, _options) {
|
|
1225
|
+
return this.client.request("POST", this.basePath, { body: params });
|
|
1226
|
+
}
|
|
1214
1227
|
/** Send a test delivery to a webhook endpoint. */
|
|
1215
1228
|
async test(webhookId, params) {
|
|
1216
1229
|
return this.client.request(
|
|
@@ -1245,11 +1258,14 @@ var WebhooksResource = class extends BaseResource {
|
|
|
1245
1258
|
async unsubscribe(subscriptionId) {
|
|
1246
1259
|
await this.client.request("DELETE", `/webhooks/subscribe/${subscriptionId}`);
|
|
1247
1260
|
}
|
|
1248
|
-
/**
|
|
1249
|
-
|
|
1261
|
+
/**
|
|
1262
|
+
* Register a CLI listener (returns listenerId and signing secret). The API
|
|
1263
|
+
* ignores Idempotency-Key here (the answer is a secret), so an
|
|
1264
|
+
* `idempotencyKey` is not sent and a network error or 5xx is not retried.
|
|
1265
|
+
*/
|
|
1266
|
+
async listen(params, _options) {
|
|
1250
1267
|
return this.client.request("POST", "/webhooks/listen", {
|
|
1251
|
-
body: params
|
|
1252
|
-
idempotencyKey: options?.idempotencyKey
|
|
1268
|
+
body: params
|
|
1253
1269
|
});
|
|
1254
1270
|
}
|
|
1255
1271
|
/** Deregister a CLI listener. */
|
|
@@ -1659,11 +1675,15 @@ var AttachmentsResource = class {
|
|
|
1659
1675
|
params?.bucket ? { query: { bucket: params.bucket } } : void 0
|
|
1660
1676
|
);
|
|
1661
1677
|
}
|
|
1662
|
-
/**
|
|
1663
|
-
|
|
1678
|
+
/**
|
|
1679
|
+
* Delete a stored file. Pass `storagePath` and `bucket` from `list()`, as
|
|
1680
|
+
* for `get()`. A path with no file in that bucket is a 404.
|
|
1681
|
+
*/
|
|
1682
|
+
async del(storagePath, params) {
|
|
1664
1683
|
return this.client.request(
|
|
1665
1684
|
"DELETE",
|
|
1666
|
-
`/attachments/${
|
|
1685
|
+
`/attachments/${storagePath}`,
|
|
1686
|
+
params?.bucket ? { query: { bucket: params.bucket } } : void 0
|
|
1667
1687
|
);
|
|
1668
1688
|
}
|
|
1669
1689
|
};
|
|
@@ -1837,10 +1857,9 @@ var ExportResource = class {
|
|
|
1837
1857
|
constructor(client) {
|
|
1838
1858
|
this.client = client;
|
|
1839
1859
|
}
|
|
1840
|
-
async create(params,
|
|
1860
|
+
async create(params, _options) {
|
|
1841
1861
|
return this.client.request("POST", "/export", {
|
|
1842
1862
|
body: params,
|
|
1843
|
-
idempotencyKey: options?.idempotencyKey,
|
|
1844
1863
|
responseType: params.format === "csv" ? "text" : "json"
|
|
1845
1864
|
});
|
|
1846
1865
|
}
|
|
@@ -2056,7 +2075,10 @@ var GameActivityResource = class {
|
|
|
2056
2075
|
query: params ? { ...params } : void 0
|
|
2057
2076
|
});
|
|
2058
2077
|
}
|
|
2059
|
-
/**
|
|
2078
|
+
/**
|
|
2079
|
+
* Get activity for a specific member. `memberId` is the player's user id:
|
|
2080
|
+
* the `memberId` game responses return, and `userId` on `members.list()`.
|
|
2081
|
+
*/
|
|
2060
2082
|
async forMember(memberId, params) {
|
|
2061
2083
|
return this.client.request("GET", `/game/activity/member/${memberId}`, {
|
|
2062
2084
|
query: params ? { ...params } : void 0
|
|
@@ -2245,7 +2267,10 @@ var GameResource = class {
|
|
|
2245
2267
|
query: params ? { ...params } : void 0
|
|
2246
2268
|
});
|
|
2247
2269
|
}
|
|
2248
|
-
/**
|
|
2270
|
+
/**
|
|
2271
|
+
* Get a specific player's stats. `memberId` is the player's user id: the
|
|
2272
|
+
* `memberId` game responses return, and `userId` on `members.list()`.
|
|
2273
|
+
*/
|
|
2249
2274
|
async getPlayer(memberId) {
|
|
2250
2275
|
return this.client.request("GET", `/game/player/${memberId}`);
|
|
2251
2276
|
}
|
|
@@ -2534,9 +2559,9 @@ var OfflineQueue = class {
|
|
|
2534
2559
|
// src/types/generated/webhookEvents.ts
|
|
2535
2560
|
var WEBHOOK_EVENT_SAMPLES = {
|
|
2536
2561
|
"agent.preferences_updated": {
|
|
2537
|
-
"team_id": "
|
|
2538
|
-
"member_id": "
|
|
2539
|
-
"agent_id": "
|
|
2562
|
+
"team_id": "550e8400-e29b-41d4-a716-446655440000",
|
|
2563
|
+
"member_id": "550e8400-e29b-41d4-a716-446655440010",
|
|
2564
|
+
"agent_id": "550e8400-e29b-41d4-a716-446655440001",
|
|
2540
2565
|
"changed": [
|
|
2541
2566
|
"boringMode"
|
|
2542
2567
|
],
|
|
@@ -2546,143 +2571,197 @@ var WEBHOOK_EVENT_SAMPLES = {
|
|
|
2546
2571
|
},
|
|
2547
2572
|
"article.created": {
|
|
2548
2573
|
"article": {
|
|
2549
|
-
"id": "
|
|
2574
|
+
"id": "art_Yb3kQ9mT2pLx",
|
|
2550
2575
|
"title": "How to reset your password",
|
|
2551
2576
|
"slug": "how-to-reset-your-password",
|
|
2577
|
+
"status": "draft",
|
|
2552
2578
|
"is_public": false,
|
|
2553
|
-
"
|
|
2579
|
+
"published_at": "2026-04-27T19:00:00.000Z",
|
|
2580
|
+
"created_at": "2026-04-27T18:42:11.000Z",
|
|
2581
|
+
"updated_at": "2026-04-27T19:00:00.000Z"
|
|
2554
2582
|
}
|
|
2555
2583
|
},
|
|
2556
2584
|
"article.deleted": {
|
|
2557
|
-
"id": "
|
|
2585
|
+
"id": "art_Yb3kQ9mT2pLx"
|
|
2558
2586
|
},
|
|
2559
2587
|
"article.published": {
|
|
2560
2588
|
"article": {
|
|
2561
|
-
"id": "
|
|
2589
|
+
"id": "art_Yb3kQ9mT2pLx",
|
|
2562
2590
|
"title": "How to reset your password",
|
|
2563
2591
|
"slug": "how-to-reset-your-password",
|
|
2592
|
+
"status": "published",
|
|
2564
2593
|
"is_public": true,
|
|
2565
|
-
"published_at": "2026-04-27T19:00:00.000Z"
|
|
2594
|
+
"published_at": "2026-04-27T19:00:00.000Z",
|
|
2595
|
+
"created_at": "2026-04-27T18:42:11.000Z",
|
|
2596
|
+
"updated_at": "2026-04-27T19:00:00.000Z"
|
|
2566
2597
|
}
|
|
2567
2598
|
},
|
|
2568
2599
|
"article.updated": {
|
|
2569
2600
|
"article": {
|
|
2570
|
-
"id": "
|
|
2601
|
+
"id": "art_Yb3kQ9mT2pLx",
|
|
2571
2602
|
"title": "How to reset your password (updated)",
|
|
2572
2603
|
"slug": "how-to-reset-your-password",
|
|
2573
|
-
"
|
|
2604
|
+
"status": "published",
|
|
2605
|
+
"is_public": true,
|
|
2606
|
+
"published_at": "2026-04-27T19:00:00.000Z",
|
|
2607
|
+
"created_at": "2026-04-27T18:42:11.000Z",
|
|
2608
|
+
"updated_at": "2026-04-27T19:00:00.000Z"
|
|
2609
|
+
},
|
|
2610
|
+
"changes": {
|
|
2611
|
+
"title": {
|
|
2612
|
+
"from": "How to reset your password",
|
|
2613
|
+
"to": "How to reset your password (updated)"
|
|
2614
|
+
},
|
|
2615
|
+
"slug": {
|
|
2616
|
+
"from": "reset-password",
|
|
2617
|
+
"to": "how-to-reset-your-password"
|
|
2618
|
+
},
|
|
2619
|
+
"status": {
|
|
2620
|
+
"from": "draft",
|
|
2621
|
+
"to": "published"
|
|
2622
|
+
},
|
|
2623
|
+
"is_public": {
|
|
2624
|
+
"from": false,
|
|
2625
|
+
"to": true
|
|
2626
|
+
}
|
|
2574
2627
|
}
|
|
2575
2628
|
},
|
|
2576
2629
|
"boss.damaged": {
|
|
2577
2630
|
"boss": {
|
|
2578
|
-
"
|
|
2631
|
+
"name": "The Thunder Drake",
|
|
2579
2632
|
"current_hp": 740
|
|
2580
2633
|
},
|
|
2581
2634
|
"damage": 120,
|
|
2635
|
+
"defeated": false,
|
|
2582
2636
|
"by": {
|
|
2583
|
-
"agent_id": "
|
|
2584
|
-
"name": "Riley"
|
|
2637
|
+
"agent_id": "550e8400-e29b-41d4-a716-446655440001"
|
|
2585
2638
|
}
|
|
2586
2639
|
},
|
|
2587
2640
|
"boss.defeated": {
|
|
2588
2641
|
"boss": {
|
|
2589
|
-
"
|
|
2590
|
-
"
|
|
2642
|
+
"name": "The Thunder Drake",
|
|
2643
|
+
"level": 4
|
|
2591
2644
|
},
|
|
2592
2645
|
"final_blow_by": {
|
|
2593
|
-
"agent_id": "
|
|
2646
|
+
"agent_id": "550e8400-e29b-41d4-a716-446655440001",
|
|
2594
2647
|
"name": "Riley"
|
|
2595
|
-
}
|
|
2596
|
-
"team_xp_awarded": 1500
|
|
2648
|
+
}
|
|
2597
2649
|
},
|
|
2598
2650
|
"boss.spawned": {
|
|
2599
2651
|
"boss": {
|
|
2600
2652
|
"id": "boss_thunder_drake",
|
|
2601
2653
|
"name": "The Thunder Drake",
|
|
2602
2654
|
"level": 4,
|
|
2655
|
+
"type": "dragon",
|
|
2656
|
+
"difficulty": "hard",
|
|
2603
2657
|
"max_hp": 1200
|
|
2604
2658
|
}
|
|
2605
2659
|
},
|
|
2606
2660
|
"community_post.commented": {
|
|
2661
|
+
"post": {
|
|
2662
|
+
"id": "550e8400-e29b-41d4-a716-446655440040"
|
|
2663
|
+
},
|
|
2607
2664
|
"comment": {
|
|
2608
|
-
"id": "
|
|
2609
|
-
"post_id": "
|
|
2610
|
-
"
|
|
2611
|
-
"
|
|
2665
|
+
"id": "550e8400-e29b-41d4-a716-446655440041",
|
|
2666
|
+
"post_id": "550e8400-e29b-41d4-a716-446655440040",
|
|
2667
|
+
"body": "I would love this. Bumping for visibility.",
|
|
2668
|
+
"is_official": false,
|
|
2669
|
+
"author_name": "Casey Patel",
|
|
2612
2670
|
"created_at": "2026-04-27T18:55:02.000Z"
|
|
2613
2671
|
}
|
|
2614
2672
|
},
|
|
2615
2673
|
"community_post.created": {
|
|
2616
2674
|
"post": {
|
|
2617
|
-
"id": "
|
|
2618
|
-
"prefixed_id": "IDEA-42",
|
|
2675
|
+
"id": "550e8400-e29b-41d4-a716-446655440040",
|
|
2619
2676
|
"title": "Add Slack-style threading to tickets",
|
|
2620
2677
|
"status": "open",
|
|
2621
2678
|
"visibility": "public",
|
|
2622
|
-
"topic": "feature-requests",
|
|
2623
2679
|
"created_at": "2026-04-27T18:42:11.000Z"
|
|
2624
2680
|
}
|
|
2625
2681
|
},
|
|
2626
2682
|
"community_post.deleted": {
|
|
2627
2683
|
"post": {
|
|
2628
|
-
"id": "
|
|
2629
|
-
"prefixed_id": "IDEA-42",
|
|
2684
|
+
"id": "550e8400-e29b-41d4-a716-446655440040",
|
|
2630
2685
|
"title": "Add Slack-style threading to tickets"
|
|
2631
2686
|
}
|
|
2632
2687
|
},
|
|
2633
2688
|
"community_post.status_changed": {
|
|
2634
2689
|
"post": {
|
|
2635
|
-
"id": "
|
|
2690
|
+
"id": "550e8400-e29b-41d4-a716-446655440040",
|
|
2636
2691
|
"title": "Add Slack-style threading to tickets",
|
|
2637
2692
|
"status": "planned",
|
|
2638
|
-
"visibility": "public"
|
|
2639
|
-
|
|
2693
|
+
"visibility": "public",
|
|
2694
|
+
"created_at": "2026-04-27T18:42:11.000Z"
|
|
2695
|
+
},
|
|
2696
|
+
"previous_status": "open"
|
|
2640
2697
|
},
|
|
2641
2698
|
"community_post.updated": {
|
|
2642
2699
|
"post": {
|
|
2643
|
-
"id": "
|
|
2700
|
+
"id": "550e8400-e29b-41d4-a716-446655440040",
|
|
2644
2701
|
"title": "Add Slack-style threading to tickets (revised)",
|
|
2645
2702
|
"status": "open",
|
|
2646
|
-
"visibility": "public"
|
|
2703
|
+
"visibility": "public",
|
|
2704
|
+
"created_at": "2026-04-27T18:42:11.000Z"
|
|
2647
2705
|
}
|
|
2648
2706
|
},
|
|
2649
2707
|
"community_post.voted": {
|
|
2650
2708
|
"post": {
|
|
2651
|
-
"id": "
|
|
2709
|
+
"id": "550e8400-e29b-41d4-a716-446655440040",
|
|
2652
2710
|
"vote_count": 13
|
|
2653
2711
|
},
|
|
2654
2712
|
"voter": {
|
|
2655
|
-
"id": "
|
|
2713
|
+
"id": "cus_no9EfYa0dg5O"
|
|
2656
2714
|
},
|
|
2657
2715
|
"direction": "up"
|
|
2658
2716
|
},
|
|
2659
2717
|
"customer.created": {
|
|
2660
2718
|
"customer": {
|
|
2661
|
-
"id": "
|
|
2719
|
+
"id": "cus_no9EfYa0dg5O",
|
|
2662
2720
|
"name": "Casey Patel",
|
|
2663
2721
|
"email": "casey@example.com",
|
|
2664
2722
|
"status": "active",
|
|
2723
|
+
"sentiment": "neutral",
|
|
2665
2724
|
"tags": [
|
|
2666
2725
|
"trial"
|
|
2667
2726
|
],
|
|
2668
|
-
"created_at": "2026-04-27T18:42:11.000Z"
|
|
2727
|
+
"created_at": "2026-04-27T18:42:11.000Z",
|
|
2728
|
+
"updated_at": "2026-04-27T18:42:11.000Z"
|
|
2669
2729
|
}
|
|
2670
2730
|
},
|
|
2671
2731
|
"customer.deleted": {
|
|
2672
|
-
"id": "
|
|
2732
|
+
"id": "cus_no9EfYa0dg5O"
|
|
2673
2733
|
},
|
|
2674
2734
|
"customer.updated": {
|
|
2675
2735
|
"customer": {
|
|
2676
|
-
"id": "
|
|
2736
|
+
"id": "cus_no9EfYa0dg5O",
|
|
2677
2737
|
"name": "Casey Patel",
|
|
2678
2738
|
"email": "casey@example.com",
|
|
2679
2739
|
"status": "active",
|
|
2740
|
+
"sentiment": "neutral",
|
|
2680
2741
|
"tags": [
|
|
2681
2742
|
"trial",
|
|
2682
2743
|
"paying"
|
|
2683
|
-
]
|
|
2744
|
+
],
|
|
2745
|
+
"created_at": "2026-04-27T18:42:11.000Z",
|
|
2746
|
+
"updated_at": "2026-04-27T18:42:11.000Z"
|
|
2684
2747
|
},
|
|
2685
2748
|
"changes": {
|
|
2749
|
+
"name": {
|
|
2750
|
+
"from": "Casey",
|
|
2751
|
+
"to": "Casey Patel"
|
|
2752
|
+
},
|
|
2753
|
+
"email": {
|
|
2754
|
+
"from": "casey@old.example.com",
|
|
2755
|
+
"to": "casey@example.com"
|
|
2756
|
+
},
|
|
2757
|
+
"status": {
|
|
2758
|
+
"from": "active",
|
|
2759
|
+
"to": "inactive"
|
|
2760
|
+
},
|
|
2761
|
+
"sentiment": {
|
|
2762
|
+
"from": "neutral",
|
|
2763
|
+
"to": "happy"
|
|
2764
|
+
},
|
|
2686
2765
|
"tags": {
|
|
2687
2766
|
"from": [
|
|
2688
2767
|
"trial"
|
|
@@ -2695,51 +2774,59 @@ var WEBHOOK_EVENT_SAMPLES = {
|
|
|
2695
2774
|
}
|
|
2696
2775
|
},
|
|
2697
2776
|
"customer_group.created": {
|
|
2698
|
-
"
|
|
2699
|
-
"id": "
|
|
2777
|
+
"customer_group": {
|
|
2778
|
+
"id": "550e8400-e29b-41d4-a716-446655440030",
|
|
2700
2779
|
"name": "Pro Plan",
|
|
2701
|
-
"
|
|
2702
|
-
"
|
|
2780
|
+
"slug": "pro-plan",
|
|
2781
|
+
"description": "Customers on the Pro plan",
|
|
2782
|
+
"customer_count": 0,
|
|
2783
|
+
"created_at": "2026-04-27T18:42:11.000Z",
|
|
2784
|
+
"updated_at": "2026-04-27T18:42:11.000Z"
|
|
2703
2785
|
}
|
|
2704
2786
|
},
|
|
2705
2787
|
"customer_group.deleted": {
|
|
2706
2788
|
"customer_group": {
|
|
2707
|
-
"id": "
|
|
2789
|
+
"id": "550e8400-e29b-41d4-a716-446655440030"
|
|
2708
2790
|
}
|
|
2709
2791
|
},
|
|
2710
2792
|
"customer_group.updated": {
|
|
2711
|
-
"
|
|
2712
|
-
"id": "
|
|
2793
|
+
"customer_group": {
|
|
2794
|
+
"id": "550e8400-e29b-41d4-a716-446655440030",
|
|
2713
2795
|
"name": "Pro Plan (Annual)",
|
|
2714
|
-
"
|
|
2715
|
-
"
|
|
2796
|
+
"slug": "pro-plan",
|
|
2797
|
+
"description": "Customers on the Pro plan",
|
|
2798
|
+
"customer_count": 38,
|
|
2799
|
+
"created_at": "2026-04-27T18:42:11.000Z",
|
|
2800
|
+
"updated_at": "2026-04-27T18:42:11.000Z"
|
|
2716
2801
|
}
|
|
2717
2802
|
},
|
|
2718
2803
|
"player.achievement_unlocked": {
|
|
2719
2804
|
"player": {
|
|
2720
|
-
"agent_id": "
|
|
2805
|
+
"agent_id": "550e8400-e29b-41d4-a716-446655440001",
|
|
2721
2806
|
"name": "Riley"
|
|
2722
2807
|
},
|
|
2723
2808
|
"achievement": {
|
|
2724
2809
|
"id": "first_resolve",
|
|
2725
2810
|
"name": "First Resolve",
|
|
2811
|
+
"description": "Resolve your first ticket",
|
|
2812
|
+
"rarity": "common",
|
|
2726
2813
|
"xp": 50
|
|
2727
2814
|
}
|
|
2728
2815
|
},
|
|
2729
2816
|
"player.level_up": {
|
|
2730
2817
|
"player": {
|
|
2731
|
-
"agent_id": "
|
|
2818
|
+
"agent_id": "550e8400-e29b-41d4-a716-446655440001",
|
|
2732
2819
|
"name": "Riley"
|
|
2733
2820
|
},
|
|
2734
2821
|
"level": {
|
|
2735
2822
|
"from": 7,
|
|
2736
2823
|
"to": 8
|
|
2737
2824
|
},
|
|
2738
|
-
"
|
|
2825
|
+
"total_xp": 4200
|
|
2739
2826
|
},
|
|
2740
2827
|
"player.quest_completed": {
|
|
2741
2828
|
"player": {
|
|
2742
|
-
"agent_id": "
|
|
2829
|
+
"agent_id": "550e8400-e29b-41d4-a716-446655440001",
|
|
2743
2830
|
"name": "Riley"
|
|
2744
2831
|
},
|
|
2745
2832
|
"quest": {
|
|
@@ -2750,7 +2837,7 @@ var WEBHOOK_EVENT_SAMPLES = {
|
|
|
2750
2837
|
},
|
|
2751
2838
|
"player.streak_milestone": {
|
|
2752
2839
|
"player": {
|
|
2753
|
-
"agent_id": "
|
|
2840
|
+
"agent_id": "550e8400-e29b-41d4-a716-446655440001",
|
|
2754
2841
|
"name": "Riley"
|
|
2755
2842
|
},
|
|
2756
2843
|
"streak_days": 5,
|
|
@@ -2758,51 +2845,56 @@ var WEBHOOK_EVENT_SAMPLES = {
|
|
|
2758
2845
|
},
|
|
2759
2846
|
"player.xp_gained": {
|
|
2760
2847
|
"player": {
|
|
2761
|
-
"agent_id": "
|
|
2848
|
+
"agent_id": "550e8400-e29b-41d4-a716-446655440001",
|
|
2762
2849
|
"name": "Riley"
|
|
2763
2850
|
},
|
|
2764
2851
|
"amount": 75,
|
|
2765
2852
|
"reason": "ticket.resolved",
|
|
2766
|
-
"ticket_id": "
|
|
2853
|
+
"ticket_id": "tkt_UR8A3OR3Vshq"
|
|
2767
2854
|
},
|
|
2768
2855
|
"social.high_five_sent": {
|
|
2856
|
+
"id": "550e8400-e29b-41d4-a716-446655440051",
|
|
2769
2857
|
"from_team": {
|
|
2770
|
-
"id": "
|
|
2858
|
+
"id": "550e8400-e29b-41d4-a716-446655440000",
|
|
2771
2859
|
"name": "Acme Support"
|
|
2772
2860
|
},
|
|
2773
2861
|
"to_team": {
|
|
2774
|
-
"id": "
|
|
2862
|
+
"id": "550e8400-e29b-41d4-a716-446655440003",
|
|
2775
2863
|
"name": "Globex Support"
|
|
2776
2864
|
},
|
|
2777
|
-
"
|
|
2865
|
+
"sent_by": {
|
|
2866
|
+
"agent_id": "550e8400-e29b-41d4-a716-446655440001",
|
|
2867
|
+
"name": "Riley"
|
|
2868
|
+
},
|
|
2869
|
+
"message": "Thanks for the assist!",
|
|
2870
|
+
"created_at": "2026-04-27T18:55:02.000Z"
|
|
2778
2871
|
},
|
|
2779
2872
|
"social.one_up_sent": {
|
|
2873
|
+
"id": "550e8400-e29b-41d4-a716-446655440050",
|
|
2780
2874
|
"from": {
|
|
2781
|
-
"agent_id": "
|
|
2875
|
+
"agent_id": "550e8400-e29b-41d4-a716-446655440001",
|
|
2782
2876
|
"name": "Riley"
|
|
2783
2877
|
},
|
|
2784
2878
|
"to": {
|
|
2785
|
-
"agent_id": "
|
|
2879
|
+
"agent_id": "550e8400-e29b-41d4-a716-446655440002",
|
|
2786
2880
|
"name": "Sam"
|
|
2787
2881
|
},
|
|
2788
|
-
"
|
|
2789
|
-
"
|
|
2882
|
+
"message": "Great empathy on this one",
|
|
2883
|
+
"gold_amount": 0,
|
|
2884
|
+
"created_at": "2026-04-27T18:55:02.000Z"
|
|
2790
2885
|
},
|
|
2791
2886
|
"survey.submitted": {
|
|
2792
2887
|
"survey": {
|
|
2793
|
-
"id": "
|
|
2794
|
-
"ticket_id": "
|
|
2795
|
-
"
|
|
2888
|
+
"id": "550e8400-e29b-41d4-a716-446655440060",
|
|
2889
|
+
"ticket_id": "tkt_UR8A3OR3Vshq",
|
|
2890
|
+
"rating": 5,
|
|
2796
2891
|
"comment": "Resolved fast, thank you!",
|
|
2892
|
+
"agent_id": "550e8400-e29b-41d4-a716-446655440001",
|
|
2797
2893
|
"submitted_at": "2026-04-27T19:30:00.000Z"
|
|
2798
|
-
},
|
|
2799
|
-
"customer": {
|
|
2800
|
-
"id": "cus_01H8X9YZ7E0J3K4M5N6Q",
|
|
2801
|
-
"email": "casey@example.com"
|
|
2802
2894
|
}
|
|
2803
2895
|
},
|
|
2804
2896
|
"team.preferences_updated": {
|
|
2805
|
-
"team_id": "
|
|
2897
|
+
"team_id": "550e8400-e29b-41d4-a716-446655440000",
|
|
2806
2898
|
"changed": [
|
|
2807
2899
|
"bossBattlesEnabled"
|
|
2808
2900
|
],
|
|
@@ -2812,91 +2904,159 @@ var WEBHOOK_EVENT_SAMPLES = {
|
|
|
2812
2904
|
},
|
|
2813
2905
|
"ticket.assigned": {
|
|
2814
2906
|
"ticket": {
|
|
2815
|
-
"id": "
|
|
2816
|
-
"
|
|
2907
|
+
"id": "tkt_UR8A3OR3Vshq",
|
|
2908
|
+
"title": "Cannot reset password",
|
|
2909
|
+
"status": "open",
|
|
2910
|
+
"priority": "normal",
|
|
2911
|
+
"channel": "widget",
|
|
2912
|
+
"tags": [
|
|
2913
|
+
"billing"
|
|
2914
|
+
],
|
|
2915
|
+
"customer_id": "cus_no9EfYa0dg5O",
|
|
2916
|
+
"assigned_to": "550e8400-e29b-41d4-a716-446655440001",
|
|
2917
|
+
"dashboard_url": "https://www.cstar.help/team/acme/tickets?selected=3d3c850d-b6ff-4117-9dea-87e8dc4ba108",
|
|
2918
|
+
"created_at": "2026-04-27T18:42:11.000Z",
|
|
2919
|
+
"updated_at": "2026-04-27T18:50:02.000Z"
|
|
2817
2920
|
},
|
|
2818
2921
|
"assignee": {
|
|
2819
|
-
"id": "
|
|
2922
|
+
"id": "550e8400-e29b-41d4-a716-446655440001",
|
|
2820
2923
|
"name": "Riley",
|
|
2821
2924
|
"email": "riley@acme.test"
|
|
2822
2925
|
},
|
|
2823
|
-
"previous_assignee":
|
|
2926
|
+
"previous_assignee": {
|
|
2927
|
+
"id": "550e8400-e29b-41d4-a716-446655440002",
|
|
2928
|
+
"name": "Sam",
|
|
2929
|
+
"email": "sam@acme.test"
|
|
2930
|
+
}
|
|
2824
2931
|
},
|
|
2825
2932
|
"ticket.closed": {
|
|
2826
2933
|
"ticket": {
|
|
2827
|
-
"id": "
|
|
2828
|
-
"prefixed_id": "CST-1024",
|
|
2934
|
+
"id": "tkt_UR8A3OR3Vshq",
|
|
2829
2935
|
"title": "Cannot reset password",
|
|
2830
2936
|
"status": "closed",
|
|
2831
2937
|
"priority": "normal",
|
|
2832
|
-
"channel": "widget"
|
|
2938
|
+
"channel": "widget",
|
|
2939
|
+
"tags": [
|
|
2940
|
+
"billing"
|
|
2941
|
+
],
|
|
2942
|
+
"customer_id": "cus_no9EfYa0dg5O",
|
|
2943
|
+
"assigned_to": "550e8400-e29b-41d4-a716-446655440001",
|
|
2944
|
+
"dashboard_url": "https://www.cstar.help/team/acme/tickets?selected=3d3c850d-b6ff-4117-9dea-87e8dc4ba108",
|
|
2945
|
+
"created_at": "2026-04-27T18:42:11.000Z",
|
|
2946
|
+
"updated_at": "2026-04-27T18:50:02.000Z"
|
|
2833
2947
|
},
|
|
2834
2948
|
"changes": {
|
|
2949
|
+
"title": {
|
|
2950
|
+
"from": "Cannot reset password",
|
|
2951
|
+
"to": "Password reset link expired"
|
|
2952
|
+
},
|
|
2835
2953
|
"status": {
|
|
2836
2954
|
"from": "open",
|
|
2837
2955
|
"to": "closed"
|
|
2956
|
+
},
|
|
2957
|
+
"priority": {
|
|
2958
|
+
"from": "normal",
|
|
2959
|
+
"to": "high"
|
|
2960
|
+
},
|
|
2961
|
+
"assigned_to": {
|
|
2962
|
+
"from": "550e8400-e29b-41d4-a716-446655440002",
|
|
2963
|
+
"to": "550e8400-e29b-41d4-a716-446655440001"
|
|
2964
|
+
},
|
|
2965
|
+
"tags": {
|
|
2966
|
+
"from": [
|
|
2967
|
+
"billing"
|
|
2968
|
+
],
|
|
2969
|
+
"to": [
|
|
2970
|
+
"billing",
|
|
2971
|
+
"urgent"
|
|
2972
|
+
]
|
|
2838
2973
|
}
|
|
2839
2974
|
}
|
|
2840
2975
|
},
|
|
2841
2976
|
"ticket.created": {
|
|
2842
2977
|
"ticket": {
|
|
2843
|
-
"id": "
|
|
2844
|
-
"prefixed_id": "CST-1024",
|
|
2978
|
+
"id": "tkt_UR8A3OR3Vshq",
|
|
2845
2979
|
"title": "Cannot reset password",
|
|
2846
2980
|
"status": "new",
|
|
2847
2981
|
"priority": "normal",
|
|
2848
2982
|
"channel": "widget",
|
|
2849
|
-
"
|
|
2850
|
-
|
|
2983
|
+
"tags": [
|
|
2984
|
+
"billing"
|
|
2985
|
+
],
|
|
2986
|
+
"customer_id": "cus_no9EfYa0dg5O",
|
|
2987
|
+
"assigned_to": "550e8400-e29b-41d4-a716-446655440001",
|
|
2988
|
+
"dashboard_url": "https://www.cstar.help/team/acme/tickets?selected=3d3c850d-b6ff-4117-9dea-87e8dc4ba108",
|
|
2989
|
+
"created_at": "2026-04-27T18:42:11.000Z",
|
|
2990
|
+
"updated_at": "2026-04-27T18:50:02.000Z"
|
|
2851
2991
|
},
|
|
2852
2992
|
"customer": {
|
|
2853
|
-
"id": "
|
|
2993
|
+
"id": "cus_no9EfYa0dg5O",
|
|
2854
2994
|
"name": "Casey Patel",
|
|
2855
2995
|
"email": "casey@example.com"
|
|
2856
2996
|
}
|
|
2857
2997
|
},
|
|
2858
2998
|
"ticket.deleted": {
|
|
2859
|
-
"id": "
|
|
2999
|
+
"id": "tkt_UR8A3OR3Vshq"
|
|
2860
3000
|
},
|
|
2861
3001
|
"ticket.message_added": {
|
|
2862
3002
|
"ticket": {
|
|
2863
|
-
"id": "
|
|
2864
|
-
"dashboard_url": "https://www.cstar.help/team/acme/tickets?selected=
|
|
3003
|
+
"id": "tkt_UR8A3OR3Vshq",
|
|
3004
|
+
"dashboard_url": "https://www.cstar.help/team/acme/tickets?selected=3d3c850d-b6ff-4117-9dea-87e8dc4ba108"
|
|
2865
3005
|
},
|
|
2866
3006
|
"message": {
|
|
2867
|
-
"id": "
|
|
3007
|
+
"id": "msg_Hq2Lm8Xc4RtZ",
|
|
2868
3008
|
"sender": "agent",
|
|
2869
3009
|
"sender_name": "Riley",
|
|
3010
|
+
"message_type": "public",
|
|
2870
3011
|
"content": "I just sent a reset link to your inbox. Let me know if it lands.",
|
|
2871
3012
|
"created_at": "2026-04-27T18:55:02.000Z"
|
|
2872
3013
|
},
|
|
2873
3014
|
"customer": {
|
|
2874
|
-
"id": "
|
|
3015
|
+
"id": "cus_no9EfYa0dg5O",
|
|
2875
3016
|
"name": "Casey Patel",
|
|
2876
3017
|
"email": "casey@example.com"
|
|
2877
3018
|
}
|
|
2878
3019
|
},
|
|
2879
3020
|
"ticket.updated": {
|
|
2880
3021
|
"ticket": {
|
|
2881
|
-
"id": "
|
|
2882
|
-
"prefixed_id": "CST-1024",
|
|
3022
|
+
"id": "tkt_UR8A3OR3Vshq",
|
|
2883
3023
|
"title": "Cannot reset password",
|
|
2884
3024
|
"status": "open",
|
|
2885
3025
|
"priority": "high",
|
|
2886
|
-
"channel": "widget"
|
|
3026
|
+
"channel": "widget",
|
|
3027
|
+
"tags": [
|
|
3028
|
+
"billing"
|
|
3029
|
+
],
|
|
3030
|
+
"customer_id": "cus_no9EfYa0dg5O",
|
|
3031
|
+
"assigned_to": "550e8400-e29b-41d4-a716-446655440001",
|
|
3032
|
+
"dashboard_url": "https://www.cstar.help/team/acme/tickets?selected=3d3c850d-b6ff-4117-9dea-87e8dc4ba108",
|
|
3033
|
+
"created_at": "2026-04-27T18:42:11.000Z",
|
|
3034
|
+
"updated_at": "2026-04-27T18:50:02.000Z"
|
|
2887
3035
|
},
|
|
2888
3036
|
"changes": {
|
|
3037
|
+
"title": {
|
|
3038
|
+
"from": "Cannot reset password",
|
|
3039
|
+
"to": "Password reset link expired"
|
|
3040
|
+
},
|
|
3041
|
+
"status": {
|
|
3042
|
+
"from": "open",
|
|
3043
|
+
"to": "pending"
|
|
3044
|
+
},
|
|
2889
3045
|
"priority": {
|
|
2890
3046
|
"from": "normal",
|
|
2891
3047
|
"to": "high"
|
|
2892
3048
|
},
|
|
3049
|
+
"assigned_to": {
|
|
3050
|
+
"from": "550e8400-e29b-41d4-a716-446655440002",
|
|
3051
|
+
"to": "550e8400-e29b-41d4-a716-446655440001"
|
|
3052
|
+
},
|
|
2893
3053
|
"tags": {
|
|
2894
3054
|
"from": [
|
|
2895
|
-
"
|
|
3055
|
+
"billing"
|
|
2896
3056
|
],
|
|
2897
3057
|
"to": [
|
|
2898
|
-
"
|
|
2899
|
-
"
|
|
3058
|
+
"billing",
|
|
3059
|
+
"urgent"
|
|
2900
3060
|
]
|
|
2901
3061
|
}
|
|
2902
3062
|
}
|
|
@@ -2975,7 +3135,7 @@ var CStarClient = class {
|
|
|
2975
3135
|
this.ai = new AiResource(this._httpClient);
|
|
2976
3136
|
this.views = new ViewsResource(this._httpClient);
|
|
2977
3137
|
this.billing = new BillingResource(this._httpClient);
|
|
2978
|
-
this.realtime = new CStarRealtime(this._httpClient);
|
|
3138
|
+
this.realtime = new CStarRealtime(this._httpClient, config.realtime);
|
|
2979
3139
|
if (config.offline) {
|
|
2980
3140
|
const queueOpts = typeof config.offline === "object" ? config.offline : void 0;
|
|
2981
3141
|
this.offlineQueue = new OfflineQueue(this._httpClient, queueOpts);
|