@agentuity/server 0.1.16 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/api.d.ts +11 -6
- package/dist/api/api.d.ts.map +1 -1
- package/dist/api/api.js +19 -12
- package/dist/api/api.js.map +1 -1
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +1 -0
- package/dist/api/index.js.map +1 -1
- package/dist/api/org/env-delete.d.ts.map +1 -1
- package/dist/api/org/env-delete.js.map +1 -1
- package/dist/api/org/env-get.d.ts.map +1 -1
- package/dist/api/org/env-get.js.map +1 -1
- package/dist/api/org/env-update.d.ts.map +1 -1
- package/dist/api/org/env-update.js.map +1 -1
- package/dist/api/queue/analytics.d.ts +108 -0
- package/dist/api/queue/analytics.d.ts.map +1 -0
- package/dist/api/queue/analytics.js +245 -0
- package/dist/api/queue/analytics.js.map +1 -0
- package/dist/api/queue/destinations.d.ts +108 -0
- package/dist/api/queue/destinations.d.ts.map +1 -0
- package/dist/api/queue/destinations.js +238 -0
- package/dist/api/queue/destinations.js.map +1 -0
- package/dist/api/queue/dlq.d.ts +100 -0
- package/dist/api/queue/dlq.d.ts.map +1 -0
- package/dist/api/queue/dlq.js +204 -0
- package/dist/api/queue/dlq.js.map +1 -0
- package/dist/api/queue/index.d.ts +55 -0
- package/dist/api/queue/index.d.ts.map +1 -0
- package/dist/api/queue/index.js +86 -0
- package/dist/api/queue/index.js.map +1 -0
- package/dist/api/queue/messages.d.ts +332 -0
- package/dist/api/queue/messages.d.ts.map +1 -0
- package/dist/api/queue/messages.js +637 -0
- package/dist/api/queue/messages.js.map +1 -0
- package/dist/api/queue/queues.d.ts +153 -0
- package/dist/api/queue/queues.d.ts.map +1 -0
- package/dist/api/queue/queues.js +319 -0
- package/dist/api/queue/queues.js.map +1 -0
- package/dist/api/queue/sources.d.ts +132 -0
- package/dist/api/queue/sources.d.ts.map +1 -0
- package/dist/api/queue/sources.js +285 -0
- package/dist/api/queue/sources.js.map +1 -0
- package/dist/api/queue/types.d.ts +1129 -0
- package/dist/api/queue/types.d.ts.map +1 -0
- package/dist/api/queue/types.js +949 -0
- package/dist/api/queue/types.js.map +1 -0
- package/dist/api/queue/util.d.ts +262 -0
- package/dist/api/queue/util.d.ts.map +1 -0
- package/dist/api/queue/util.js +171 -0
- package/dist/api/queue/util.js.map +1 -0
- package/dist/api/queue/validation.d.ts +247 -0
- package/dist/api/queue/validation.d.ts.map +1 -0
- package/dist/api/queue/validation.js +513 -0
- package/dist/api/queue/validation.js.map +1 -0
- package/dist/api/sandbox/get.d.ts.map +1 -1
- package/dist/api/sandbox/get.js +5 -0
- package/dist/api/sandbox/get.js.map +1 -1
- package/dist/api/sandbox/index.d.ts +3 -3
- package/dist/api/sandbox/index.d.ts.map +1 -1
- package/dist/api/sandbox/index.js +1 -1
- package/dist/api/sandbox/index.js.map +1 -1
- package/dist/api/sandbox/run.d.ts.map +1 -1
- package/dist/api/sandbox/run.js +5 -2
- package/dist/api/sandbox/run.js.map +1 -1
- package/dist/api/sandbox/snapshot-build.d.ts +2 -0
- package/dist/api/sandbox/snapshot-build.d.ts.map +1 -1
- package/dist/api/sandbox/snapshot-build.js +4 -0
- package/dist/api/sandbox/snapshot-build.js.map +1 -1
- package/dist/api/sandbox/snapshot.d.ts +143 -1
- package/dist/api/sandbox/snapshot.d.ts.map +1 -1
- package/dist/api/sandbox/snapshot.js +183 -4
- package/dist/api/sandbox/snapshot.js.map +1 -1
- package/package.json +4 -4
- package/src/api/api.ts +62 -13
- package/src/api/index.ts +1 -0
- package/src/api/org/env-delete.ts +1 -4
- package/src/api/org/env-get.ts +1 -4
- package/src/api/org/env-update.ts +1 -4
- package/src/api/queue/analytics.ts +313 -0
- package/src/api/queue/destinations.ts +321 -0
- package/src/api/queue/dlq.ts +283 -0
- package/src/api/queue/index.ts +261 -0
- package/src/api/queue/messages.ts +875 -0
- package/src/api/queue/queues.ts +448 -0
- package/src/api/queue/sources.ts +384 -0
- package/src/api/queue/types.ts +1253 -0
- package/src/api/queue/util.ts +204 -0
- package/src/api/queue/validation.ts +560 -0
- package/src/api/sandbox/get.ts +5 -0
- package/src/api/sandbox/index.ts +13 -1
- package/src/api/sandbox/run.ts +5 -2
- package/src/api/sandbox/snapshot-build.ts +4 -0
- package/src/api/sandbox/snapshot.ts +223 -5
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { APIClient, APIResponseSchema, APIResponseSchemaNoData } from '../api';
|
|
3
|
+
import {
|
|
4
|
+
QueueSchema,
|
|
5
|
+
type Queue,
|
|
6
|
+
type CreateQueueRequest,
|
|
7
|
+
type UpdateQueueRequest,
|
|
8
|
+
type ListQueuesRequest,
|
|
9
|
+
type QueueApiOptions,
|
|
10
|
+
CreateQueueRequestSchema,
|
|
11
|
+
UpdateQueueRequestSchema,
|
|
12
|
+
} from './types';
|
|
13
|
+
import {
|
|
14
|
+
QueueError,
|
|
15
|
+
QueueNotFoundError,
|
|
16
|
+
queueApiPath,
|
|
17
|
+
queueApiPathWithQuery,
|
|
18
|
+
buildQueueHeaders,
|
|
19
|
+
} from './util';
|
|
20
|
+
import {
|
|
21
|
+
validateQueueName,
|
|
22
|
+
validateQueueType,
|
|
23
|
+
validateDescription,
|
|
24
|
+
validateTTL,
|
|
25
|
+
validateVisibilityTimeout,
|
|
26
|
+
validateMaxRetries,
|
|
27
|
+
validateMaxInFlight,
|
|
28
|
+
validateLimit,
|
|
29
|
+
validateOffset,
|
|
30
|
+
} from './validation';
|
|
31
|
+
|
|
32
|
+
const QueueResponseSchema = APIResponseSchema(z.object({ queue: QueueSchema }));
|
|
33
|
+
const QueuesListResponseSchema = APIResponseSchema(
|
|
34
|
+
z.object({
|
|
35
|
+
queues: z.array(QueueSchema),
|
|
36
|
+
total: z.number().optional(),
|
|
37
|
+
})
|
|
38
|
+
);
|
|
39
|
+
const DeleteQueueResponseSchema = APIResponseSchemaNoData();
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Create a new message queue.
|
|
43
|
+
*
|
|
44
|
+
* Creates a queue with the specified type and settings. The queue name is optional
|
|
45
|
+
* and will be auto-generated if not provided.
|
|
46
|
+
*
|
|
47
|
+
* @param client - The API client instance
|
|
48
|
+
* @param params - Queue creation parameters
|
|
49
|
+
* @returns The created queue
|
|
50
|
+
* @throws {QueueValidationError} If validation fails
|
|
51
|
+
* @throws {QueueError} If the API request fails
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* // Create a worker queue with custom settings
|
|
56
|
+
* const queue = await createQueue(client, {
|
|
57
|
+
* name: 'order-processing',
|
|
58
|
+
* queue_type: 'worker',
|
|
59
|
+
* description: 'Processes customer orders',
|
|
60
|
+
* settings: {
|
|
61
|
+
* default_max_retries: 3,
|
|
62
|
+
* default_visibility_timeout_seconds: 60,
|
|
63
|
+
* },
|
|
64
|
+
* });
|
|
65
|
+
* console.log(`Created queue: ${queue.id}`);
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export async function createQueue(
|
|
69
|
+
client: APIClient,
|
|
70
|
+
params: CreateQueueRequest,
|
|
71
|
+
options?: QueueApiOptions
|
|
72
|
+
): Promise<Queue> {
|
|
73
|
+
// Validate before sending to API
|
|
74
|
+
validateQueueType(params.queue_type);
|
|
75
|
+
if (params.name) {
|
|
76
|
+
validateQueueName(params.name);
|
|
77
|
+
}
|
|
78
|
+
if (params.description) {
|
|
79
|
+
validateDescription(params.description);
|
|
80
|
+
}
|
|
81
|
+
// Validate settings if provided
|
|
82
|
+
if (params.settings) {
|
|
83
|
+
if (params.settings.default_ttl_seconds !== undefined) {
|
|
84
|
+
validateTTL(params.settings.default_ttl_seconds ?? undefined);
|
|
85
|
+
}
|
|
86
|
+
if (params.settings.default_visibility_timeout_seconds !== undefined) {
|
|
87
|
+
validateVisibilityTimeout(params.settings.default_visibility_timeout_seconds);
|
|
88
|
+
}
|
|
89
|
+
if (params.settings.default_max_retries !== undefined) {
|
|
90
|
+
validateMaxRetries(params.settings.default_max_retries);
|
|
91
|
+
}
|
|
92
|
+
if (params.settings.max_in_flight_per_client !== undefined) {
|
|
93
|
+
validateMaxInFlight(params.settings.max_in_flight_per_client);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const url = queueApiPath('create');
|
|
98
|
+
const resp = await client.post(
|
|
99
|
+
url,
|
|
100
|
+
params,
|
|
101
|
+
QueueResponseSchema,
|
|
102
|
+
CreateQueueRequestSchema,
|
|
103
|
+
undefined,
|
|
104
|
+
buildQueueHeaders(options?.orgId)
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
if (resp.success) {
|
|
108
|
+
return resp.data.queue;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
throw new QueueError({
|
|
112
|
+
message: resp.message || 'Failed to create queue',
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Get a queue by name.
|
|
118
|
+
*
|
|
119
|
+
* Retrieves the queue details including settings and statistics.
|
|
120
|
+
*
|
|
121
|
+
* @param client - The API client instance
|
|
122
|
+
* @param name - The queue name
|
|
123
|
+
* @returns The queue details
|
|
124
|
+
* @throws {QueueValidationError} If the queue name is invalid
|
|
125
|
+
* @throws {QueueNotFoundError} If the queue does not exist
|
|
126
|
+
* @throws {QueueError} If the API request fails
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* ```typescript
|
|
130
|
+
* const queue = await getQueue(client, 'order-processing');
|
|
131
|
+
* console.log(`Queue has ${queue.stats?.message_count} messages`);
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
export async function getQueue(
|
|
135
|
+
client: APIClient,
|
|
136
|
+
name: string,
|
|
137
|
+
options?: QueueApiOptions
|
|
138
|
+
): Promise<Queue> {
|
|
139
|
+
validateQueueName(name);
|
|
140
|
+
const url = queueApiPath('get', name);
|
|
141
|
+
const resp = await client.get(
|
|
142
|
+
url,
|
|
143
|
+
QueueResponseSchema,
|
|
144
|
+
undefined,
|
|
145
|
+
buildQueueHeaders(options?.orgId)
|
|
146
|
+
);
|
|
147
|
+
|
|
148
|
+
if (resp.success) {
|
|
149
|
+
return resp.data.queue;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (resp.message?.includes('not found')) {
|
|
153
|
+
throw new QueueNotFoundError({
|
|
154
|
+
queueName: name,
|
|
155
|
+
message: resp.message,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
throw new QueueError({
|
|
160
|
+
queueName: name,
|
|
161
|
+
message: resp.message || 'Failed to get queue',
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* List all queues with optional pagination.
|
|
167
|
+
*
|
|
168
|
+
* @param client - The API client instance
|
|
169
|
+
* @param params - Optional pagination parameters
|
|
170
|
+
* @returns Object containing the list of queues and optional total count
|
|
171
|
+
* @throws {QueueValidationError} If pagination parameters are invalid
|
|
172
|
+
* @throws {QueueError} If the API request fails
|
|
173
|
+
*
|
|
174
|
+
* @example
|
|
175
|
+
* ```typescript
|
|
176
|
+
* // List first 10 queues
|
|
177
|
+
* const { queues, total } = await listQueues(client, { limit: 10 });
|
|
178
|
+
* console.log(`Found ${total} queues`);
|
|
179
|
+
*
|
|
180
|
+
* // Paginate through all queues
|
|
181
|
+
* const { queues: page2 } = await listQueues(client, { limit: 10, offset: 10 });
|
|
182
|
+
* ```
|
|
183
|
+
*/
|
|
184
|
+
export async function listQueues(
|
|
185
|
+
client: APIClient,
|
|
186
|
+
params?: ListQueuesRequest,
|
|
187
|
+
options?: QueueApiOptions
|
|
188
|
+
): Promise<{ queues: Queue[]; total?: number }> {
|
|
189
|
+
// Validate pagination params
|
|
190
|
+
if (params?.limit !== undefined) {
|
|
191
|
+
validateLimit(params.limit);
|
|
192
|
+
}
|
|
193
|
+
if (params?.offset !== undefined) {
|
|
194
|
+
validateOffset(params.offset);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
const searchParams = new URLSearchParams();
|
|
198
|
+
if (params?.limit !== undefined) {
|
|
199
|
+
searchParams.set('limit', String(params.limit));
|
|
200
|
+
}
|
|
201
|
+
if (params?.offset !== undefined) {
|
|
202
|
+
searchParams.set('offset', String(params.offset));
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
const queryString = searchParams.toString();
|
|
206
|
+
const url = queueApiPathWithQuery('list', queryString || undefined);
|
|
207
|
+
const resp = await client.get(
|
|
208
|
+
url,
|
|
209
|
+
QueuesListResponseSchema,
|
|
210
|
+
undefined,
|
|
211
|
+
buildQueueHeaders(options?.orgId)
|
|
212
|
+
);
|
|
213
|
+
|
|
214
|
+
if (resp.success) {
|
|
215
|
+
return { queues: resp.data.queues, total: resp.data.total };
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
throw new QueueError({
|
|
219
|
+
message: resp.message || 'Failed to list queues',
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Update an existing queue.
|
|
225
|
+
*
|
|
226
|
+
* Updates the queue description and/or settings. Only provided fields are updated.
|
|
227
|
+
*
|
|
228
|
+
* @param client - The API client instance
|
|
229
|
+
* @param name - The queue name
|
|
230
|
+
* @param params - Update parameters
|
|
231
|
+
* @returns The updated queue
|
|
232
|
+
* @throws {QueueValidationError} If validation fails
|
|
233
|
+
* @throws {QueueNotFoundError} If the queue does not exist
|
|
234
|
+
* @throws {QueueError} If the API request fails
|
|
235
|
+
*
|
|
236
|
+
* @example
|
|
237
|
+
* ```typescript
|
|
238
|
+
* const queue = await updateQueue(client, 'order-processing', {
|
|
239
|
+
* description: 'Updated description',
|
|
240
|
+
* settings: { default_max_retries: 5 },
|
|
241
|
+
* });
|
|
242
|
+
* ```
|
|
243
|
+
*/
|
|
244
|
+
export async function updateQueue(
|
|
245
|
+
client: APIClient,
|
|
246
|
+
name: string,
|
|
247
|
+
params: UpdateQueueRequest,
|
|
248
|
+
options?: QueueApiOptions
|
|
249
|
+
): Promise<Queue> {
|
|
250
|
+
// Validate before sending to API
|
|
251
|
+
validateQueueName(name);
|
|
252
|
+
if (params.description) {
|
|
253
|
+
validateDescription(params.description);
|
|
254
|
+
}
|
|
255
|
+
// Validate settings if provided
|
|
256
|
+
if (params.settings) {
|
|
257
|
+
if (params.settings.default_ttl_seconds !== undefined) {
|
|
258
|
+
validateTTL(params.settings.default_ttl_seconds ?? undefined);
|
|
259
|
+
}
|
|
260
|
+
if (params.settings.default_visibility_timeout_seconds !== undefined) {
|
|
261
|
+
validateVisibilityTimeout(params.settings.default_visibility_timeout_seconds);
|
|
262
|
+
}
|
|
263
|
+
if (params.settings.default_max_retries !== undefined) {
|
|
264
|
+
validateMaxRetries(params.settings.default_max_retries);
|
|
265
|
+
}
|
|
266
|
+
if (params.settings.max_in_flight_per_client !== undefined) {
|
|
267
|
+
validateMaxInFlight(params.settings.max_in_flight_per_client);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
const url = queueApiPath('update', name);
|
|
272
|
+
const resp = await client.patch(
|
|
273
|
+
url,
|
|
274
|
+
params,
|
|
275
|
+
QueueResponseSchema,
|
|
276
|
+
UpdateQueueRequestSchema,
|
|
277
|
+
undefined,
|
|
278
|
+
buildQueueHeaders(options?.orgId)
|
|
279
|
+
);
|
|
280
|
+
|
|
281
|
+
if (resp.success) {
|
|
282
|
+
return resp.data.queue;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
if (resp.message?.includes('not found')) {
|
|
286
|
+
throw new QueueNotFoundError({
|
|
287
|
+
queueName: name,
|
|
288
|
+
message: resp.message,
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
throw new QueueError({
|
|
293
|
+
queueName: name,
|
|
294
|
+
message: resp.message || 'Failed to update queue',
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Delete a queue.
|
|
300
|
+
*
|
|
301
|
+
* Permanently deletes a queue and all its messages. This action cannot be undone.
|
|
302
|
+
*
|
|
303
|
+
* @param client - The API client instance
|
|
304
|
+
* @param name - The queue name
|
|
305
|
+
* @throws {QueueValidationError} If the queue name is invalid
|
|
306
|
+
* @throws {QueueNotFoundError} If the queue does not exist
|
|
307
|
+
* @throws {QueueError} If the API request fails
|
|
308
|
+
*
|
|
309
|
+
* @example
|
|
310
|
+
* ```typescript
|
|
311
|
+
* await deleteQueue(client, 'order-processing');
|
|
312
|
+
* console.log('Queue deleted');
|
|
313
|
+
* ```
|
|
314
|
+
*/
|
|
315
|
+
export async function deleteQueue(
|
|
316
|
+
client: APIClient,
|
|
317
|
+
name: string,
|
|
318
|
+
options?: QueueApiOptions
|
|
319
|
+
): Promise<void> {
|
|
320
|
+
validateQueueName(name);
|
|
321
|
+
const url = queueApiPath('delete', name);
|
|
322
|
+
const resp = await client.delete(
|
|
323
|
+
url,
|
|
324
|
+
DeleteQueueResponseSchema,
|
|
325
|
+
undefined,
|
|
326
|
+
buildQueueHeaders(options?.orgId)
|
|
327
|
+
);
|
|
328
|
+
|
|
329
|
+
if (resp.success) {
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
if (resp.message?.includes('not found')) {
|
|
334
|
+
throw new QueueNotFoundError({
|
|
335
|
+
queueName: name,
|
|
336
|
+
message: resp.message,
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
throw new QueueError({
|
|
341
|
+
queueName: name,
|
|
342
|
+
message: resp.message || 'Failed to delete queue',
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* Pause a queue.
|
|
348
|
+
*
|
|
349
|
+
* Pauses message processing for the queue. Messages can still be published
|
|
350
|
+
* but will not be delivered to consumers until the queue is resumed.
|
|
351
|
+
*
|
|
352
|
+
* @param client - The API client instance
|
|
353
|
+
* @param name - The queue name
|
|
354
|
+
* @returns The updated queue with paused_at timestamp
|
|
355
|
+
* @throws {QueueValidationError} If the queue name is invalid
|
|
356
|
+
* @throws {QueueNotFoundError} If the queue does not exist
|
|
357
|
+
* @throws {QueueError} If the API request fails
|
|
358
|
+
*
|
|
359
|
+
* @example
|
|
360
|
+
* ```typescript
|
|
361
|
+
* const queue = await pauseQueue(client, 'order-processing');
|
|
362
|
+
* console.log(`Queue paused at: ${queue.paused_at}`);
|
|
363
|
+
* ```
|
|
364
|
+
*/
|
|
365
|
+
export async function pauseQueue(
|
|
366
|
+
client: APIClient,
|
|
367
|
+
name: string,
|
|
368
|
+
options?: QueueApiOptions
|
|
369
|
+
): Promise<Queue> {
|
|
370
|
+
validateQueueName(name);
|
|
371
|
+
const url = queueApiPath('pause', name);
|
|
372
|
+
const resp = await client.post(
|
|
373
|
+
url,
|
|
374
|
+
{},
|
|
375
|
+
QueueResponseSchema,
|
|
376
|
+
z.object({}),
|
|
377
|
+
undefined,
|
|
378
|
+
buildQueueHeaders(options?.orgId)
|
|
379
|
+
);
|
|
380
|
+
|
|
381
|
+
if (resp.success) {
|
|
382
|
+
return resp.data.queue;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
if (resp.message?.includes('not found')) {
|
|
386
|
+
throw new QueueNotFoundError({
|
|
387
|
+
queueName: name,
|
|
388
|
+
message: resp.message,
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
throw new QueueError({
|
|
393
|
+
queueName: name,
|
|
394
|
+
message: resp.message || 'Failed to pause queue',
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
/**
|
|
399
|
+
* Resume a paused queue.
|
|
400
|
+
*
|
|
401
|
+
* Resumes message processing for a paused queue. Consumers will start
|
|
402
|
+
* receiving messages again.
|
|
403
|
+
*
|
|
404
|
+
* @param client - The API client instance
|
|
405
|
+
* @param name - The queue name
|
|
406
|
+
* @returns The updated queue with paused_at cleared
|
|
407
|
+
* @throws {QueueValidationError} If the queue name is invalid
|
|
408
|
+
* @throws {QueueNotFoundError} If the queue does not exist
|
|
409
|
+
* @throws {QueueError} If the API request fails
|
|
410
|
+
*
|
|
411
|
+
* @example
|
|
412
|
+
* ```typescript
|
|
413
|
+
* const queue = await resumeQueue(client, 'order-processing');
|
|
414
|
+
* console.log(`Queue resumed, paused_at: ${queue.paused_at}`); // null
|
|
415
|
+
* ```
|
|
416
|
+
*/
|
|
417
|
+
export async function resumeQueue(
|
|
418
|
+
client: APIClient,
|
|
419
|
+
name: string,
|
|
420
|
+
options?: QueueApiOptions
|
|
421
|
+
): Promise<Queue> {
|
|
422
|
+
validateQueueName(name);
|
|
423
|
+
const url = queueApiPath('resume', name);
|
|
424
|
+
const resp = await client.post(
|
|
425
|
+
url,
|
|
426
|
+
{},
|
|
427
|
+
QueueResponseSchema,
|
|
428
|
+
z.object({}),
|
|
429
|
+
undefined,
|
|
430
|
+
buildQueueHeaders(options?.orgId)
|
|
431
|
+
);
|
|
432
|
+
|
|
433
|
+
if (resp.success) {
|
|
434
|
+
return resp.data.queue;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
if (resp.message?.includes('not found')) {
|
|
438
|
+
throw new QueueNotFoundError({
|
|
439
|
+
queueName: name,
|
|
440
|
+
message: resp.message,
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
throw new QueueError({
|
|
445
|
+
queueName: name,
|
|
446
|
+
message: resp.message || 'Failed to resume queue',
|
|
447
|
+
});
|
|
448
|
+
}
|