@realtimex/sdk 2.0.31 → 2.0.32

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 CHANGED
@@ -19,10 +19,41 @@ const workspaces = await client.request("listWorkspaces");
19
19
  `REALTIMEX_BASE_URL`. Desktop and `dev:all` runtimes propagate the resolved
20
20
  dynamic `/cli` endpoint; the SDK does not guess a localhost port.
21
21
 
22
+ ## Webhook endpoint management
23
+
24
+ Webhook endpoints can be managed through the generated authenticated client.
25
+ These control-plane operations require an authenticated, user-bound session
26
+ credential.
27
+
28
+ ```js
29
+ const { createRealtimeXClient } = require("@realtimex/sdk");
30
+
31
+ const client = createRealtimeXClient({
32
+ baseUrl: process.env.REALTIMEX_BASE_URL,
33
+ token: process.env.REALTIMEX_AUTH_TOKEN,
34
+ });
35
+
36
+ const created = await client.createWebhookEndpoint({
37
+ name: "Build tasks",
38
+ workspaceId: 7,
39
+ secret: process.env.REALTIMEX_WEBHOOK_SECRET,
40
+ dispatchMode: "trigger_agent",
41
+ });
42
+
43
+ await client.listWebhookDeliveries({
44
+ endpointId: created.endpoint.id,
45
+ limit: 25,
46
+ });
47
+ ```
48
+
49
+ The `secret` field is write-only. Endpoint responses report
50
+ `secretConfigured`; they never contain the plaintext secret, ciphertext, or a
51
+ secret-storage reference. Deletion additionally requires
52
+ `{ confirmDestructive: true }`.
53
+
22
54
  ## Public webhook task delivery
23
55
 
24
56
  Use a separate webhook client to trigger an existing public webhook endpoint.
25
- Webhook endpoint creation and editing remain in RealtimeX settings.
26
57
 
27
58
  ```js
28
59
  const { createRealtimeXWebhookClient } = require("@realtimex/sdk");
package/index.d.ts CHANGED
@@ -169,6 +169,41 @@ export interface CreateThreadOptions extends RealtimeXRequestOptions {
169
169
  body?: CreateThreadBody;
170
170
  }
171
171
 
172
+ export type CreateWebhookEndpointParams = Record<string, never>;
173
+ export type CreateWebhookEndpointQuery = Record<string, never>;
174
+ export type CreateWebhookEndpointHeaders = Record<string, never>;
175
+ export type CreateWebhookEndpointBody = {
176
+ name: string;
177
+ workspaceId: number;
178
+ preset?: string;
179
+ enabled?: boolean;
180
+ secret: string;
181
+ signatureHeader?: string;
182
+ signaturePrefix?: string;
183
+ timestampHeader?: string;
184
+ deliveryIdHeader?: string;
185
+ eventTypeHeader?: string;
186
+ sourceHeader?: string;
187
+ allowedSourcePaths?: Array<string>;
188
+ replayWindowSeconds?: number;
189
+ payloadSizeLimitBytes?: number;
190
+ dispatchMode?: "record_only" | "send_to_thread" | "trigger_agent" | "trigger_flow";
191
+ triggerFlowId?: string;
192
+ agentTask?: Record<string, unknown>;
193
+ persistPayloadMode?: "none" | "attachment";
194
+ payloadStorageWorkspaceId?: number;
195
+ payloadStorageSubpath?: string;
196
+ dispatchInstruction?: string;
197
+ includePayloadPreview?: boolean;
198
+ };
199
+ export type CreateWebhookEndpointResponse = Record<string, unknown>;
200
+ export interface CreateWebhookEndpointOptions extends RealtimeXRequestOptions {
201
+ params?: CreateWebhookEndpointParams;
202
+ query?: CreateWebhookEndpointQuery;
203
+ headers?: CreateWebhookEndpointHeaders & Record<string, string>;
204
+ body?: CreateWebhookEndpointBody;
205
+ }
206
+
172
207
  export type CreateWorkspaceParams = Record<string, never>;
173
208
  export type CreateWorkspaceQuery = Record<string, never>;
174
209
  export type CreateWorkspaceHeaders = {
@@ -255,6 +290,22 @@ export interface DeleteThreadOptions extends RealtimeXRequestOptions {
255
290
  body?: DeleteThreadBody;
256
291
  }
257
292
 
293
+ export type DeleteWebhookEndpointParams = {
294
+ endpointId: string;
295
+ };
296
+ export type DeleteWebhookEndpointQuery = Record<string, never>;
297
+ export type DeleteWebhookEndpointHeaders = Record<string, never>;
298
+ export type DeleteWebhookEndpointBody = {
299
+ confirmDestructive: true;
300
+ };
301
+ export type DeleteWebhookEndpointResponse = Record<string, unknown>;
302
+ export interface DeleteWebhookEndpointOptions extends RealtimeXRequestOptions {
303
+ params?: DeleteWebhookEndpointParams;
304
+ query?: DeleteWebhookEndpointQuery;
305
+ headers?: DeleteWebhookEndpointHeaders & Record<string, string>;
306
+ body?: DeleteWebhookEndpointBody;
307
+ }
308
+
258
309
  export type DeleteWorkspaceParams = {
259
310
  workspaceSlug: string;
260
311
  };
@@ -407,6 +458,20 @@ export interface GetThreadOptions extends RealtimeXRequestOptions {
407
458
  body?: GetThreadBody;
408
459
  }
409
460
 
461
+ export type GetWebhookEndpointParams = {
462
+ endpointId: string;
463
+ };
464
+ export type GetWebhookEndpointQuery = Record<string, never>;
465
+ export type GetWebhookEndpointHeaders = Record<string, never>;
466
+ export type GetWebhookEndpointBody = unknown;
467
+ export type GetWebhookEndpointResponse = Record<string, unknown>;
468
+ export interface GetWebhookEndpointOptions extends RealtimeXRequestOptions {
469
+ params?: GetWebhookEndpointParams;
470
+ query?: GetWebhookEndpointQuery;
471
+ headers?: GetWebhookEndpointHeaders & Record<string, string>;
472
+ body?: GetWebhookEndpointBody;
473
+ }
474
+
410
475
  export type GetWorkspaceParams = {
411
476
  workspaceSlug: string;
412
477
  };
@@ -610,6 +675,34 @@ export interface ListThreadsOptions extends RealtimeXRequestOptions {
610
675
  body?: ListThreadsBody;
611
676
  }
612
677
 
678
+ export type ListWebhookDeliveriesParams = Record<string, never>;
679
+ export type ListWebhookDeliveriesQuery = {
680
+ endpointId?: string;
681
+ limit?: number;
682
+ offset?: number;
683
+ };
684
+ export type ListWebhookDeliveriesHeaders = Record<string, never>;
685
+ export type ListWebhookDeliveriesBody = unknown;
686
+ export type ListWebhookDeliveriesResponse = Record<string, unknown>;
687
+ export interface ListWebhookDeliveriesOptions extends RealtimeXRequestOptions {
688
+ params?: ListWebhookDeliveriesParams;
689
+ query?: ListWebhookDeliveriesQuery;
690
+ headers?: ListWebhookDeliveriesHeaders & Record<string, string>;
691
+ body?: ListWebhookDeliveriesBody;
692
+ }
693
+
694
+ export type ListWebhookEndpointsParams = Record<string, never>;
695
+ export type ListWebhookEndpointsQuery = Record<string, never>;
696
+ export type ListWebhookEndpointsHeaders = Record<string, never>;
697
+ export type ListWebhookEndpointsBody = unknown;
698
+ export type ListWebhookEndpointsResponse = Record<string, unknown>;
699
+ export interface ListWebhookEndpointsOptions extends RealtimeXRequestOptions {
700
+ params?: ListWebhookEndpointsParams;
701
+ query?: ListWebhookEndpointsQuery;
702
+ headers?: ListWebhookEndpointsHeaders & Record<string, string>;
703
+ body?: ListWebhookEndpointsBody;
704
+ }
705
+
613
706
  export type ListWorkspaceAgentSkillsParams = {
614
707
  workspaceSlug: string;
615
708
  };
@@ -1378,6 +1471,22 @@ export interface TerminateTerminalSessionOptions extends RealtimeXRequestOptions
1378
1471
  body?: TerminateTerminalSessionBody;
1379
1472
  }
1380
1473
 
1474
+ export type TestWebhookEndpointParams = {
1475
+ endpointId: string;
1476
+ };
1477
+ export type TestWebhookEndpointQuery = Record<string, never>;
1478
+ export type TestWebhookEndpointHeaders = Record<string, never>;
1479
+ export type TestWebhookEndpointBody = {
1480
+ payload?: Record<string, unknown>;
1481
+ };
1482
+ export type TestWebhookEndpointResponse = Record<string, unknown>;
1483
+ export interface TestWebhookEndpointOptions extends RealtimeXRequestOptions {
1484
+ params?: TestWebhookEndpointParams;
1485
+ query?: TestWebhookEndpointQuery;
1486
+ headers?: TestWebhookEndpointHeaders & Record<string, string>;
1487
+ body?: TestWebhookEndpointBody;
1488
+ }
1489
+
1381
1490
  export type TriggerWorkspaceHeartbeatParams = {
1382
1491
  workspaceSlug: string;
1383
1492
  };
@@ -1438,6 +1547,43 @@ export interface UpdateChannelOptions extends RealtimeXRequestOptions {
1438
1547
  body?: UpdateChannelBody;
1439
1548
  }
1440
1549
 
1550
+ export type UpdateWebhookEndpointParams = {
1551
+ endpointId: string;
1552
+ };
1553
+ export type UpdateWebhookEndpointQuery = Record<string, never>;
1554
+ export type UpdateWebhookEndpointHeaders = Record<string, never>;
1555
+ export type UpdateWebhookEndpointBody = {
1556
+ name?: string;
1557
+ workspaceId?: number;
1558
+ preset?: string;
1559
+ enabled?: boolean;
1560
+ secret?: string;
1561
+ signatureHeader?: string;
1562
+ signaturePrefix?: string;
1563
+ timestampHeader?: string;
1564
+ deliveryIdHeader?: string;
1565
+ eventTypeHeader?: string;
1566
+ sourceHeader?: string;
1567
+ allowedSourcePaths?: Array<string>;
1568
+ replayWindowSeconds?: number;
1569
+ payloadSizeLimitBytes?: number;
1570
+ dispatchMode?: "record_only" | "send_to_thread" | "trigger_agent" | "trigger_flow";
1571
+ triggerFlowId?: string;
1572
+ agentTask?: Record<string, unknown>;
1573
+ persistPayloadMode?: "none" | "attachment";
1574
+ payloadStorageWorkspaceId?: number;
1575
+ payloadStorageSubpath?: string;
1576
+ dispatchInstruction?: string;
1577
+ includePayloadPreview?: boolean;
1578
+ };
1579
+ export type UpdateWebhookEndpointResponse = Record<string, unknown>;
1580
+ export interface UpdateWebhookEndpointOptions extends RealtimeXRequestOptions {
1581
+ params?: UpdateWebhookEndpointParams;
1582
+ query?: UpdateWebhookEndpointQuery;
1583
+ headers?: UpdateWebhookEndpointHeaders & Record<string, string>;
1584
+ body?: UpdateWebhookEndpointBody;
1585
+ }
1586
+
1441
1587
  export type WorkspaceShellLayoutParams = Record<string, never>;
1442
1588
  export type WorkspaceShellLayoutQuery = Record<string, never>;
1443
1589
  export type WorkspaceShellLayoutHeaders = Record<string, never>;
@@ -1563,6 +1709,9 @@ export declare class RealtimeXClient {
1563
1709
  /** Create a thread in one workspace. The name is optional but recommended. */
1564
1710
  createThread(options?: CreateThreadOptions): Promise<CreateThreadResponse>;
1565
1711
  createThread(workspaceSlug: string, body: CreateThreadBody, options?: Omit<CreateThreadOptions, 'params' | 'body'>): Promise<CreateThreadResponse>;
1712
+ /** Create a webhook endpoint in an accessible workspace. secret is a write-only input. */
1713
+ createWebhookEndpoint(options?: CreateWebhookEndpointOptions): Promise<CreateWebhookEndpointResponse>;
1714
+ createWebhookEndpoint(body: CreateWebhookEndpointBody, options?: Omit<CreateWebhookEndpointOptions, 'body'>): Promise<CreateWebhookEndpointResponse>;
1566
1715
  /** Create a workspace. Requires a human-readable workspace name. */
1567
1716
  createWorkspace(options?: CreateWorkspaceOptions): Promise<CreateWorkspaceResponse>;
1568
1717
  createWorkspace(body: CreateWorkspaceBody, options?: Omit<CreateWorkspaceOptions, 'body'>): Promise<CreateWorkspaceResponse>;
@@ -1578,6 +1727,9 @@ export declare class RealtimeXClient {
1578
1727
  /** Delete one thread by exact workspace slug and exact thread slug. */
1579
1728
  deleteThread(options?: DeleteThreadOptions): Promise<DeleteThreadResponse>;
1580
1729
  deleteThread(params: DeleteThreadParams, options?: Omit<DeleteThreadOptions, 'params'>): Promise<DeleteThreadResponse>;
1730
+ /** Permanently delete a visible webhook endpoint. confirmDestructive must be true. */
1731
+ deleteWebhookEndpoint(options?: DeleteWebhookEndpointOptions): Promise<DeleteWebhookEndpointResponse>;
1732
+ deleteWebhookEndpoint(endpointId: string, body: DeleteWebhookEndpointBody, options?: Omit<DeleteWebhookEndpointOptions, 'params' | 'body'>): Promise<DeleteWebhookEndpointResponse>;
1581
1733
  /** Delete one workspace by exact workspace slug. */
1582
1734
  deleteWorkspace(options?: DeleteWorkspaceOptions): Promise<DeleteWorkspaceResponse>;
1583
1735
  deleteWorkspace(workspaceSlug: string, options?: Omit<DeleteWorkspaceOptions, 'params'>): Promise<DeleteWorkspaceResponse>;
@@ -1605,6 +1757,9 @@ export declare class RealtimeXClient {
1605
1757
  /** Get one thread by exact workspace slug and exact thread slug. */
1606
1758
  getThread(options?: GetThreadOptions): Promise<GetThreadResponse>;
1607
1759
  getThread(params: GetThreadParams, options?: Omit<GetThreadOptions, 'params'>): Promise<GetThreadResponse>;
1760
+ /** Get one visible webhook endpoint by endpoint id. The response reports secretConfigured but never returns the secret. */
1761
+ getWebhookEndpoint(options?: GetWebhookEndpointOptions): Promise<GetWebhookEndpointResponse>;
1762
+ getWebhookEndpoint(endpointId: string, options?: Omit<GetWebhookEndpointOptions, 'params'>): Promise<GetWebhookEndpointResponse>;
1608
1763
  /** Get one workspace by exact workspace slug. */
1609
1764
  getWorkspace(options?: GetWorkspaceOptions): Promise<GetWorkspaceResponse>;
1610
1765
  getWorkspace(workspaceSlug: string, options?: Omit<GetWorkspaceOptions, 'params'>): Promise<GetWorkspaceResponse>;
@@ -1638,6 +1793,11 @@ export declare class RealtimeXClient {
1638
1793
  /** List threads for one exact workspace slug. */
1639
1794
  listThreads(options?: ListThreadsOptions): Promise<ListThreadsResponse>;
1640
1795
  listThreads(workspaceSlug: string, options?: Omit<ListThreadsOptions, 'params'>): Promise<ListThreadsResponse>;
1796
+ /** List bounded delivery metadata for visible webhook endpoints. Raw headers, bodies, signatures, and payload fields are omitted. */
1797
+ listWebhookDeliveries(options?: ListWebhookDeliveriesOptions): Promise<ListWebhookDeliveriesResponse>;
1798
+ listWebhookDeliveries(query?: ListWebhookDeliveriesQuery, options?: Omit<ListWebhookDeliveriesOptions, 'query'>): Promise<ListWebhookDeliveriesResponse>;
1799
+ /** List webhook endpoints visible to the authenticated user. Secrets are never returned. */
1800
+ listWebhookEndpoints(options?: ListWebhookEndpointsOptions): Promise<ListWebhookEndpointsResponse>;
1641
1801
  /** List published agent skills with enabled/disabled state for one exact workspace slug. */
1642
1802
  listWorkspaceAgentSkills(options?: ListWorkspaceAgentSkillsOptions): Promise<ListWorkspaceAgentSkillsResponse>;
1643
1803
  listWorkspaceAgentSkills(workspaceSlug: string, options?: Omit<ListWorkspaceAgentSkillsOptions, 'params'>): Promise<ListWorkspaceAgentSkillsResponse>;
@@ -1750,6 +1910,9 @@ export declare class RealtimeXClient {
1750
1910
  /** Terminate a terminal runtime session by detaching any controller and closing the underlying PTY session. */
1751
1911
  terminateTerminalSession(options?: TerminateTerminalSessionOptions): Promise<TerminateTerminalSessionResponse>;
1752
1912
  terminateTerminalSession(sessionId: string, options?: Omit<TerminateTerminalSessionOptions, 'params'>): Promise<TerminateTerminalSessionResponse>;
1913
+ /** Submit an optional JSON payload as a signed test delivery through a visible webhook endpoint. */
1914
+ testWebhookEndpoint(options?: TestWebhookEndpointOptions): Promise<TestWebhookEndpointResponse>;
1915
+ testWebhookEndpoint(endpointId: string, body: TestWebhookEndpointBody, options?: Omit<TestWebhookEndpointOptions, 'params' | 'body'>): Promise<TestWebhookEndpointResponse>;
1753
1916
  /** Trigger the default HEARTBEAT.md task for a workspace immediately. Falls back to the legacy heartbeat executor when no tasks are defined. */
1754
1917
  triggerWorkspaceHeartbeat(options?: TriggerWorkspaceHeartbeatOptions): Promise<TriggerWorkspaceHeartbeatResponse>;
1755
1918
  triggerWorkspaceHeartbeat(workspaceSlug: string, body: TriggerWorkspaceHeartbeatBody, options?: Omit<TriggerWorkspaceHeartbeatOptions, 'params' | 'body'>): Promise<TriggerWorkspaceHeartbeatResponse>;
@@ -1759,6 +1922,9 @@ export declare class RealtimeXClient {
1759
1922
  /** Update one chat channel by exact channel id. Only channel writable fields are changed. */
1760
1923
  updateChannel(options?: UpdateChannelOptions): Promise<UpdateChannelResponse>;
1761
1924
  updateChannel(channelId: string, body: UpdateChannelBody, options?: Omit<UpdateChannelOptions, 'params' | 'body'>): Promise<UpdateChannelResponse>;
1925
+ /** Update a visible webhook endpoint. Passing secret rotates it; the value is never returned. */
1926
+ updateWebhookEndpoint(options?: UpdateWebhookEndpointOptions): Promise<UpdateWebhookEndpointResponse>;
1927
+ updateWebhookEndpoint(endpointId: string, body: UpdateWebhookEndpointBody, options?: Omit<UpdateWebhookEndpointOptions, 'params' | 'body'>): Promise<UpdateWebhookEndpointResponse>;
1762
1928
  /** Verify workspace navigation, title-bar containment, Files dock behavior, and action contrast at desktop and compact viewports. */
1763
1929
  workspaceShellLayout(options?: WorkspaceShellLayoutOptions): Promise<WorkspaceShellLayoutResponse>;
1764
1930
  workspaceShellLayout(body: WorkspaceShellLayoutBody, options?: Omit<WorkspaceShellLayoutOptions, 'body'>): Promise<WorkspaceShellLayoutResponse>;
package/index.js CHANGED
@@ -82,6 +82,14 @@ const operations = {
82
82
  ],
83
83
  "hasBody": true
84
84
  },
85
+ "createWebhookEndpoint": {
86
+ "method": "POST",
87
+ "path": "/create-webhook-endpoint",
88
+ "pathParams": [],
89
+ "queryParams": [],
90
+ "headerParams": [],
91
+ "hasBody": true
92
+ },
85
93
  "createWorkspace": {
86
94
  "method": "POST",
87
95
  "path": "/create-workspace",
@@ -142,6 +150,16 @@ const operations = {
142
150
  ],
143
151
  "hasBody": false
144
152
  },
153
+ "deleteWebhookEndpoint": {
154
+ "method": "DELETE",
155
+ "path": "/delete-webhook-endpoint/{endpointId}",
156
+ "pathParams": [
157
+ "endpointId"
158
+ ],
159
+ "queryParams": [],
160
+ "headerParams": [],
161
+ "hasBody": true
162
+ },
145
163
  "deleteWorkspace": {
146
164
  "method": "DELETE",
147
165
  "path": "/delete-workspace/{workspaceSlug}",
@@ -258,6 +276,16 @@ const operations = {
258
276
  ],
259
277
  "hasBody": false
260
278
  },
279
+ "getWebhookEndpoint": {
280
+ "method": "GET",
281
+ "path": "/get-webhook-endpoint/{endpointId}",
282
+ "pathParams": [
283
+ "endpointId"
284
+ ],
285
+ "queryParams": [],
286
+ "headerParams": [],
287
+ "hasBody": false
288
+ },
261
289
  "getWorkspace": {
262
290
  "method": "GET",
263
291
  "path": "/get-workspace/{workspaceSlug}",
@@ -399,6 +427,26 @@ const operations = {
399
427
  ],
400
428
  "hasBody": false
401
429
  },
430
+ "listWebhookDeliveries": {
431
+ "method": "GET",
432
+ "path": "/list-webhook-deliveries",
433
+ "pathParams": [],
434
+ "queryParams": [
435
+ "endpointId",
436
+ "limit",
437
+ "offset"
438
+ ],
439
+ "headerParams": [],
440
+ "hasBody": false
441
+ },
442
+ "listWebhookEndpoints": {
443
+ "method": "GET",
444
+ "path": "/list-webhook-endpoints",
445
+ "pathParams": [],
446
+ "queryParams": [],
447
+ "headerParams": [],
448
+ "hasBody": false
449
+ },
402
450
  "listWorkspaceAgentSkills": {
403
451
  "method": "GET",
404
452
  "path": "/list-workspace-agent-skills/{workspaceSlug}",
@@ -829,6 +877,16 @@ const operations = {
829
877
  ],
830
878
  "hasBody": false
831
879
  },
880
+ "testWebhookEndpoint": {
881
+ "method": "POST",
882
+ "path": "/test-webhook-endpoint/{endpointId}",
883
+ "pathParams": [
884
+ "endpointId"
885
+ ],
886
+ "queryParams": [],
887
+ "headerParams": [],
888
+ "hasBody": true
889
+ },
832
890
  "triggerWorkspaceHeartbeat": {
833
891
  "method": "POST",
834
892
  "path": "/trigger-workspace-heartbeat/{workspaceSlug}",
@@ -865,6 +923,16 @@ const operations = {
865
923
  ],
866
924
  "hasBody": true
867
925
  },
926
+ "updateWebhookEndpoint": {
927
+ "method": "POST",
928
+ "path": "/update-webhook-endpoint/{endpointId}",
929
+ "pathParams": [
930
+ "endpointId"
931
+ ],
932
+ "queryParams": [],
933
+ "headerParams": [],
934
+ "hasBody": true
935
+ },
868
936
  "workspaceShellLayout": {
869
937
  "method": "POST",
870
938
  "path": "/workspace-shell-layout",
@@ -1347,6 +1415,13 @@ class RealtimeXClient {
1347
1415
  );
1348
1416
  }
1349
1417
 
1418
+ createWebhookEndpoint(...args) {
1419
+ return this.request(
1420
+ "createWebhookEndpoint",
1421
+ normalizeOperationOptions(operations["createWebhookEndpoint"], args)
1422
+ );
1423
+ }
1424
+
1350
1425
  createWorkspace(...args) {
1351
1426
  return this.request(
1352
1427
  "createWorkspace",
@@ -1382,6 +1457,13 @@ class RealtimeXClient {
1382
1457
  );
1383
1458
  }
1384
1459
 
1460
+ deleteWebhookEndpoint(...args) {
1461
+ return this.request(
1462
+ "deleteWebhookEndpoint",
1463
+ normalizeOperationOptions(operations["deleteWebhookEndpoint"], args)
1464
+ );
1465
+ }
1466
+
1385
1467
  deleteWorkspace(...args) {
1386
1468
  return this.request(
1387
1469
  "deleteWorkspace",
@@ -1445,6 +1527,13 @@ class RealtimeXClient {
1445
1527
  );
1446
1528
  }
1447
1529
 
1530
+ getWebhookEndpoint(...args) {
1531
+ return this.request(
1532
+ "getWebhookEndpoint",
1533
+ normalizeOperationOptions(operations["getWebhookEndpoint"], args)
1534
+ );
1535
+ }
1536
+
1448
1537
  getWorkspace(...args) {
1449
1538
  return this.request(
1450
1539
  "getWorkspace",
@@ -1536,6 +1625,20 @@ class RealtimeXClient {
1536
1625
  );
1537
1626
  }
1538
1627
 
1628
+ listWebhookDeliveries(...args) {
1629
+ return this.request(
1630
+ "listWebhookDeliveries",
1631
+ normalizeOperationOptions(operations["listWebhookDeliveries"], args)
1632
+ );
1633
+ }
1634
+
1635
+ listWebhookEndpoints(...args) {
1636
+ return this.request(
1637
+ "listWebhookEndpoints",
1638
+ normalizeOperationOptions(operations["listWebhookEndpoints"], args)
1639
+ );
1640
+ }
1641
+
1539
1642
  listWorkspaceAgentSkills(...args) {
1540
1643
  return this.request(
1541
1644
  "listWorkspaceAgentSkills",
@@ -1802,6 +1905,13 @@ class RealtimeXClient {
1802
1905
  );
1803
1906
  }
1804
1907
 
1908
+ testWebhookEndpoint(...args) {
1909
+ return this.request(
1910
+ "testWebhookEndpoint",
1911
+ normalizeOperationOptions(operations["testWebhookEndpoint"], args)
1912
+ );
1913
+ }
1914
+
1805
1915
  triggerWorkspaceHeartbeat(...args) {
1806
1916
  return this.request(
1807
1917
  "triggerWorkspaceHeartbeat",
@@ -1823,6 +1933,13 @@ class RealtimeXClient {
1823
1933
  );
1824
1934
  }
1825
1935
 
1936
+ updateWebhookEndpoint(...args) {
1937
+ return this.request(
1938
+ "updateWebhookEndpoint",
1939
+ normalizeOperationOptions(operations["updateWebhookEndpoint"], args)
1940
+ );
1941
+ }
1942
+
1826
1943
  workspaceShellLayout(...args) {
1827
1944
  return this.request(
1828
1945
  "workspaceShellLayout",
@@ -1848,5 +1965,5 @@ module.exports = {
1848
1965
  createRealtimeXClient,
1849
1966
  createRealtimeXWebhookClient,
1850
1967
  operations,
1851
- version: "2.0.31",
1968
+ version: "2.0.32",
1852
1969
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@realtimex/sdk",
3
- "version": "2.0.31",
3
+ "version": "2.0.32",
4
4
  "description": "RealtimeX runtime SDK package and moderator agent skill assets.",
5
5
  "private": false,
6
6
  "main": "./index.js",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: realtimex-moderator-sdk
3
- description: "Use the RealTimeX API through the generated CLI for workspace, thread, terminal-agent sessions, channel (Telegram, Zalo, Discord), skills, plugins and send messages, setup personality, heartbeat tasks operations, publish and manage artifacts, run tour guide to setup working dir."
3
+ description: "Use the RealTimeX API through the generated CLI for workspace, thread, terminal-agent sessions, channel (Telegram, Zalo, Discord), skills, plugins, webhook endpoint management and delivery inspection, send messages, setup personality, heartbeat tasks operations, publish and manage artifacts, run tour guide to setup working dir."
4
4
  author: ""
5
5
  license: "Apache-2.0"
6
6
  argument-hint: "<command> [args] | install cli"
@@ -20,15 +20,15 @@ This skill drives the `realtimex-pp-cli` binary. Verify the CLI is installed and
20
20
 
21
21
  1. Install or reinstall the pinned version via npm:
22
22
  ```bash
23
- npm install -g @realtimex/pp-cli@2.0.31
23
+ npm install -g @realtimex/pp-cli@2.0.32
24
24
  ```
25
25
  2. Verify the exact version:
26
26
  ```bash
27
27
  realtimex-pp-cli --version
28
28
  ```
29
- The output must be `realtimex-pp-cli 2.0.31`.
29
+ The output must be `realtimex-pp-cli 2.0.32`.
30
30
 
31
- If `--version` reports "command not found" after install, the npm global bin directory is not on `$PATH`. If it reports any version other than `2.0.31`, reinstall with the pinned npm command above. Do not proceed with skill commands until exact-version verification succeeds.
31
+ If `--version` reports "command not found" after install, the npm global bin directory is not on `$PATH`. If it reports any version other than `2.0.32`, reinstall with the pinned npm command above. Do not proceed with skill commands until exact-version verification succeeds.
32
32
 
33
33
  * Always run first:
34
34
 
@@ -66,6 +66,10 @@ If `--version` reports "command not found" after install, the npm global bin dir
66
66
 
67
67
  - `realtimex-pp-cli create-thread <workspaceSlug>` — Create a thread in one workspace. The name is optional but recommended.
68
68
 
69
+ **create-webhook-endpoint** — Manage create webhook endpoint
70
+
71
+ - `realtimex-pp-cli create-webhook-endpoint` — Create a webhook endpoint in an accessible workspace. secret is a write-only input.
72
+
69
73
  **create-workspace** — Manage create workspace
70
74
 
71
75
  - `realtimex-pp-cli create-workspace` — Create a workspace. Requires a human-readable workspace name.
@@ -86,6 +90,10 @@ If `--version` reports "command not found" after install, the npm global bin dir
86
90
 
87
91
  - `realtimex-pp-cli delete-thread <workspaceSlug> <threadSlug>` — Delete one thread by exact workspace slug and exact thread slug.
88
92
 
93
+ **delete-webhook-endpoint** — Manage delete webhook endpoint
94
+
95
+ - `realtimex-pp-cli delete-webhook-endpoint <endpointId>` — Permanently delete a visible webhook endpoint. confirmDestructive must be true.
96
+
89
97
  **delete-workspace** — Manage delete workspace
90
98
 
91
99
  - `realtimex-pp-cli delete-workspace <workspaceSlug>` — Delete one workspace by exact workspace slug.
@@ -122,6 +130,10 @@ If `--version` reports "command not found" after install, the npm global bin dir
122
130
 
123
131
  - `realtimex-pp-cli get-thread <workspaceSlug> <threadSlug>` — Get one thread by exact workspace slug and exact thread slug.
124
132
 
133
+ **get-webhook-endpoint** — Manage get webhook endpoint
134
+
135
+ - `realtimex-pp-cli get-webhook-endpoint <endpointId>` — Get one visible webhook endpoint by endpoint id. The response reports secretConfigured but never returns the secret.
136
+
125
137
  **get-workspace** — Manage get workspace
126
138
 
127
139
  - `realtimex-pp-cli get-workspace <workspaceSlug>` — Get one workspace by exact workspace slug.
@@ -174,6 +186,14 @@ If `--version` reports "command not found" after install, the npm global bin dir
174
186
 
175
187
  - `realtimex-pp-cli list-threads <workspaceSlug>` — List threads for one exact workspace slug.
176
188
 
189
+ **list-webhook-deliveries** — Manage list webhook deliveries
190
+
191
+ - `realtimex-pp-cli list-webhook-deliveries` — List bounded delivery metadata for visible webhook endpoints.
192
+
193
+ **list-webhook-endpoints** — Manage list webhook endpoints
194
+
195
+ - `realtimex-pp-cli list-webhook-endpoints` — List webhook endpoints visible to the authenticated user. Secrets are never returned.
196
+
177
197
  **list-workspace-agent-skills** — Manage list workspace agent skills
178
198
 
179
199
  - `realtimex-pp-cli list-workspace-agent-skills <workspaceSlug>` — List published agent skills with enabled/disabled state for one exact workspace slug.
@@ -322,6 +342,10 @@ If `--version` reports "command not found" after install, the npm global bin dir
322
342
 
323
343
  - `realtimex-pp-cli terminate-terminal-session <sessionId>` — Terminate a terminal runtime session by detaching any controller and closing the underlying PTY session.
324
344
 
345
+ **test-webhook-endpoint** — Manage test webhook endpoint
346
+
347
+ - `realtimex-pp-cli test-webhook-endpoint <endpointId>` — Submit an optional JSON payload as a signed test delivery through a visible webhook endpoint.
348
+
325
349
  **trigger-workspace-heartbeat** — Manage trigger workspace heartbeat
326
350
 
327
351
  - `realtimex-pp-cli trigger-workspace-heartbeat <workspaceSlug>` — Trigger the default HEARTBEAT.md task for a workspace immediately.
@@ -334,6 +358,10 @@ If `--version` reports "command not found" after install, the npm global bin dir
334
358
 
335
359
  - `realtimex-pp-cli update-channel <channelId>` — Update one chat channel by exact channel id. Only channel writable fields are changed.
336
360
 
361
+ **update-webhook-endpoint** — Manage update webhook endpoint
362
+
363
+ - `realtimex-pp-cli update-webhook-endpoint <endpointId>` — Update a visible webhook endpoint. Passing secret rotates it; the value is never returned.
364
+
337
365
  **workspace-shell-layout** — Manage workspace shell layout
338
366
 
339
367
  - `realtimex-pp-cli workspace-shell-layout` — Verify workspace navigation, title-bar containment, Files dock behavior
@@ -464,9 +492,9 @@ Verify: `claude mcp list`
464
492
  ```bash
465
493
  realtimex-pp-cli --version
466
494
  ```
467
- If the command is missing or the output is not exactly `realtimex-pp-cli 2.0.31`, reinstall the pinned version:
495
+ If the command is missing or the output is not exactly `realtimex-pp-cli 2.0.32`, reinstall the pinned version:
468
496
  ```bash
469
- npm install -g @realtimex/pp-cli@2.0.31
497
+ npm install -g @realtimex/pp-cli@2.0.32
470
498
  ```
471
499
  Then run `realtimex-pp-cli --version` again and proceed only after exact-version verification succeeds.
472
500
  2. Match the user query to the best command from the Unique Capabilities and Command Reference above.
@@ -529,6 +557,13 @@ For `send-channel-file`:
529
557
  * In desktop/local runtime, the CLI should send the absolute local `filePath` to the server. The server validates the path against allowed storage/temp roots before sending through the channel. Base64 upload is fallback transport, not the preferred path.
530
558
  * The server validates the delivery context, active channel session, plugin state, runtime binding when supplied, and file size/type handling before delivery.
531
559
 
560
+ For webhook endpoint management:
561
+
562
+ * These operations require an authenticated, user-bound session credential.
563
+ * Treat `secret` as write-only input for creation or rotation. Never expect, request, print, or persist a plaintext secret from endpoint responses.
564
+ * Use `list-webhook-deliveries` for bounded metadata inspection. Raw request headers, signatures, bodies, and normalized payload fields are intentionally unavailable.
565
+ * Pass `confirmDestructive=true` only after the user has explicitly requested permanent endpoint deletion.
566
+
532
567
  For workspace default-agent setup:
533
568
 
534
569
  * Use `prepare.agents` only.