@teamlearners/clawops 0.27.0 → 0.29.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 +42 -11
- package/dist/agent/index.cjs +9 -9
- package/dist/agent/index.js +1 -1
- package/dist/{chunk-6ZPYSHP3.cjs → chunk-SBK45525.cjs} +3 -3
- package/dist/{chunk-6ZPYSHP3.cjs.map → chunk-SBK45525.cjs.map} +1 -1
- package/dist/{chunk-AAU26CX6.js → chunk-VKZ22VNA.js} +3 -3
- package/dist/{chunk-AAU26CX6.js.map → chunk-VKZ22VNA.js.map} +1 -1
- package/dist/index.cjs +216 -42
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +267 -38
- package/dist/index.d.ts +267 -38
- package/dist/index.js +183 -10
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var chunkSBK45525_cjs = require('./chunk-SBK45525.cjs');
|
|
6
6
|
var zod = require('zod');
|
|
7
7
|
var crypto = require('crypto');
|
|
8
8
|
|
|
@@ -13,11 +13,11 @@ function validateBaseUrl(url) {
|
|
|
13
13
|
try {
|
|
14
14
|
parsed = new URL(url);
|
|
15
15
|
} catch {
|
|
16
|
-
throw new
|
|
16
|
+
throw new chunkSBK45525_cjs.ClawOpsError(`Invalid base_url: ${url}`);
|
|
17
17
|
}
|
|
18
18
|
if (parsed.protocol === "https:") return url;
|
|
19
19
|
if (parsed.protocol === "http:" && LOCALHOST_HOSTS.has(parsed.hostname)) return url;
|
|
20
|
-
throw new
|
|
20
|
+
throw new chunkSBK45525_cjs.ClawOpsError(
|
|
21
21
|
`base_url\uC740 HTTPS\uB97C \uC0AC\uC6A9\uD574\uC57C \uD569\uB2C8\uB2E4 (\uBC1B\uC740 \uAC12: '${url}'). \uB85C\uCEEC \uAC1C\uBC1C \uC2DC\uC5D0\uB294 http://localhost\uB97C \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.`
|
|
22
22
|
);
|
|
23
23
|
}
|
|
@@ -30,9 +30,9 @@ var APIClient = class {
|
|
|
30
30
|
_defaultHeaders;
|
|
31
31
|
constructor(options) {
|
|
32
32
|
this._apiKey = options.apiKey;
|
|
33
|
-
this._baseURL = validateBaseUrl((options.baseURL ??
|
|
34
|
-
this._maxRetries = options.maxRetries ??
|
|
35
|
-
this._timeout = options.timeout ??
|
|
33
|
+
this._baseURL = validateBaseUrl((options.baseURL ?? chunkSBK45525_cjs.DEFAULT_BASE_URL).replace(/\/+$/, ""));
|
|
34
|
+
this._maxRetries = options.maxRetries ?? chunkSBK45525_cjs.DEFAULT_MAX_RETRIES;
|
|
35
|
+
this._timeout = options.timeout ?? chunkSBK45525_cjs.DEFAULT_TIMEOUT;
|
|
36
36
|
this._fetch = options.fetch ?? globalThis.fetch;
|
|
37
37
|
this._defaultHeaders = options.defaultHeaders ?? {};
|
|
38
38
|
}
|
|
@@ -41,7 +41,7 @@ var APIClient = class {
|
|
|
41
41
|
Authorization: `Bearer ${this._apiKey}`,
|
|
42
42
|
"Content-Type": "application/json",
|
|
43
43
|
Accept: "application/json",
|
|
44
|
-
"User-Agent": `claw-ops-node/${
|
|
44
|
+
"User-Agent": `claw-ops-node/${chunkSBK45525_cjs.VERSION}`,
|
|
45
45
|
...this._defaultHeaders
|
|
46
46
|
};
|
|
47
47
|
if (extra) Object.assign(headers, extra);
|
|
@@ -77,14 +77,14 @@ var APIClient = class {
|
|
|
77
77
|
await this._sleep(this._retryDelay(this._maxRetries - retriesLeft));
|
|
78
78
|
continue;
|
|
79
79
|
}
|
|
80
|
-
throw new
|
|
80
|
+
throw new chunkSBK45525_cjs.APITimeoutError({ method: method2, url });
|
|
81
81
|
}
|
|
82
82
|
if (retriesLeft > 0) {
|
|
83
83
|
retriesLeft--;
|
|
84
84
|
await this._sleep(this._retryDelay(this._maxRetries - retriesLeft));
|
|
85
85
|
continue;
|
|
86
86
|
}
|
|
87
|
-
throw new
|
|
87
|
+
throw new chunkSBK45525_cjs.APIConnectionError({ method: method2, url });
|
|
88
88
|
} finally {
|
|
89
89
|
clearTimeout(timeoutId);
|
|
90
90
|
}
|
|
@@ -100,7 +100,7 @@ var APIClient = class {
|
|
|
100
100
|
} catch {
|
|
101
101
|
body = null;
|
|
102
102
|
}
|
|
103
|
-
throw
|
|
103
|
+
throw chunkSBK45525_cjs.makeStatusError(response.status, body, response.headers, { method: method2, url });
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
async _request(method2, path, options = {}) {
|
|
@@ -111,11 +111,11 @@ var APIClient = class {
|
|
|
111
111
|
try {
|
|
112
112
|
json = await response.json();
|
|
113
113
|
} catch {
|
|
114
|
-
throw new
|
|
114
|
+
throw new chunkSBK45525_cjs.APIResponseValidationError({ status: response.status }, { method: method2, url });
|
|
115
115
|
}
|
|
116
116
|
const parsed = options.castTo.safeParse(json);
|
|
117
117
|
if (!parsed.success) {
|
|
118
|
-
throw new
|
|
118
|
+
throw new chunkSBK45525_cjs.APIResponseValidationError({ status: response.status }, { method: method2, url });
|
|
119
119
|
}
|
|
120
120
|
return parsed.data;
|
|
121
121
|
}
|
|
@@ -123,7 +123,7 @@ var APIClient = class {
|
|
|
123
123
|
return status === 408 || status === 409 || status === 429 || status >= 500;
|
|
124
124
|
}
|
|
125
125
|
_retryDelay(retriesTaken) {
|
|
126
|
-
const delay = Math.min(
|
|
126
|
+
const delay = Math.min(chunkSBK45525_cjs.INITIAL_RETRY_DELAY * 2 ** retriesTaken, chunkSBK45525_cjs.MAX_RETRY_DELAY);
|
|
127
127
|
return delay * (1 + Math.random());
|
|
128
128
|
}
|
|
129
129
|
_sleep(ms) {
|
|
@@ -141,9 +141,21 @@ var APIClient = class {
|
|
|
141
141
|
const result = await this._request("PUT", path, options);
|
|
142
142
|
return result;
|
|
143
143
|
}
|
|
144
|
+
async _patch(path, options) {
|
|
145
|
+
const result = await this._request("PATCH", path, options);
|
|
146
|
+
return result;
|
|
147
|
+
}
|
|
144
148
|
async _getRaw(path, options = {}) {
|
|
145
149
|
return this._send("GET", path, options);
|
|
146
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* 본문을 돌려주는 DELETE. 기존 `_delete` 는 void 라 응답을 버리는데, soft delete 처럼
|
|
153
|
+
* 삭제 결과 리소스를 그대로 반환하는 endpoint 가 있어서 따로 둔다.
|
|
154
|
+
*/
|
|
155
|
+
async _deleteWithResponse(path, options) {
|
|
156
|
+
const result = await this._request("DELETE", path, options);
|
|
157
|
+
return result;
|
|
158
|
+
}
|
|
147
159
|
async _delete(path, options = {}) {
|
|
148
160
|
await this._request("DELETE", path, options);
|
|
149
161
|
}
|
|
@@ -308,6 +320,112 @@ var AssignmentLinks = class extends APIResource {
|
|
|
308
320
|
);
|
|
309
321
|
}
|
|
310
322
|
};
|
|
323
|
+
var BlockedRecipientSchema = zod.z.object({
|
|
324
|
+
id: zod.z.string(),
|
|
325
|
+
/** 국내 표기로 정규화된 번호 (예 '01012345678'). */
|
|
326
|
+
number: zod.z.string(),
|
|
327
|
+
channel: zod.z.enum(["call", "message"]),
|
|
328
|
+
/** 지금 차단 중인지. 해제분도 이력으로 조회되므로 이 값으로 구분한다. */
|
|
329
|
+
active: zod.z.boolean(),
|
|
330
|
+
source: zod.z.string(),
|
|
331
|
+
sourceRef: zod.z.string().nullable().optional(),
|
|
332
|
+
note: zod.z.string().nullable().optional(),
|
|
333
|
+
createdBy: zod.z.string().nullable().optional(),
|
|
334
|
+
createdAt: zod.z.string(),
|
|
335
|
+
updatedAt: zod.z.string(),
|
|
336
|
+
unblockedAt: zod.z.string().nullable().optional(),
|
|
337
|
+
unblockedSource: zod.z.string().nullable().optional(),
|
|
338
|
+
unblockedBy: zod.z.string().nullable().optional(),
|
|
339
|
+
unblockedNote: zod.z.string().nullable().optional()
|
|
340
|
+
}).passthrough();
|
|
341
|
+
|
|
342
|
+
// src/resources/blocked-recipients.ts
|
|
343
|
+
var BlockedRecipients = class extends APIResource {
|
|
344
|
+
/**
|
|
345
|
+
* 번호를 수신거부 명단에 등록합니다.
|
|
346
|
+
*
|
|
347
|
+
* 하이픈·`+82` 표기 모두 허용되며 국내 표기로 정규화되어 저장됩니다.
|
|
348
|
+
*
|
|
349
|
+
* **멱등입니다** — 이미 차단 중인 (번호, 채널)을 다시 등록해도 에러가 아니라 기존 항목을
|
|
350
|
+
* 돌려줍니다. 같은 사람이 수신거부를 두 번 요청하는 것은 정상 상황이기 때문입니다.
|
|
351
|
+
*/
|
|
352
|
+
async create(params, options = {}) {
|
|
353
|
+
const body = stripNotGiven({
|
|
354
|
+
number: params.number,
|
|
355
|
+
channel: params.channel,
|
|
356
|
+
source: params.source,
|
|
357
|
+
sourceRef: params.sourceRef,
|
|
358
|
+
note: params.note
|
|
359
|
+
});
|
|
360
|
+
return this._client._post(`${this._basePath}/blocked-recipients`, {
|
|
361
|
+
body,
|
|
362
|
+
castTo: BlockedRecipientSchema,
|
|
363
|
+
...options
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* 수신거부 목록을 조회합니다. 기본은 **현재 차단 중인 항목만** 이며,
|
|
368
|
+
* 해제 이력까지 보려면 `status` 를 `'released'` 또는 `'all'` 로 지정합니다.
|
|
369
|
+
*/
|
|
370
|
+
async list(params = {}, options = {}) {
|
|
371
|
+
const query = stripNotGiven({
|
|
372
|
+
channel: params.channel,
|
|
373
|
+
number: params.number,
|
|
374
|
+
status: params.status,
|
|
375
|
+
page: params.page,
|
|
376
|
+
pageSize: params.pageSize
|
|
377
|
+
});
|
|
378
|
+
const path = `${this._basePath}/blocked-recipients`;
|
|
379
|
+
const raw = await this._client._get(path, {
|
|
380
|
+
castTo: PageSchema(BlockedRecipientSchema),
|
|
381
|
+
query: Object.keys(query).length ? query : void 0,
|
|
382
|
+
...options
|
|
383
|
+
});
|
|
384
|
+
const page = new Page(raw.data, raw.meta);
|
|
385
|
+
page._setClient(this._client, path, BlockedRecipientSchema, query);
|
|
386
|
+
return page;
|
|
387
|
+
}
|
|
388
|
+
/** 항목 상세를 조회합니다. 해제된 항목도 이력으로 남아 조회됩니다(`active: false`). */
|
|
389
|
+
async retrieve(blockId, options = {}) {
|
|
390
|
+
return this._client._get(`${this._basePath}/blocked-recipients/${blockId}`, {
|
|
391
|
+
castTo: BlockedRecipientSchema,
|
|
392
|
+
...options
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* 메모를 수정합니다.
|
|
397
|
+
*
|
|
398
|
+
* 번호와 채널은 바꿀 수 없습니다 — 바꾸면 "누가 무엇을 언제 거부했는가"라는 증빙이
|
|
399
|
+
* 뒤틀립니다. 잘못 등록했다면 해제한 뒤 올바른 번호로 새로 등록하세요.
|
|
400
|
+
*/
|
|
401
|
+
async update(blockId, params = {}, options = {}) {
|
|
402
|
+
return this._client._patch(`${this._basePath}/blocked-recipients/${blockId}`, {
|
|
403
|
+
body: { note: params.note ?? null },
|
|
404
|
+
castTo: BlockedRecipientSchema,
|
|
405
|
+
...options
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* 수신거부를 해제해 다시 발신할 수 있게 합니다.
|
|
410
|
+
*
|
|
411
|
+
* **항목은 삭제되지 않습니다.** `active` 가 false 가 되고 `unblockedAt` 이 기록될 뿐,
|
|
412
|
+
* 행은 이력으로 남습니다 — 언제 거부했고 언제 풀렸는지가 곧 증빙이기 때문입니다.
|
|
413
|
+
* 해제분은 `list({ status: 'released' })` 로 볼 수 있습니다.
|
|
414
|
+
*
|
|
415
|
+
* 이미 해제된 항목에 다시 호출해도 성공하며, 최초 해제 시각은 덮어쓰지 않습니다.
|
|
416
|
+
*/
|
|
417
|
+
async release(blockId, params = {}, options = {}) {
|
|
418
|
+
const body = stripNotGiven({ note: params.note });
|
|
419
|
+
return this._client._deleteWithResponse(
|
|
420
|
+
`${this._basePath}/blocked-recipients/${blockId}`,
|
|
421
|
+
{
|
|
422
|
+
body: Object.keys(body).length ? body : void 0,
|
|
423
|
+
castTo: BlockedRecipientSchema,
|
|
424
|
+
...options
|
|
425
|
+
}
|
|
426
|
+
);
|
|
427
|
+
}
|
|
428
|
+
};
|
|
311
429
|
var CallSchema = zod.z.object({
|
|
312
430
|
callId: zod.z.string(),
|
|
313
431
|
/**
|
|
@@ -555,25 +673,53 @@ var Messages = class extends APIResource {
|
|
|
555
673
|
};
|
|
556
674
|
var PhoneNumberSchema = zod.z.object({
|
|
557
675
|
number: zod.z.string(),
|
|
676
|
+
numberType: zod.z.string().nullable().optional(),
|
|
558
677
|
source: zod.z.string().nullable().optional(),
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
678
|
+
// routingType 은 enum 으로 좁히지 않는다. 좁히면 서버가 라우팅 종류를 늘렸을 때 그 번호가
|
|
679
|
+
// 섞인 목록 조회가 통째로 실패한다(0.28.0 까지의 실제 결함: 'agent' 로 라우팅된 번호
|
|
680
|
+
// 하나가 numbers.list() 전체를 깨뜨렸다).
|
|
681
|
+
routingType: zod.z.string().nullable().optional(),
|
|
682
|
+
agentId: zod.z.string().nullable().optional(),
|
|
683
|
+
callFlowId: zod.z.string().nullable().optional(),
|
|
684
|
+
forwardTo: zod.z.string().nullable().optional(),
|
|
562
685
|
sipEndpointId: zod.z.string().nullable().optional(),
|
|
563
686
|
sipCredentialId: zod.z.string().nullable().optional(),
|
|
687
|
+
webhookUrl: zod.z.string().nullable().optional(),
|
|
688
|
+
webhookMethod: zod.z.string().nullable().optional(),
|
|
689
|
+
webhookHeaders: zod.z.record(zod.z.string()).nullable().optional(),
|
|
690
|
+
callContextUrl: zod.z.string().nullable().optional(),
|
|
691
|
+
statusCallback: zod.z.string().nullable().optional(),
|
|
692
|
+
statusCallbackEvents: zod.z.string().nullable().optional(),
|
|
693
|
+
dictionaryId: zod.z.string().nullable().optional(),
|
|
564
694
|
createdAt: zod.z.string().nullable().optional()
|
|
565
695
|
}).passthrough();
|
|
566
696
|
|
|
567
697
|
// src/resources/numbers.ts
|
|
568
698
|
var Numbers = class extends APIResource {
|
|
699
|
+
/**
|
|
700
|
+
* 번호를 발급합니다. 번호 풀에서 자동으로 배정되며 어떤 번호가 나올지는 지정할 수 없습니다.
|
|
701
|
+
*
|
|
702
|
+
* 발급 직후 번호는 `routingType: "webhook"` 이고 `webhookUrl` 이 비어 있어, 그대로 두면
|
|
703
|
+
* 걸려온 전화가 거절됩니다. 이어서 `update()` 로 착신 라우팅을 지정하세요.
|
|
704
|
+
*/
|
|
569
705
|
async create(params = {}, options = {}) {
|
|
570
|
-
const body = stripNotGiven({
|
|
706
|
+
const body = stripNotGiven({
|
|
707
|
+
webhookUrl: params.webhookUrl,
|
|
708
|
+
webhookMethod: params.webhookMethod,
|
|
709
|
+
webhookHeaders: params.webhookHeaders,
|
|
710
|
+
statusCallback: params.statusCallback,
|
|
711
|
+
statusCallbackEvents: params.statusCallbackEvents
|
|
712
|
+
});
|
|
571
713
|
return this._client._post(`${this._basePath}/numbers`, {
|
|
572
714
|
body: Object.keys(body).length ? body : void 0,
|
|
573
715
|
castTo: PhoneNumberSchema,
|
|
574
716
|
...options
|
|
575
717
|
});
|
|
576
718
|
}
|
|
719
|
+
/**
|
|
720
|
+
* 등록된 번호 목록을 조회합니다. 페이지네이션과 필터가 없으며 보유한 번호가 한 번에 전부
|
|
721
|
+
* 반환됩니다.
|
|
722
|
+
*/
|
|
577
723
|
async list(options = {}) {
|
|
578
724
|
const schema = zod.z.object({ data: zod.z.array(PhoneNumberSchema) }).passthrough();
|
|
579
725
|
const result = await this._client._get(`${this._basePath}/numbers`, {
|
|
@@ -582,13 +728,30 @@ var Numbers = class extends APIResource {
|
|
|
582
728
|
});
|
|
583
729
|
return result.data;
|
|
584
730
|
}
|
|
731
|
+
/**
|
|
732
|
+
* 번호 설정을 수정합니다. 착신 라우팅(webhook/agent/callflow/forward/sip/softphone)과
|
|
733
|
+
* webhook, 상태 통지, 받아쓰기 사전을 변경할 수 있습니다. 보낸 필드만 반영되고 생략한
|
|
734
|
+
* 필드는 유지됩니다.
|
|
735
|
+
*
|
|
736
|
+
* 라우팅을 바꾸면 다른 라우팅 필드는 서버에서 자동으로 비워집니다. `agent` 에서
|
|
737
|
+
* `webhook` 으로 되돌리면 `agentId` 가 null 이 되므로, 다시 `agent` 로 돌아갈 때
|
|
738
|
+
* `agentId` 를 새로 지정해야 합니다.
|
|
739
|
+
*/
|
|
585
740
|
async update(number, params = {}, options = {}) {
|
|
586
741
|
const body = stripNotGiven({
|
|
587
|
-
webhookUrl: params.webhookUrl,
|
|
588
|
-
webhookMethod: params.webhookMethod,
|
|
589
742
|
routingType: params.routingType,
|
|
743
|
+
agentId: params.agentId,
|
|
744
|
+
callFlowId: params.callFlowId,
|
|
745
|
+
forwardTo: params.forwardTo,
|
|
590
746
|
sipEndpointId: params.sipEndpointId,
|
|
591
|
-
sipCredentialId: params.sipCredentialId
|
|
747
|
+
sipCredentialId: params.sipCredentialId,
|
|
748
|
+
webhookUrl: params.webhookUrl,
|
|
749
|
+
webhookMethod: params.webhookMethod,
|
|
750
|
+
webhookHeaders: params.webhookHeaders,
|
|
751
|
+
callContextUrl: params.callContextUrl,
|
|
752
|
+
statusCallback: params.statusCallback,
|
|
753
|
+
statusCallbackEvents: params.statusCallbackEvents,
|
|
754
|
+
dictionaryId: params.dictionaryId
|
|
592
755
|
});
|
|
593
756
|
return this._client._put(`${this._basePath}/numbers/${number}`, {
|
|
594
757
|
body,
|
|
@@ -596,6 +759,10 @@ var Numbers = class extends APIResource {
|
|
|
596
759
|
...options
|
|
597
760
|
});
|
|
598
761
|
}
|
|
762
|
+
/**
|
|
763
|
+
* 번호를 반납합니다. 번호는 풀로 복귀하며 되돌릴 수 없습니다. 같은 번호를 다시
|
|
764
|
+
* 발급받는다는 보장이 없습니다.
|
|
765
|
+
*/
|
|
599
766
|
async delete(number, options = {}) {
|
|
600
767
|
await this._client._delete(`${this._basePath}/numbers/${number}`, options);
|
|
601
768
|
}
|
|
@@ -776,8 +943,11 @@ var AccountContext = class {
|
|
|
776
943
|
get assignmentLinks() {
|
|
777
944
|
return new AssignmentLinks(this._client, this._accountId);
|
|
778
945
|
}
|
|
946
|
+
get blockedRecipients() {
|
|
947
|
+
return new BlockedRecipients(this._client, this._accountId);
|
|
948
|
+
}
|
|
779
949
|
};
|
|
780
|
-
var WebhookVerificationError = class extends
|
|
950
|
+
var WebhookVerificationError = class extends chunkSBK45525_cjs.ClawOpsError {
|
|
781
951
|
constructor(message = "Webhook \uC11C\uBA85\uC774 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.") {
|
|
782
952
|
super(message);
|
|
783
953
|
this.name = "WebhookVerificationError";
|
|
@@ -807,13 +977,13 @@ var ClawOps = class extends APIClient {
|
|
|
807
977
|
constructor(options = {}) {
|
|
808
978
|
let apiKey = options.apiKey ?? process.env.CLAWOPS_API_KEY;
|
|
809
979
|
if (!apiKey) {
|
|
810
|
-
throw new
|
|
980
|
+
throw new chunkSBK45525_cjs.ClawOpsError("apiKey\uB97C \uC9C0\uC815\uD558\uAC70\uB098 CLAWOPS_API_KEY \uD658\uACBD\uBCC0\uC218\uB97C \uC124\uC815\uD558\uC138\uC694.");
|
|
811
981
|
}
|
|
812
982
|
let accountId = options.accountId ?? process.env.CLAWOPS_ACCOUNT_ID;
|
|
813
983
|
if (!accountId) {
|
|
814
|
-
throw new
|
|
984
|
+
throw new chunkSBK45525_cjs.ClawOpsError("accountId\uB97C \uC9C0\uC815\uD558\uAC70\uB098 CLAWOPS_ACCOUNT_ID \uD658\uACBD\uBCC0\uC218\uB97C \uC124\uC815\uD558\uC138\uC694.");
|
|
815
985
|
}
|
|
816
|
-
const baseURL = options.baseURL ?? process.env.CLAWOPS_BASE_URL ??
|
|
986
|
+
const baseURL = options.baseURL ?? process.env.CLAWOPS_BASE_URL ?? chunkSBK45525_cjs.DEFAULT_BASE_URL;
|
|
817
987
|
super({
|
|
818
988
|
apiKey,
|
|
819
989
|
baseURL,
|
|
@@ -848,6 +1018,9 @@ var ClawOps = class extends APIClient {
|
|
|
848
1018
|
get assignmentLinks() {
|
|
849
1019
|
return new AssignmentLinks(this, this._defaultAccountId);
|
|
850
1020
|
}
|
|
1021
|
+
get blockedRecipients() {
|
|
1022
|
+
return new BlockedRecipients(this, this._defaultAccountId);
|
|
1023
|
+
}
|
|
851
1024
|
get webhooks() {
|
|
852
1025
|
return new Webhooks();
|
|
853
1026
|
}
|
|
@@ -861,79 +1034,80 @@ var client_default_default = ClawOps;
|
|
|
861
1034
|
|
|
862
1035
|
Object.defineProperty(exports, "APIConnectionError", {
|
|
863
1036
|
enumerable: true,
|
|
864
|
-
get: function () { return
|
|
1037
|
+
get: function () { return chunkSBK45525_cjs.APIConnectionError; }
|
|
865
1038
|
});
|
|
866
1039
|
Object.defineProperty(exports, "APIError", {
|
|
867
1040
|
enumerable: true,
|
|
868
|
-
get: function () { return
|
|
1041
|
+
get: function () { return chunkSBK45525_cjs.APIError; }
|
|
869
1042
|
});
|
|
870
1043
|
Object.defineProperty(exports, "APIResponseValidationError", {
|
|
871
1044
|
enumerable: true,
|
|
872
|
-
get: function () { return
|
|
1045
|
+
get: function () { return chunkSBK45525_cjs.APIResponseValidationError; }
|
|
873
1046
|
});
|
|
874
1047
|
Object.defineProperty(exports, "APIStatusError", {
|
|
875
1048
|
enumerable: true,
|
|
876
|
-
get: function () { return
|
|
1049
|
+
get: function () { return chunkSBK45525_cjs.APIStatusError; }
|
|
877
1050
|
});
|
|
878
1051
|
Object.defineProperty(exports, "APITimeoutError", {
|
|
879
1052
|
enumerable: true,
|
|
880
|
-
get: function () { return
|
|
1053
|
+
get: function () { return chunkSBK45525_cjs.APITimeoutError; }
|
|
881
1054
|
});
|
|
882
1055
|
Object.defineProperty(exports, "AgentConnectionError", {
|
|
883
1056
|
enumerable: true,
|
|
884
|
-
get: function () { return
|
|
1057
|
+
get: function () { return chunkSBK45525_cjs.AgentConnectionError; }
|
|
885
1058
|
});
|
|
886
1059
|
Object.defineProperty(exports, "AgentError", {
|
|
887
1060
|
enumerable: true,
|
|
888
|
-
get: function () { return
|
|
1061
|
+
get: function () { return chunkSBK45525_cjs.AgentError; }
|
|
889
1062
|
});
|
|
890
1063
|
Object.defineProperty(exports, "AuthenticationError", {
|
|
891
1064
|
enumerable: true,
|
|
892
|
-
get: function () { return
|
|
1065
|
+
get: function () { return chunkSBK45525_cjs.AuthenticationError; }
|
|
893
1066
|
});
|
|
894
1067
|
Object.defineProperty(exports, "BadRequestError", {
|
|
895
1068
|
enumerable: true,
|
|
896
|
-
get: function () { return
|
|
1069
|
+
get: function () { return chunkSBK45525_cjs.BadRequestError; }
|
|
897
1070
|
});
|
|
898
1071
|
Object.defineProperty(exports, "ClawOpsError", {
|
|
899
1072
|
enumerable: true,
|
|
900
|
-
get: function () { return
|
|
1073
|
+
get: function () { return chunkSBK45525_cjs.ClawOpsError; }
|
|
901
1074
|
});
|
|
902
1075
|
Object.defineProperty(exports, "ConflictError", {
|
|
903
1076
|
enumerable: true,
|
|
904
|
-
get: function () { return
|
|
1077
|
+
get: function () { return chunkSBK45525_cjs.ConflictError; }
|
|
905
1078
|
});
|
|
906
1079
|
Object.defineProperty(exports, "InternalServerError", {
|
|
907
1080
|
enumerable: true,
|
|
908
|
-
get: function () { return
|
|
1081
|
+
get: function () { return chunkSBK45525_cjs.InternalServerError; }
|
|
909
1082
|
});
|
|
910
1083
|
Object.defineProperty(exports, "NotFoundError", {
|
|
911
1084
|
enumerable: true,
|
|
912
|
-
get: function () { return
|
|
1085
|
+
get: function () { return chunkSBK45525_cjs.NotFoundError; }
|
|
913
1086
|
});
|
|
914
1087
|
Object.defineProperty(exports, "PermissionDeniedError", {
|
|
915
1088
|
enumerable: true,
|
|
916
|
-
get: function () { return
|
|
1089
|
+
get: function () { return chunkSBK45525_cjs.PermissionDeniedError; }
|
|
917
1090
|
});
|
|
918
1091
|
Object.defineProperty(exports, "RateLimitError", {
|
|
919
1092
|
enumerable: true,
|
|
920
|
-
get: function () { return
|
|
1093
|
+
get: function () { return chunkSBK45525_cjs.RateLimitError; }
|
|
921
1094
|
});
|
|
922
1095
|
Object.defineProperty(exports, "ServiceUnavailableError", {
|
|
923
1096
|
enumerable: true,
|
|
924
|
-
get: function () { return
|
|
1097
|
+
get: function () { return chunkSBK45525_cjs.ServiceUnavailableError; }
|
|
925
1098
|
});
|
|
926
1099
|
Object.defineProperty(exports, "UnprocessableEntityError", {
|
|
927
1100
|
enumerable: true,
|
|
928
|
-
get: function () { return
|
|
1101
|
+
get: function () { return chunkSBK45525_cjs.UnprocessableEntityError; }
|
|
929
1102
|
});
|
|
930
1103
|
Object.defineProperty(exports, "VERSION", {
|
|
931
1104
|
enumerable: true,
|
|
932
|
-
get: function () { return
|
|
1105
|
+
get: function () { return chunkSBK45525_cjs.VERSION; }
|
|
933
1106
|
});
|
|
934
1107
|
exports.APIClient = APIClient;
|
|
935
1108
|
exports.AccountContext = AccountContext;
|
|
936
1109
|
exports.AssignmentLinks = AssignmentLinks;
|
|
1110
|
+
exports.BlockedRecipients = BlockedRecipients;
|
|
937
1111
|
exports.Calls = Calls;
|
|
938
1112
|
exports.ClawOps = ClawOps;
|
|
939
1113
|
exports.Messages = Messages;
|