@teamlearners/clawops 0.40.0 → 0.41.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.
@@ -264,9 +264,22 @@ declare class AssignmentLinks extends APIResource {
264
264
 
265
265
  declare const BlockedRecipientSchema: z.ZodObject<{
266
266
  id: z.ZodString;
267
- /** 국내 표기로 정규화된 번호 (예 '01012345678'). */
268
- number: z.ZodString;
269
- channel: z.ZodEnum<["call", "message"]>;
267
+ /**
268
+ * 수신거부한 상대. **채널과 무관하게 항상 이 칸에 들어갑니다** —
269
+ * `call`·`message` 면 국내 표기로 정규화된 전화번호(예 `'01012345678'`),
270
+ * `email` 이면 소문자로 정규화된 이메일 주소(예 `'kim@example.com'`).
271
+ *
272
+ * 채널이 늘어도 이 칸 하나만 읽으면 됩니다.
273
+ */
274
+ recipient: z.ZodString;
275
+ /**
276
+ * ⚠️ `email` 이 2026-09-07 에 추가됐습니다. 이 값을 **enum 으로 좁히지 마세요** —
277
+ * 서버가 채널을 늘리면 옛 SDK 가 파싱 단계에서 통째로 실패합니다. 실제로 그 일이
278
+ * 있었습니다: `['call','message']` 로 굳혀 둔 탓에, 이메일 항목이 하나라도 섞이면
279
+ * 목록 조회 전체가 깨졌습니다. 알려진 값은 `BlockedChannel` 로 노출하되 파싱은
280
+ * 열어 둡니다.
281
+ */
282
+ channel: z.ZodString;
270
283
  /** 지금 차단 중인지. 해제분도 이력으로 조회되므로 이 값으로 구분한다. */
271
284
  active: z.ZodBoolean;
272
285
  source: z.ZodString;
@@ -281,9 +294,22 @@ declare const BlockedRecipientSchema: z.ZodObject<{
281
294
  unblockedNote: z.ZodOptional<z.ZodNullable<z.ZodString>>;
282
295
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
283
296
  id: z.ZodString;
284
- /** 국내 표기로 정규화된 번호 (예 '01012345678'). */
285
- number: z.ZodString;
286
- channel: z.ZodEnum<["call", "message"]>;
297
+ /**
298
+ * 수신거부한 상대. **채널과 무관하게 항상 이 칸에 들어갑니다** —
299
+ * `call`·`message` 면 국내 표기로 정규화된 전화번호(예 `'01012345678'`),
300
+ * `email` 이면 소문자로 정규화된 이메일 주소(예 `'kim@example.com'`).
301
+ *
302
+ * 채널이 늘어도 이 칸 하나만 읽으면 됩니다.
303
+ */
304
+ recipient: z.ZodString;
305
+ /**
306
+ * ⚠️ `email` 이 2026-09-07 에 추가됐습니다. 이 값을 **enum 으로 좁히지 마세요** —
307
+ * 서버가 채널을 늘리면 옛 SDK 가 파싱 단계에서 통째로 실패합니다. 실제로 그 일이
308
+ * 있었습니다: `['call','message']` 로 굳혀 둔 탓에, 이메일 항목이 하나라도 섞이면
309
+ * 목록 조회 전체가 깨졌습니다. 알려진 값은 `BlockedChannel` 로 노출하되 파싱은
310
+ * 열어 둡니다.
311
+ */
312
+ channel: z.ZodString;
287
313
  /** 지금 차단 중인지. 해제분도 이력으로 조회되므로 이 값으로 구분한다. */
288
314
  active: z.ZodBoolean;
289
315
  source: z.ZodString;
@@ -298,9 +324,22 @@ declare const BlockedRecipientSchema: z.ZodObject<{
298
324
  unblockedNote: z.ZodOptional<z.ZodNullable<z.ZodString>>;
299
325
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
300
326
  id: z.ZodString;
301
- /** 국내 표기로 정규화된 번호 (예 '01012345678'). */
302
- number: z.ZodString;
303
- channel: z.ZodEnum<["call", "message"]>;
327
+ /**
328
+ * 수신거부한 상대. **채널과 무관하게 항상 이 칸에 들어갑니다** —
329
+ * `call`·`message` 면 국내 표기로 정규화된 전화번호(예 `'01012345678'`),
330
+ * `email` 이면 소문자로 정규화된 이메일 주소(예 `'kim@example.com'`).
331
+ *
332
+ * 채널이 늘어도 이 칸 하나만 읽으면 됩니다.
333
+ */
334
+ recipient: z.ZodString;
335
+ /**
336
+ * ⚠️ `email` 이 2026-09-07 에 추가됐습니다. 이 값을 **enum 으로 좁히지 마세요** —
337
+ * 서버가 채널을 늘리면 옛 SDK 가 파싱 단계에서 통째로 실패합니다. 실제로 그 일이
338
+ * 있었습니다: `['call','message']` 로 굳혀 둔 탓에, 이메일 항목이 하나라도 섞이면
339
+ * 목록 조회 전체가 깨졌습니다. 알려진 값은 `BlockedChannel` 로 노출하되 파싱은
340
+ * 열어 둡니다.
341
+ */
342
+ channel: z.ZodString;
304
343
  /** 지금 차단 중인지. 해제분도 이력으로 조회되므로 이 값으로 구분한다. */
305
344
  active: z.ZodBoolean;
306
345
  source: z.ZodString;
@@ -315,9 +354,23 @@ declare const BlockedRecipientSchema: z.ZodObject<{
315
354
  unblockedNote: z.ZodOptional<z.ZodNullable<z.ZodString>>;
316
355
  }, z.ZodTypeAny, "passthrough">>;
317
356
  type BlockedRecipient = z.infer<typeof BlockedRecipientSchema>;
318
- type BlockedChannel = BlockedRecipient['channel'];
357
+ /**
358
+ * 차단 채널. `call`=전화, `message`=문자(SMS/LMS/MMS 공통), `email`=이메일.
359
+ *
360
+ * 같은 상대라도 채널마다 별개 항목입니다 — 전화와 이메일을 모두 막으려면 두 번 등록합니다.
361
+ *
362
+ * ⚠️ 응답의 `channel` 은 `string` 입니다(위 참조). 이 타입은 **요청을 쓸 때의 도움말**이고,
363
+ * `(string & {})` 를 유니온에 두어 서버가 새 채널을 내놔도 타입이 막지 않게 했습니다.
364
+ */
365
+ type BlockedChannel = 'call' | 'message' | 'email' | (string & {});
319
366
  type BlockedRecipientStatus = 'active' | 'released' | 'all';
320
- type BlockedRecipientSource = 'api' | 'console' | 'import';
367
+ /**
368
+ * 접수 경로. 공개 API 로 등록하면 이 넷 중 하나입니다.
369
+ *
370
+ * ⚠️ 응답에는 **여기 없는 값도 옵니다** — `ars`(ARS 수신거부 9번), `sms`(문자 회신) 처럼
371
+ * 내부 접수 경로로 들어온 항목이 그렇습니다. 그래서 응답의 `source` 는 `string` 입니다.
372
+ */
373
+ type BlockedRecipientSource = 'api' | 'console' | 'import' | 'agent';
321
374
 
322
375
  type RequestOptions$2 = {
323
376
  extraHeaders?: Record<string, string>;
@@ -327,23 +380,30 @@ type RequestOptions$2 = {
327
380
  /**
328
381
  * 수신거부(DNC) 명단 리소스.
329
382
  *
330
- * 등록된 번호는 이 계정의 **발신**(전화·문자)에서 제외됩니다. 착신은 막지 않습니다 —
331
- * 그 번호에서 걸려오는 전화는 그대로 받습니다.
383
+ * 등록된 대상은 이 계정의 **발신**(전화·문자·이메일)에서 제외됩니다. 착신은 막지 않습니다 —
384
+ * 그 번호에서 걸려오는 전화도, 그 주소에서 오는 메일도 그대로 받습니다.
385
+ *
386
+ * 채널은 각각 따로 차단합니다. 같은 상대라도 채널마다 별개 항목이므로, 전화와 이메일을
387
+ * 모두 막으려면 `channel` 을 바꿔 두 번 등록합니다.
332
388
  *
333
- * 전화와 문자는 각각 따로 차단합니다. 같은 번호라도 채널마다 별개 항목이므로,
334
- * 막으려면 `channel` 바꿔 등록합니다.
389
+ * ⚠️ **채널마다 막는 방식이 다릅니다.**
390
+ * - 전화·문자: 수신거부 대상이면 발신 요청 **전체**가 `422 recipient_blocked` 로 거절됩니다.
391
+ * - 이메일: 차단된 수신자만 **빼고 나머지에게는 보냅니다.** 응답의 `suppressed` 에 빠진
392
+ * 주소가 담기므로, `2xx` 를 받아도 그 칸을 확인해야 누가 안 갔는지 알 수 있습니다.
393
+ * 수신자가 전원 걸렸을 때만 `422` 입니다.
335
394
  */
336
395
  declare class BlockedRecipients extends APIResource {
337
396
  /**
338
- * 번호를 수신거부 명단에 등록합니다.
397
+ * 수신거부 명단에 등록합니다.
339
398
  *
340
- * 하이픈·`+82` 표기 모두 허용되며 국내 표기로 정규화되어 저장됩니다.
399
+ * `recipient` 형식은 `channel` 정합니다 `call`·`message` 는 **전화번호**(하이픈·`+82`
400
+ * 표기 모두 허용, 국내 표기로 정규화되어 저장), `email` 은 **이메일 주소**(소문자로 정규화).
341
401
  *
342
- * **멱등입니다** — 이미 차단 중인 (번호, 채널)을 다시 등록해도 에러가 아니라 기존 항목을
402
+ * **멱등입니다** — 이미 차단 중인 (대상, 채널)을 다시 등록해도 에러가 아니라 기존 항목을
343
403
  * 돌려줍니다. 같은 사람이 수신거부를 두 번 요청하는 것은 정상 상황이기 때문입니다.
344
404
  */
345
405
  create(params: {
346
- number: string;
406
+ recipient: string;
347
407
  channel: BlockedChannel;
348
408
  source?: BlockedRecipientSource;
349
409
  sourceRef?: string;
@@ -355,7 +415,7 @@ declare class BlockedRecipients extends APIResource {
355
415
  */
356
416
  list(params?: {
357
417
  channel?: BlockedChannel;
358
- number?: string;
418
+ recipient?: string;
359
419
  status?: BlockedRecipientStatus;
360
420
  page?: number;
361
421
  pageSize?: number;
package/dist/index.cjs CHANGED
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var chunkLLPMUDNE_cjs = require('./chunk-LLPMUDNE.cjs');
6
6
  var chunkMXEZQRIL_cjs = require('./chunk-MXEZQRIL.cjs');
7
- var chunkIEFCBBKV_cjs = require('./chunk-IEFCBBKV.cjs');
7
+ var chunkWTG2QGQU_cjs = require('./chunk-WTG2QGQU.cjs');
8
8
  var zod = require('zod');
9
9
  var crypto = require('crypto');
10
10
 
@@ -48,7 +48,7 @@ var APIClient = class {
48
48
  Authorization: `Bearer ${this._apiKey}`,
49
49
  "Content-Type": "application/json",
50
50
  Accept: "application/json",
51
- "User-Agent": `claw-ops-node/${chunkIEFCBBKV_cjs.VERSION}`,
51
+ "User-Agent": `claw-ops-node/${chunkWTG2QGQU_cjs.VERSION}`,
52
52
  ...this._defaultHeaders
53
53
  };
54
54
  if (extra) Object.assign(headers, extra);
@@ -332,9 +332,22 @@ var AssignmentLinks = class extends APIResource {
332
332
  };
333
333
  var BlockedRecipientSchema = zod.z.object({
334
334
  id: zod.z.string(),
335
- /** 국내 표기로 정규화된 번호 (예 '01012345678'). */
336
- number: zod.z.string(),
337
- channel: zod.z.enum(["call", "message"]),
335
+ /**
336
+ * 수신거부한 상대. **채널과 무관하게 항상 이 칸에 들어갑니다** —
337
+ * `call`·`message` 면 국내 표기로 정규화된 전화번호(예 `'01012345678'`),
338
+ * `email` 이면 소문자로 정규화된 이메일 주소(예 `'kim@example.com'`).
339
+ *
340
+ * 채널이 늘어도 이 칸 하나만 읽으면 됩니다.
341
+ */
342
+ recipient: zod.z.string(),
343
+ /**
344
+ * ⚠️ `email` 이 2026-09-07 에 추가됐습니다. 이 값을 **enum 으로 좁히지 마세요** —
345
+ * 서버가 채널을 늘리면 옛 SDK 가 파싱 단계에서 통째로 실패합니다. 실제로 그 일이
346
+ * 있었습니다: `['call','message']` 로 굳혀 둔 탓에, 이메일 항목이 하나라도 섞이면
347
+ * 목록 조회 전체가 깨졌습니다. 알려진 값은 `BlockedChannel` 로 노출하되 파싱은
348
+ * 열어 둡니다.
349
+ */
350
+ channel: zod.z.string(),
338
351
  /** 지금 차단 중인지. 해제분도 이력으로 조회되므로 이 값으로 구분한다. */
339
352
  active: zod.z.boolean(),
340
353
  source: zod.z.string(),
@@ -352,16 +365,17 @@ var BlockedRecipientSchema = zod.z.object({
352
365
  // src/resources/blocked-recipients.ts
353
366
  var BlockedRecipients = class extends APIResource {
354
367
  /**
355
- * 번호를 수신거부 명단에 등록합니다.
368
+ * 수신거부 명단에 등록합니다.
356
369
  *
357
- * 하이픈·`+82` 표기 모두 허용되며 국내 표기로 정규화되어 저장됩니다.
370
+ * `recipient` 형식은 `channel` 정합니다 `call`·`message` 는 **전화번호**(하이픈·`+82`
371
+ * 표기 모두 허용, 국내 표기로 정규화되어 저장), `email` 은 **이메일 주소**(소문자로 정규화).
358
372
  *
359
- * **멱등입니다** — 이미 차단 중인 (번호, 채널)을 다시 등록해도 에러가 아니라 기존 항목을
373
+ * **멱등입니다** — 이미 차단 중인 (대상, 채널)을 다시 등록해도 에러가 아니라 기존 항목을
360
374
  * 돌려줍니다. 같은 사람이 수신거부를 두 번 요청하는 것은 정상 상황이기 때문입니다.
361
375
  */
362
376
  async create(params, options = {}) {
363
377
  const body = stripNotGiven({
364
- number: params.number,
378
+ recipient: params.recipient,
365
379
  channel: params.channel,
366
380
  source: params.source,
367
381
  sourceRef: params.sourceRef,
@@ -380,7 +394,7 @@ var BlockedRecipients = class extends APIResource {
380
394
  async list(params = {}, options = {}) {
381
395
  const query = stripNotGiven({
382
396
  channel: params.channel,
383
- number: params.number,
397
+ recipient: params.recipient,
384
398
  status: params.status,
385
399
  page: params.page,
386
400
  pageSize: params.pageSize
@@ -426,14 +440,11 @@ var BlockedRecipients = class extends APIResource {
426
440
  */
427
441
  async release(blockId, params = {}, options = {}) {
428
442
  const body = stripNotGiven({ note: params.note });
429
- return this._client._deleteWithResponse(
430
- `${this._basePath}/blocked-recipients/${blockId}`,
431
- {
432
- body: Object.keys(body).length ? body : void 0,
433
- castTo: BlockedRecipientSchema,
434
- ...options
435
- }
436
- );
443
+ return this._client._deleteWithResponse(`${this._basePath}/blocked-recipients/${blockId}`, {
444
+ body: Object.keys(body).length ? body : void 0,
445
+ castTo: BlockedRecipientSchema,
446
+ ...options
447
+ });
437
448
  }
438
449
  };
439
450
  var CallSchema = zod.z.object({
@@ -1542,7 +1553,7 @@ Object.defineProperty(exports, "UnprocessableEntityError", {
1542
1553
  });
1543
1554
  Object.defineProperty(exports, "VERSION", {
1544
1555
  enumerable: true,
1545
- get: function () { return chunkIEFCBBKV_cjs.VERSION; }
1556
+ get: function () { return chunkWTG2QGQU_cjs.VERSION; }
1546
1557
  });
1547
1558
  exports.APIClient = APIClient;
1548
1559
  exports.AccountContext = AccountContext;