@unboundcx/sdk 4.13.57 → 4.13.58

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unboundcx/sdk",
3
- "version": "4.13.57",
3
+ "version": "4.13.58",
4
4
  "description": "Official JavaScript SDK for the Unbound API - A comprehensive toolkit for integrating with Unbound's communication, AI, and data management services",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -385,11 +385,60 @@ export class WorkerService {
385
385
  params.body.userId = userId;
386
386
  }
387
387
 
388
- const result = await internalRequest(this.sdk,
388
+ const result = await internalRequest(this.sdk,
389
389
  '/taskRouter/worker/queueLogout',
390
390
  'PUT',
391
391
  params,
392
392
  );
393
393
  return result;
394
394
  }
395
+
396
+ /**
397
+ * Search for workers within a queue's scope
398
+ * Finds workers a caller can act on (transfer/invite/DM) for a given queue, with optional
399
+ * name/email/extension text search and skill-match flagging.
400
+ *
401
+ * @param {Object} options - Parameters
402
+ * @param {string} options.queueId - The queue ID to scope the search to (required)
403
+ * @param {string} [options.q] - Free-text filter matching name, email, or extension
404
+ * @param {string[]} [options.skills] - Skill IDs to flag matches for (joined as a comma-separated list)
405
+ * @param {number} [options.limit] - Max rows to return (default 50, max 200)
406
+ * @returns {Promise<Object>} Object containing the matching worker rows
407
+ * @returns {Array<Object>} result.rows - Worker rows with status/capacity/skills info
408
+ * @returns {number} result.total - Total matching rows
409
+ *
410
+ * @example
411
+ * const { rows, total } = await sdk.taskRouter.worker.search({ queueId: 'queue123', q: 'sam' });
412
+ * console.log(rows.length, total);
413
+ */
414
+ async search(options = {}) {
415
+ const { queueId, q, skills, limit } = options;
416
+
417
+ this.sdk.validateParams(
418
+ { queueId, q, skills, limit },
419
+ {
420
+ queueId: { type: 'string', required: true },
421
+ q: { type: 'string', required: false },
422
+ skills: { type: 'array', required: false },
423
+ limit: { type: 'number', required: false },
424
+ },
425
+ );
426
+
427
+ const query = { queueId };
428
+
429
+ if (q) {
430
+ query.q = q;
431
+ }
432
+
433
+ if (skills && skills.length) {
434
+ query.skills = skills.join(',');
435
+ }
436
+
437
+ if (limit) {
438
+ query.limit = limit;
439
+ }
440
+
441
+ const result = await internalRequest(this.sdk, '/taskRouter/workers/search', 'GET', { query });
442
+ return result;
443
+ }
395
444
  }