@talqing/sdk 0.4.0 → 0.4.1

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.
@@ -1126,7 +1126,7 @@ export type CallBatchResponse = {
1126
1126
  */
1127
1127
  agent_name: string | null;
1128
1128
  agent_plan?: StoredAgentPlan | null;
1129
- calling_window: CallingWindow | null;
1129
+ calling_window: TimeWindow | null;
1130
1130
  counts: CallBatchCounts;
1131
1131
  /**
1132
1132
  * Created At
@@ -1573,32 +1573,6 @@ export type CallToolResponse = {
1573
1573
  */
1574
1574
  silent?: boolean;
1575
1575
  };
1576
- /**
1577
- * CallingWindow
1578
- *
1579
- * The hours a batch may dial in, on the batch's own clock.
1580
- *
1581
- * A window that crosses midnight (``21:00``–``06:00``) is valid and means
1582
- * exactly what an evening consumer-calling window means: the day check applies
1583
- * to the *start* side, so ``21:00``–``06:00`` on ``days: [5]`` runs Friday
1584
- * 21:00 through Saturday 06:00.
1585
- */
1586
- export type CallingWindow = {
1587
- /**
1588
- * Days
1589
- *
1590
- * ISO weekdays the window opens on, 1 = Monday.
1591
- */
1592
- days?: Array<number>;
1593
- /**
1594
- * End
1595
- */
1596
- end: string;
1597
- /**
1598
- * Start
1599
- */
1600
- start: string;
1601
- };
1602
1576
  /**
1603
1577
  * CatalogResponse
1604
1578
  */
@@ -2417,7 +2391,7 @@ export type CreateCallBatchRequest = {
2417
2391
  * Which version of `agent_id` to run. Omit for the published one. `"draft"` runs the unpublished working copy — validated and tool-pinned at request time, and refused with the publish errors if it does not hold together.
2418
2392
  */
2419
2393
  agent_version?: number | 'draft' | null;
2420
- calling_window?: CallingWindow | null;
2394
+ calling_window?: TimeWindow | null;
2421
2395
  /**
2422
2396
  * From Phone Number Id
2423
2397
  */
@@ -2467,12 +2441,27 @@ export type CreateEmailBatchRequest = {
2467
2441
  * Body Format
2468
2442
  */
2469
2443
  body_format?: 'text' | 'html';
2470
- calling_window?: CallingWindow | null;
2444
+ /**
2445
+ * Draft Attempts
2446
+ */
2447
+ draft_attempts?: number;
2448
+ /**
2449
+ * Draft Concurrency
2450
+ */
2451
+ draft_concurrency?: number;
2452
+ /**
2453
+ * Draft Gap Seconds
2454
+ */
2455
+ draft_gap_seconds?: number;
2456
+ /**
2457
+ * Draft Retry After Minutes
2458
+ */
2459
+ draft_retry_after_minutes?: number;
2471
2460
  field_map: FieldMap;
2472
2461
  /**
2473
2462
  * From Email
2474
2463
  *
2475
- * The default sending address. Its domain must be verified on that Resend account; a single send may override this for that press alone.
2464
+ * The default sending address. Its domain must be verified on that Resend account; a send may override this for its own rows alone.
2476
2465
  */
2477
2466
  from_email: string;
2478
2467
  /**
@@ -2485,14 +2474,6 @@ export type CreateEmailBatchRequest = {
2485
2474
  * A connected Resend account.
2486
2475
  */
2487
2476
  integration_id: string;
2488
- /**
2489
- * Max Attempts
2490
- */
2491
- max_attempts?: number;
2492
- /**
2493
- * Max Concurrency
2494
- */
2495
- max_concurrency?: number;
2496
2477
  /**
2497
2478
  * Name
2498
2479
  */
@@ -2506,15 +2487,25 @@ export type CreateEmailBatchRequest = {
2506
2487
  */
2507
2488
  reply_to?: string | null;
2508
2489
  /**
2509
- * Retry After Minutes
2490
+ * Send Attempts
2510
2491
  */
2511
- retry_after_minutes?: number;
2492
+ send_attempts?: number;
2512
2493
  /**
2513
- * Send Sleep Seconds
2494
+ * Send Daily Cap
2514
2495
  *
2515
- * Seconds slept after each email within one send. One press of 50 rows takes about `50 x this` seconds.
2496
+ * Emails this batch may send per local day, across all of its sends. Null is uncapped.
2516
2497
  */
2517
- send_sleep_seconds?: number;
2498
+ send_daily_cap?: number | null;
2499
+ /**
2500
+ * Send Gap Seconds
2501
+ *
2502
+ * Minimum seconds between STARTING two emails. 60 means one a minute.
2503
+ */
2504
+ send_gap_seconds?: number;
2505
+ /**
2506
+ * Send Retry After Minutes
2507
+ */
2508
+ send_retry_after_minutes?: number;
2518
2509
  /**
2519
2510
  * Start At
2520
2511
  */
@@ -2529,6 +2520,86 @@ export type CreateEmailBatchRequest = {
2529
2520
  * Timezone
2530
2521
  */
2531
2522
  timezone: string;
2523
+ /**
2524
+ * When email may LEAVE. Inherited by every send this batch creates.
2525
+ */
2526
+ window?: TimeWindow | null;
2527
+ };
2528
+ /**
2529
+ * CreateEmailSendRequest
2530
+ *
2531
+ * Send these rows. **This is the call that mails real people.**
2532
+ *
2533
+ * Name ``recipient_ids`` or pass ``selection: "all_drafts"``. Everything else
2534
+ * defaults to the batch's own setting; ``window`` and ``send_daily_cap`` accept
2535
+ * an explicit ``null`` to mean "no window" and "uncapped" rather than
2536
+ * "inherit", so the service reads ``model_fields_set``.
2537
+ *
2538
+ * The sender applies to THIS send alone and never writes back to the batch.
2539
+ */
2540
+ export type CreateEmailSendRequest = {
2541
+ /**
2542
+ * From Email
2543
+ */
2544
+ from_email?: string | null;
2545
+ /**
2546
+ * From Name
2547
+ */
2548
+ from_name?: string | null;
2549
+ /**
2550
+ * Recipient Ids
2551
+ */
2552
+ recipient_ids?: Array<string> | null;
2553
+ /**
2554
+ * Reply To
2555
+ */
2556
+ reply_to?: string | null;
2557
+ /**
2558
+ * Selection
2559
+ */
2560
+ selection?: 'all_drafts' | null;
2561
+ /**
2562
+ * Send Attempts
2563
+ */
2564
+ send_attempts?: number | null;
2565
+ /**
2566
+ * Send Daily Cap
2567
+ */
2568
+ send_daily_cap?: number | null;
2569
+ /**
2570
+ * Send Gap Seconds
2571
+ */
2572
+ send_gap_seconds?: number | null;
2573
+ /**
2574
+ * Send Retry After Minutes
2575
+ */
2576
+ send_retry_after_minutes?: number | null;
2577
+ /**
2578
+ * Start At
2579
+ */
2580
+ start_at?: string | null;
2581
+ /**
2582
+ * Timezone
2583
+ */
2584
+ timezone?: string | null;
2585
+ window?: TimeWindow | null;
2586
+ };
2587
+ /**
2588
+ * CreateEmailSendResponse
2589
+ *
2590
+ * The send that was created, and every row that did not go into it.
2591
+ *
2592
+ * Two halves rather than one, because they answer different questions and a
2593
+ * caller needs both: what is now scheduled to go out, and which rows it
2594
+ * refused and why. If NOTHING in the selection could be sent there is no send
2595
+ * to describe, so that case is a 400 naming the reasons instead.
2596
+ */
2597
+ export type CreateEmailSendResponse = {
2598
+ /**
2599
+ * Rejected
2600
+ */
2601
+ rejected: Array<RejectedRecipient>;
2602
+ send: EmailSendResponse;
2532
2603
  };
2533
2604
  /**
2534
2605
  * CreateIntegrationRequest
@@ -2976,6 +3047,25 @@ export type DeliveryResultResponse = {
2976
3047
  */
2977
3048
  webhook_id: string;
2978
3049
  };
3050
+ /**
3051
+ * DraftedVersion
3052
+ *
3053
+ * How many of this batch's rows were written by one version of its task.
3054
+ *
3055
+ * The batch page's whole answer to "did my edit change anything": a list that
3056
+ * reads "1 204 rows on v2, 96 on v3" names both the improvement and exactly
3057
+ * which rows are still on the old prompt.
3058
+ */
3059
+ export type DraftedVersion = {
3060
+ /**
3061
+ * Count
3062
+ */
3063
+ count: number;
3064
+ /**
3065
+ * Version
3066
+ */
3067
+ version: number;
3068
+ };
2979
3069
  /**
2980
3070
  * EmailBatchCounts
2981
3071
  */
@@ -3033,16 +3123,35 @@ export type EmailBatchResponse = {
3033
3123
  * Body Format
3034
3124
  */
3035
3125
  body_format: 'text' | 'html';
3036
- calling_window: CallingWindow | null;
3037
3126
  counts: EmailBatchCounts;
3038
3127
  /**
3039
3128
  * Created At
3040
3129
  */
3041
3130
  created_at: string;
3131
+ /**
3132
+ * Draft Attempts
3133
+ */
3134
+ draft_attempts: number;
3135
+ /**
3136
+ * Draft Concurrency
3137
+ */
3138
+ draft_concurrency: number;
3139
+ /**
3140
+ * Draft Gap Seconds
3141
+ */
3142
+ draft_gap_seconds: number;
3143
+ /**
3144
+ * Draft Retry After Minutes
3145
+ */
3146
+ draft_retry_after_minutes: number;
3042
3147
  /**
3043
3148
  * Drafted At
3044
3149
  */
3045
3150
  drafted_at: string | null;
3151
+ /**
3152
+ * Drafted Versions
3153
+ */
3154
+ drafted_versions: Array<DraftedVersion>;
3046
3155
  /**
3047
3156
  * Failure Reason
3048
3157
  */
@@ -3072,14 +3181,6 @@ export type EmailBatchResponse = {
3072
3181
  * Integration Name
3073
3182
  */
3074
3183
  integration_name: string | null;
3075
- /**
3076
- * Max Attempts
3077
- */
3078
- max_attempts: number;
3079
- /**
3080
- * Max Concurrency
3081
- */
3082
- max_concurrency: number;
3083
3184
  /**
3084
3185
  * Name
3085
3186
  */
@@ -3096,18 +3197,34 @@ export type EmailBatchResponse = {
3096
3197
  * Provider Cost
3097
3198
  */
3098
3199
  provider_cost: number | null;
3200
+ /**
3201
+ * Published Task Version
3202
+ */
3203
+ published_task_version: number | null;
3099
3204
  /**
3100
3205
  * Reply To
3101
3206
  */
3102
3207
  reply_to: string | null;
3103
3208
  /**
3104
- * Retry After Minutes
3209
+ * Send Attempts
3105
3210
  */
3106
- retry_after_minutes: number;
3211
+ send_attempts: number;
3212
+ /**
3213
+ * Send Daily Cap
3214
+ */
3215
+ send_daily_cap: number | null;
3216
+ /**
3217
+ * Send Gap Seconds
3218
+ */
3219
+ send_gap_seconds: number;
3220
+ /**
3221
+ * Send Retry After Minutes
3222
+ */
3223
+ send_retry_after_minutes: number;
3107
3224
  /**
3108
- * Send Sleep Seconds
3225
+ * Sent Today
3109
3226
  */
3110
- send_sleep_seconds: number;
3227
+ sent_today: number;
3111
3228
  /**
3112
3229
  * Start At
3113
3230
  */
@@ -3132,6 +3249,7 @@ export type EmailBatchResponse = {
3132
3249
  * Timezone
3133
3250
  */
3134
3251
  timezone: string;
3252
+ window: TimeWindow | null;
3135
3253
  };
3136
3254
  /**
3137
3255
  * EmailRecipientInput
@@ -3210,9 +3328,9 @@ export type EmailRecipientResponse = {
3210
3328
  */
3211
3329
  send_attempts: number;
3212
3330
  /**
3213
- * Send Job Id
3331
+ * Send Run Id
3214
3332
  */
3215
- send_job_id: string | null;
3333
+ send_run_id: string | null;
3216
3334
  /**
3217
3335
  * Sent At
3218
3336
  */
@@ -3233,6 +3351,10 @@ export type EmailRecipientResponse = {
3233
3351
  * Task Run Id
3234
3352
  */
3235
3353
  task_run_id: string | null;
3354
+ /**
3355
+ * Task Version
3356
+ */
3357
+ task_version: number | null;
3236
3358
  /**
3237
3359
  * To Email
3238
3360
  */
@@ -3242,6 +3364,120 @@ export type EmailRecipientResponse = {
3242
3364
  */
3243
3365
  updated_at: string;
3244
3366
  };
3367
+ /**
3368
+ * EmailSendCounts
3369
+ *
3370
+ * Where this send's rows are.
3371
+ *
3372
+ * ``total`` is what the send was created with and never changes — a send's row
3373
+ * set is immutable — so ``returned`` is what is left once every other bucket is
3374
+ * accounted for: the rows a cancel or a failure handed back as drafts.
3375
+ */
3376
+ export type EmailSendCounts = {
3377
+ /**
3378
+ * Queued
3379
+ */
3380
+ queued: number;
3381
+ /**
3382
+ * Returned
3383
+ */
3384
+ returned: number;
3385
+ /**
3386
+ * Send Failed
3387
+ */
3388
+ send_failed: number;
3389
+ /**
3390
+ * Sending
3391
+ */
3392
+ sending: number;
3393
+ /**
3394
+ * Sent
3395
+ */
3396
+ sent: number;
3397
+ /**
3398
+ * Skipped
3399
+ */
3400
+ skipped: number;
3401
+ /**
3402
+ * Total
3403
+ */
3404
+ total: number;
3405
+ };
3406
+ /**
3407
+ * EmailSendResponse
3408
+ */
3409
+ export type EmailSendResponse = {
3410
+ /**
3411
+ * Batch Id
3412
+ */
3413
+ batch_id: string;
3414
+ counts: EmailSendCounts;
3415
+ /**
3416
+ * Created At
3417
+ */
3418
+ created_at: string;
3419
+ /**
3420
+ * Failure Reason
3421
+ */
3422
+ failure_reason: string | null;
3423
+ /**
3424
+ * Finished At
3425
+ */
3426
+ finished_at: string | null;
3427
+ /**
3428
+ * From Email
3429
+ */
3430
+ from_email: string;
3431
+ /**
3432
+ * From Name
3433
+ */
3434
+ from_name: string | null;
3435
+ /**
3436
+ * Id
3437
+ */
3438
+ id: string;
3439
+ /**
3440
+ * Next Send At
3441
+ */
3442
+ next_send_at: string | null;
3443
+ /**
3444
+ * Reply To
3445
+ */
3446
+ reply_to: string | null;
3447
+ /**
3448
+ * Send Attempts
3449
+ */
3450
+ send_attempts: number;
3451
+ /**
3452
+ * Send Daily Cap
3453
+ */
3454
+ send_daily_cap: number | null;
3455
+ /**
3456
+ * Send Gap Seconds
3457
+ */
3458
+ send_gap_seconds: number;
3459
+ /**
3460
+ * Send Retry After Minutes
3461
+ */
3462
+ send_retry_after_minutes: number;
3463
+ /**
3464
+ * Start At
3465
+ */
3466
+ start_at: string | null;
3467
+ /**
3468
+ * Started At
3469
+ */
3470
+ started_at: string | null;
3471
+ /**
3472
+ * Status
3473
+ */
3474
+ status: 'scheduled' | 'sending' | 'paused' | 'sent' | 'canceled' | 'failed';
3475
+ /**
3476
+ * Timezone
3477
+ */
3478
+ timezone: string;
3479
+ window: TimeWindow | null;
3480
+ };
3245
3481
  /**
3246
3482
  * EndCallConfig
3247
3483
  *
@@ -6194,6 +6430,27 @@ export type PageEmailRecipientResponse = {
6194
6430
  */
6195
6431
  offset: number;
6196
6432
  };
6433
+ /**
6434
+ * Page[EmailSendResponse]
6435
+ */
6436
+ export type PageEmailSendResponse = {
6437
+ /**
6438
+ * Has More
6439
+ */
6440
+ has_more: boolean;
6441
+ /**
6442
+ * Items
6443
+ */
6444
+ items: Array<EmailSendResponse>;
6445
+ /**
6446
+ * Limit
6447
+ */
6448
+ limit: number;
6449
+ /**
6450
+ * Offset
6451
+ */
6452
+ offset: number;
6453
+ };
6197
6454
  /**
6198
6455
  * Page[IntegrationCatalogItem]
6199
6456
  */
@@ -6504,7 +6761,7 @@ export type PatchCallBatchRequest = {
6504
6761
  * Agent Id
6505
6762
  */
6506
6763
  agent_id?: string | null;
6507
- calling_window?: CallingWindow | null;
6764
+ calling_window?: TimeWindow | null;
6508
6765
  /**
6509
6766
  * From Phone Number Id
6510
6767
  */
@@ -6560,38 +6817,46 @@ export type PatchConversationRequest = {
6560
6817
  *
6561
6818
  * Policy edits.
6562
6819
  *
6563
- * ``calling_window`` and ``start_at`` accept an explicit ``null`` to *clear*
6564
- * them — "draft at any hour", "start on the next pass" which is why the
6565
- * service reads ``model_fields_set`` rather than treating absent and null the
6566
- * same way. Every other field keeps the usual PATCH rule: absent means
6567
- * unchanged.
6820
+ * ``window``, ``start_at`` and ``send_daily_cap`` accept an explicit ``null``
6821
+ * to *clear* them — "send at any hour", "start on the next pass", "no daily
6822
+ * ceiling" — which is why the service reads ``model_fields_set`` rather than
6823
+ * treating absent and null the same way. Every other field keeps the usual
6824
+ * PATCH rule: absent means unchanged.
6568
6825
  *
6569
6826
  * Pacing stays editable at any time; identity does not once anything has been
6570
- * sent (see ``service.patch_batch``).
6827
+ * sent (see ``service.patch_batch``). The sending group here is the DEFAULT for
6828
+ * the next send — a run already created carries its own copy.
6571
6829
  */
6572
6830
  export type PatchEmailBatchRequest = {
6573
6831
  /**
6574
6832
  * Body Format
6575
6833
  */
6576
6834
  body_format?: 'text' | 'html' | null;
6577
- calling_window?: CallingWindow | null;
6578
- field_map?: FieldMap | null;
6579
6835
  /**
6580
- * From Email
6836
+ * Draft Attempts
6581
6837
  */
6582
- from_email?: string | null;
6838
+ draft_attempts?: number | null;
6583
6839
  /**
6584
- * From Name
6840
+ * Draft Concurrency
6585
6841
  */
6586
- from_name?: string | null;
6842
+ draft_concurrency?: number | null;
6587
6843
  /**
6588
- * Max Attempts
6844
+ * Draft Gap Seconds
6589
6845
  */
6590
- max_attempts?: number | null;
6846
+ draft_gap_seconds?: number | null;
6591
6847
  /**
6592
- * Max Concurrency
6848
+ * Draft Retry After Minutes
6593
6849
  */
6594
- max_concurrency?: number | null;
6850
+ draft_retry_after_minutes?: number | null;
6851
+ field_map?: FieldMap | null;
6852
+ /**
6853
+ * From Email
6854
+ */
6855
+ from_email?: string | null;
6856
+ /**
6857
+ * From Name
6858
+ */
6859
+ from_name?: string | null;
6595
6860
  /**
6596
6861
  * Name
6597
6862
  */
@@ -6601,13 +6866,21 @@ export type PatchEmailBatchRequest = {
6601
6866
  */
6602
6867
  reply_to?: string | null;
6603
6868
  /**
6604
- * Retry After Minutes
6869
+ * Send Attempts
6605
6870
  */
6606
- retry_after_minutes?: number | null;
6871
+ send_attempts?: number | null;
6872
+ /**
6873
+ * Send Daily Cap
6874
+ */
6875
+ send_daily_cap?: number | null;
6876
+ /**
6877
+ * Send Gap Seconds
6878
+ */
6879
+ send_gap_seconds?: number | null;
6607
6880
  /**
6608
- * Send Sleep Seconds
6881
+ * Send Retry After Minutes
6609
6882
  */
6610
- send_sleep_seconds?: number | null;
6883
+ send_retry_after_minutes?: number | null;
6611
6884
  /**
6612
6885
  * Start At
6613
6886
  */
@@ -6616,6 +6889,7 @@ export type PatchEmailBatchRequest = {
6616
6889
  * Timezone
6617
6890
  */
6618
6891
  timezone?: string | null;
6892
+ window?: TimeWindow | null;
6619
6893
  };
6620
6894
  /**
6621
6895
  * PatchEmailRecipientRequest
@@ -6635,6 +6909,44 @@ export type PatchEmailRecipientRequest = {
6635
6909
  [key: string]: string;
6636
6910
  };
6637
6911
  };
6912
+ /**
6913
+ * PatchEmailSendRequest
6914
+ *
6915
+ * Re-steer one send: its pacing, its hours, its ceiling, its start time.
6916
+ *
6917
+ * It never edits the sender, and it never edits the row set in either
6918
+ * direction. To change what a scheduled send contains, cancel it — every unsent
6919
+ * row comes back as a draft — and create another. A second way to move a row
6920
+ * out of a send would be a second state machine to keep correct for something
6921
+ * cancel already covers.
6922
+ */
6923
+ export type PatchEmailSendRequest = {
6924
+ /**
6925
+ * Send Attempts
6926
+ */
6927
+ send_attempts?: number | null;
6928
+ /**
6929
+ * Send Daily Cap
6930
+ */
6931
+ send_daily_cap?: number | null;
6932
+ /**
6933
+ * Send Gap Seconds
6934
+ */
6935
+ send_gap_seconds?: number | null;
6936
+ /**
6937
+ * Send Retry After Minutes
6938
+ */
6939
+ send_retry_after_minutes?: number | null;
6940
+ /**
6941
+ * Start At
6942
+ */
6943
+ start_at?: string | null;
6944
+ /**
6945
+ * Timezone
6946
+ */
6947
+ timezone?: string | null;
6948
+ window?: TimeWindow | null;
6949
+ };
6638
6950
  /**
6639
6951
  * PatchIntegrationRequest
6640
6952
  */
@@ -7293,6 +7605,27 @@ export type PublishResponse = {
7293
7605
  */
7294
7606
  warnings?: Array<string>;
7295
7607
  };
7608
+ /**
7609
+ * PublishTaskResponse
7610
+ */
7611
+ export type PublishTaskResponse = {
7612
+ /**
7613
+ * Published At
7614
+ */
7615
+ published_at: string;
7616
+ /**
7617
+ * Task Id
7618
+ */
7619
+ task_id: string;
7620
+ /**
7621
+ * Version
7622
+ */
7623
+ version: number;
7624
+ /**
7625
+ * Warnings
7626
+ */
7627
+ warnings?: Array<string>;
7628
+ };
7296
7629
  /**
7297
7630
  * PublishToolRequest
7298
7631
  */
@@ -7627,20 +7960,12 @@ export type RealtimeUsageResponse = {
7627
7960
  * RecipientActionResponse
7628
7961
  *
7629
7962
  * Skip-and-report, never a partial silent accept.
7630
- *
7631
- * ``job_id`` is set by `send` alone, so a client can tie a batch of rows that
7632
- * are visibly stuck to the `scheduled_jobs` row the scheduler is complaining
7633
- * about.
7634
7963
  */
7635
7964
  export type RecipientActionResponse = {
7636
7965
  /**
7637
7966
  * Affected
7638
7967
  */
7639
7968
  affected: number;
7640
- /**
7641
- * Job Id
7642
- */
7643
- job_id: string | null;
7644
7969
  /**
7645
7970
  * Rejected
7646
7971
  */
@@ -7752,6 +8077,41 @@ export type RecordingSpecOverride = {
7752
8077
  * What a reader should do about it. `available` is the only playable one.
7753
8078
  */
7754
8079
  export type RecordingState = 'none' | 'available' | 'pending' | 'expired' | 'failed' | 'not_shared' | 'consent_withdrawn' | 'deleted';
8080
+ /**
8081
+ * RedraftRequest
8082
+ *
8083
+ * Draft these rows again, from scratch.
8084
+ *
8085
+ * One verb for "write this row again", whatever put it in the state it is in —
8086
+ * a failed attempt, a prompt that has since improved, a draft nobody liked.
8087
+ * Four selections, and they differ in what they REFUSE as much as in what they
8088
+ * move, because a redraft discards a draft the tenant has already paid for:
8089
+ *
8090
+ * - ``all`` — every row in the batch. Rows already sent or queued come back in
8091
+ * ``rejected``, by name, so a bulk press cannot quietly do less than it said.
8092
+ * - ``failed`` — rows whose drafting failed.
8093
+ * - ``not_sent`` — every row that has not left and is not about to, with
8094
+ * nothing rejected.
8095
+ * - ``stale_version`` — rows drafted by a task version older than the one
8096
+ * published now. The selection that makes "watch the output, improve the
8097
+ * task, publish, redraft the rest" a workflow rather than a wish.
8098
+ */
8099
+ export type RedraftRequest = {
8100
+ /**
8101
+ * Clear Overrides
8102
+ *
8103
+ * Also discard the cells a person edited by hand. Off by default.
8104
+ */
8105
+ clear_overrides?: boolean;
8106
+ /**
8107
+ * Recipient Ids
8108
+ */
8109
+ recipient_ids?: Array<string> | null;
8110
+ /**
8111
+ * Selection
8112
+ */
8113
+ selection?: 'all' | 'failed' | 'not_sent' | 'stale_version' | null;
8114
+ };
7755
8115
  /**
7756
8116
  * RejectedRecipient
7757
8117
  */
@@ -7843,6 +8203,12 @@ export type RunTaskRequest = {
7843
8203
  vars?: {
7844
8204
  [key: string]: string;
7845
8205
  };
8206
+ /**
8207
+ * Version
8208
+ *
8209
+ * Which definition to run. Omitted runs the published version. A number runs that frozen version. 'draft' runs the unpublished config, validated and tool-pinned at request time and refused with the publish errors if it does not hold together.
8210
+ */
8211
+ version?: number | 'draft' | null;
7846
8212
  };
7847
8213
  /**
7848
8214
  * RunToolRequest
@@ -8207,11 +8573,11 @@ export type SecretResponse = {
8207
8573
  /**
8208
8574
  * SelectRecipientsRequest
8209
8575
  *
8210
- * What `skip`, `restore` and `retry` accept — either shape.
8576
+ * What `skip` and `restore` accept — either shape.
8211
8577
  *
8212
- * These keep their bulk shorthand because the rule is about irreversibility,
8213
- * not about bulk: skipping four thousand rows is undone by restoring them,
8214
- * and making curation tedious pushes an operator toward not curating.
8578
+ * Both are reversible, which is why both take a bulk shorthand: skipping four
8579
+ * thousand rows is undone by restoring them, and making curation tedious pushes
8580
+ * an operator toward not curating.
8215
8581
  */
8216
8582
  export type SelectRecipientsRequest = {
8217
8583
  /**
@@ -8221,37 +8587,10 @@ export type SelectRecipientsRequest = {
8221
8587
  /**
8222
8588
  * Selection
8223
8589
  *
8224
- * Every row this verb can act on: `draft` for skip, `skipped` for restore, `draft_failed` for retry.
8590
+ * Every row this verb can act on: `draft` for skip, `skipped` for restore.
8225
8591
  */
8226
8592
  selection?: 'all_eligible' | null;
8227
8593
  };
8228
- /**
8229
- * SendEmailBatchRequest
8230
- *
8231
- * The ONLY shape `send` accepts. 1..50 ids, named.
8232
- *
8233
- * There is deliberately no `selection` shorthand here — see
8234
- * ``MAX_SEND_PER_PRESS``. The three sender fields apply to THIS press alone;
8235
- * each omitted one falls back to the batch's, and none of them writes back.
8236
- */
8237
- export type SendEmailBatchRequest = {
8238
- /**
8239
- * From Email
8240
- */
8241
- from_email?: string | null;
8242
- /**
8243
- * From Name
8244
- */
8245
- from_name?: string | null;
8246
- /**
8247
- * Recipient Ids
8248
- */
8249
- recipient_ids: Array<string>;
8250
- /**
8251
- * Reply To
8252
- */
8253
- reply_to?: string | null;
8254
- };
8255
8594
  /**
8256
8595
  * SendMessageRequest
8257
8596
  */
@@ -8876,7 +9215,7 @@ export type TTSUsageResponse = {
8876
9215
  /**
8877
9216
  * TaskConfig
8878
9217
  *
8879
- * The task definition. One saved config no versions, no publish step.
9218
+ * The task definition the draft you edit, and what publishing freezes.
8880
9219
  */
8881
9220
  export type TaskConfig = {
8882
9221
  llm?: LLMSpec;
@@ -8901,9 +9240,9 @@ export type TaskConfig = {
8901
9240
  /**
8902
9241
  * Output
8903
9242
  *
8904
- * The typed value this task produces. The model is given a `submit_result` tool built from these fields and told that calling it is how the run finishes.
9243
+ * The typed value this task produces. The model is given a `submit_result` tool built from these fields and told that calling it is how the run finishes. Publishing needs at least one; a draft may be empty.
8905
9244
  */
8906
- output: Array<TaskOutputField>;
9245
+ output?: Array<TaskOutputField>;
8907
9246
  /**
8908
9247
  * Prompt
8909
9248
  *
@@ -8925,7 +9264,7 @@ export type TaskConfig = {
8925
9264
  /**
8926
9265
  * Tools
8927
9266
  *
8928
- * Tools the model may call during the run. A task never pins a tool version - republishing a tool changes every task that uses it, immediately.
9267
+ * Tools the model may call during the run. Publishing pins each one to the tool version live at that moment, so republishing a tool does not change this task until the task is published again.
8929
9268
  */
8930
9269
  tools?: Array<ToolSelection>;
8931
9270
  /**
@@ -8980,10 +9319,22 @@ export type TaskResponse = {
8980
9319
  */
8981
9320
  id: string;
8982
9321
  last_run: TaskRunSummary | null;
9322
+ /**
9323
+ * Published At
9324
+ */
9325
+ published_at: string | null;
9326
+ /**
9327
+ * Published Version
9328
+ */
9329
+ published_version: number | null;
8983
9330
  /**
8984
9331
  * Updated At
8985
9332
  */
8986
9333
  updated_at: string;
9334
+ /**
9335
+ * Versions
9336
+ */
9337
+ versions: Array<TaskVersionResponse> | null;
8987
9338
  };
8988
9339
  /**
8989
9340
  * TaskRunError
@@ -8996,7 +9347,7 @@ export type TaskRunError = {
8996
9347
  /**
8997
9348
  * Type
8998
9349
  */
8999
- type: 'missing_vars' | 'no_output' | 'step_limit' | 'timeout' | 'provider_error' | 'configuration' | 'platform';
9350
+ type: 'missing_vars' | 'no_output' | 'step_limit' | 'timeout' | 'provider_error' | 'configuration' | 'platform' | 'canceled';
9000
9351
  };
9001
9352
  /**
9002
9353
  * TaskRunResponse
@@ -9057,6 +9408,10 @@ export type TaskRunResponse = {
9057
9408
  * Task Name
9058
9409
  */
9059
9410
  task_name: string | null;
9411
+ /**
9412
+ * Task Version
9413
+ */
9414
+ task_version: number | null;
9060
9415
  /**
9061
9416
  * Trace
9062
9417
  */
@@ -9105,22 +9460,48 @@ export type TaskRunSummary = {
9105
9460
  status: 'running' | 'completed' | 'failed';
9106
9461
  };
9107
9462
  /**
9108
- * TaskWriteResponse
9463
+ * TaskVersionDetailResponse
9109
9464
  *
9110
- * What `create` and `update` return.
9465
+ * One frozen version, unpacked: the definition that ran, beside its metadata.
9466
+ *
9467
+ * `config` comes back through `TaskConfig` rather than as raw JSONB, so a
9468
+ * version and the draft are normalized by the same validator and a diff of the
9469
+ * two cannot report a difference a default invented.
9111
9470
  *
9112
- * `warnings` is the half of validation that must not become a 400 — a prompt
9113
- * that never mentions `submit_result`, a credential built out of `{{args.…}}`.
9114
- * There is no publish screen to show them on, so they come back beside the
9115
- * saved task; dropping them would lose the one signal that catches a task which
9116
- * saves cleanly and then fails every run.
9471
+ * It is the whole definition: the tool versions this publish pinned live in
9472
+ * `config.tools`, and their definitions in `tool_versions`.
9117
9473
  */
9118
- export type TaskWriteResponse = {
9119
- task: TaskResponse;
9474
+ export type TaskVersionDetailResponse = {
9475
+ config: TaskConfig;
9120
9476
  /**
9121
- * Warnings
9477
+ * Published At
9122
9478
  */
9123
- warnings: Array<string>;
9479
+ published_at: string;
9480
+ /**
9481
+ * Published By
9482
+ */
9483
+ published_by?: string | null;
9484
+ /**
9485
+ * Version
9486
+ */
9487
+ version: number;
9488
+ };
9489
+ /**
9490
+ * TaskVersionResponse
9491
+ */
9492
+ export type TaskVersionResponse = {
9493
+ /**
9494
+ * Published At
9495
+ */
9496
+ published_at: string;
9497
+ /**
9498
+ * Published By
9499
+ */
9500
+ published_by?: string | null;
9501
+ /**
9502
+ * Version
9503
+ */
9504
+ version: number;
9124
9505
  };
9125
9506
  /**
9126
9507
  * TelephonyAccountResponse
@@ -9393,6 +9774,38 @@ export type TextMessageResponse = {
9393
9774
  conversation_id: string;
9394
9775
  item: ConversationItemResponse;
9395
9776
  };
9777
+ /**
9778
+ * TimeWindow
9779
+ *
9780
+ * The hours a list may run in, on the list's own clock.
9781
+ *
9782
+ * Shared rather than duplicated, for the same reason ``window_state`` is: a
9783
+ * call batch and an email send run store the same three values under the same
9784
+ * names and must not each get their own copy of the rules. The field that
9785
+ * carries one is named for what it gates — ``calling_window`` on a campaign,
9786
+ * ``window`` on an email batch and its runs.
9787
+ *
9788
+ * A window that crosses midnight (``21:00``-``06:00``) is valid and means
9789
+ * exactly what an evening consumer-calling window means: the day check applies
9790
+ * to the *start* side, so ``21:00``-``06:00`` on ``days: [5]`` runs Friday
9791
+ * 21:00 through Saturday 06:00.
9792
+ */
9793
+ export type TimeWindow = {
9794
+ /**
9795
+ * Days
9796
+ *
9797
+ * ISO weekdays the window opens on, 1 = Monday.
9798
+ */
9799
+ days?: Array<number>;
9800
+ /**
9801
+ * End
9802
+ */
9803
+ end: string;
9804
+ /**
9805
+ * Start
9806
+ */
9807
+ start: string;
9808
+ };
9396
9809
  /**
9397
9810
  * TocResultResponse
9398
9811
  */
@@ -13254,8 +13667,8 @@ export type EmailBatchesRecipientsUpdateResults = {
13254
13667
  200: EmailRecipientResponse;
13255
13668
  };
13256
13669
  export type EmailBatchesRecipientsUpdateResult = EmailBatchesRecipientsUpdateResults[keyof EmailBatchesRecipientsUpdateResults];
13257
- export type EmailBatchesRecipientsRestoreData = {
13258
- body: SelectRecipientsRequest;
13670
+ export type EmailBatchesRecipientsRedraftData = {
13671
+ body: RedraftRequest;
13259
13672
  path: {
13260
13673
  /**
13261
13674
  * Batch Id
@@ -13263,9 +13676,9 @@ export type EmailBatchesRecipientsRestoreData = {
13263
13676
  batch_id: string;
13264
13677
  };
13265
13678
  query?: never;
13266
- url: '/v1/email/batches/{batch_id}/restore';
13679
+ url: '/v1/email/batches/{batch_id}/redraft';
13267
13680
  };
13268
- export type EmailBatchesRecipientsRestoreErrors = {
13681
+ export type EmailBatchesRecipientsRedraftErrors = {
13269
13682
  /**
13270
13683
  * Well-formed, but rejected by a rule; `detail.errors` lists each problem.
13271
13684
  */
@@ -13295,16 +13708,16 @@ export type EmailBatchesRecipientsRestoreErrors = {
13295
13708
  */
13296
13709
  default: ErrorResponse;
13297
13710
  };
13298
- export type EmailBatchesRecipientsRestoreError = EmailBatchesRecipientsRestoreErrors[keyof EmailBatchesRecipientsRestoreErrors];
13299
- export type EmailBatchesRecipientsRestoreResults = {
13711
+ export type EmailBatchesRecipientsRedraftError = EmailBatchesRecipientsRedraftErrors[keyof EmailBatchesRecipientsRedraftErrors];
13712
+ export type EmailBatchesRecipientsRedraftResults = {
13300
13713
  /**
13301
13714
  * Successful Response
13302
13715
  */
13303
13716
  200: RecipientActionResponse;
13304
13717
  };
13305
- export type EmailBatchesRecipientsRestoreResult = EmailBatchesRecipientsRestoreResults[keyof EmailBatchesRecipientsRestoreResults];
13306
- export type EmailBatchesResumeData = {
13307
- body?: never;
13718
+ export type EmailBatchesRecipientsRedraftResult = EmailBatchesRecipientsRedraftResults[keyof EmailBatchesRecipientsRedraftResults];
13719
+ export type EmailBatchesRecipientsRestoreData = {
13720
+ body: SelectRecipientsRequest;
13308
13721
  path: {
13309
13722
  /**
13310
13723
  * Batch Id
@@ -13312,9 +13725,9 @@ export type EmailBatchesResumeData = {
13312
13725
  batch_id: string;
13313
13726
  };
13314
13727
  query?: never;
13315
- url: '/v1/email/batches/{batch_id}/resume';
13728
+ url: '/v1/email/batches/{batch_id}/restore';
13316
13729
  };
13317
- export type EmailBatchesResumeErrors = {
13730
+ export type EmailBatchesRecipientsRestoreErrors = {
13318
13731
  /**
13319
13732
  * Well-formed, but rejected by a rule; `detail.errors` lists each problem.
13320
13733
  */
@@ -13344,16 +13757,16 @@ export type EmailBatchesResumeErrors = {
13344
13757
  */
13345
13758
  default: ErrorResponse;
13346
13759
  };
13347
- export type EmailBatchesResumeError = EmailBatchesResumeErrors[keyof EmailBatchesResumeErrors];
13348
- export type EmailBatchesResumeResults = {
13760
+ export type EmailBatchesRecipientsRestoreError = EmailBatchesRecipientsRestoreErrors[keyof EmailBatchesRecipientsRestoreErrors];
13761
+ export type EmailBatchesRecipientsRestoreResults = {
13349
13762
  /**
13350
13763
  * Successful Response
13351
13764
  */
13352
- 200: EmailBatchResponse;
13765
+ 200: RecipientActionResponse;
13353
13766
  };
13354
- export type EmailBatchesResumeResult = EmailBatchesResumeResults[keyof EmailBatchesResumeResults];
13355
- export type EmailBatchesRecipientsRetryData = {
13356
- body: SelectRecipientsRequest;
13767
+ export type EmailBatchesRecipientsRestoreResult = EmailBatchesRecipientsRestoreResults[keyof EmailBatchesRecipientsRestoreResults];
13768
+ export type EmailBatchesResumeData = {
13769
+ body?: never;
13357
13770
  path: {
13358
13771
  /**
13359
13772
  * Batch Id
@@ -13361,9 +13774,9 @@ export type EmailBatchesRecipientsRetryData = {
13361
13774
  batch_id: string;
13362
13775
  };
13363
13776
  query?: never;
13364
- url: '/v1/email/batches/{batch_id}/retry';
13777
+ url: '/v1/email/batches/{batch_id}/resume';
13365
13778
  };
13366
- export type EmailBatchesRecipientsRetryErrors = {
13779
+ export type EmailBatchesResumeErrors = {
13367
13780
  /**
13368
13781
  * Well-formed, but rejected by a rule; `detail.errors` lists each problem.
13369
13782
  */
@@ -13393,46 +13806,43 @@ export type EmailBatchesRecipientsRetryErrors = {
13393
13806
  */
13394
13807
  default: ErrorResponse;
13395
13808
  };
13396
- export type EmailBatchesRecipientsRetryError = EmailBatchesRecipientsRetryErrors[keyof EmailBatchesRecipientsRetryErrors];
13397
- export type EmailBatchesRecipientsRetryResults = {
13809
+ export type EmailBatchesResumeError = EmailBatchesResumeErrors[keyof EmailBatchesResumeErrors];
13810
+ export type EmailBatchesResumeResults = {
13398
13811
  /**
13399
13812
  * Successful Response
13400
13813
  */
13401
- 200: RecipientActionResponse;
13814
+ 200: EmailBatchResponse;
13402
13815
  };
13403
- export type EmailBatchesRecipientsRetryResult = EmailBatchesRecipientsRetryResults[keyof EmailBatchesRecipientsRetryResults];
13404
- export type EmailBatchesRecipientsSendData = {
13405
- body: SendEmailBatchRequest;
13816
+ export type EmailBatchesResumeResult = EmailBatchesResumeResults[keyof EmailBatchesResumeResults];
13817
+ export type EmailBatchesSendsListData = {
13818
+ body?: never;
13406
13819
  path: {
13407
13820
  /**
13408
13821
  * Batch Id
13409
13822
  */
13410
13823
  batch_id: string;
13411
13824
  };
13412
- query?: never;
13413
- url: '/v1/email/batches/{batch_id}/send';
13825
+ query?: {
13826
+ /**
13827
+ * Limit
13828
+ */
13829
+ limit?: number;
13830
+ /**
13831
+ * Offset
13832
+ */
13833
+ offset?: number;
13834
+ };
13835
+ url: '/v1/email/batches/{batch_id}/sends';
13414
13836
  };
13415
- export type EmailBatchesRecipientsSendErrors = {
13416
- /**
13417
- * Well-formed, but rejected by a rule; `detail.errors` lists each problem.
13418
- */
13419
- 400: ErrorResponse;
13837
+ export type EmailBatchesSendsListErrors = {
13420
13838
  /**
13421
13839
  * Missing credential, or one that is revoked or no longer a member of this organization.
13422
13840
  */
13423
13841
  401: ErrorResponse;
13424
- /**
13425
- * Authenticated, but this organization role may not perform the operation.
13426
- */
13427
- 403: ErrorResponse;
13428
13842
  /**
13429
13843
  * No such resource in this organization.
13430
13844
  */
13431
13845
  404: ErrorResponse;
13432
- /**
13433
- * The resource's current state forbids this — a name already taken, a job already running.
13434
- */
13435
- 409: ErrorResponse;
13436
13846
  /**
13437
13847
  * The request did not match this operation's schema; `detail.errors` lists each field.
13438
13848
  */
@@ -13442,16 +13852,16 @@ export type EmailBatchesRecipientsSendErrors = {
13442
13852
  */
13443
13853
  default: ErrorResponse;
13444
13854
  };
13445
- export type EmailBatchesRecipientsSendError = EmailBatchesRecipientsSendErrors[keyof EmailBatchesRecipientsSendErrors];
13446
- export type EmailBatchesRecipientsSendResults = {
13855
+ export type EmailBatchesSendsListError = EmailBatchesSendsListErrors[keyof EmailBatchesSendsListErrors];
13856
+ export type EmailBatchesSendsListResults = {
13447
13857
  /**
13448
13858
  * Successful Response
13449
13859
  */
13450
- 200: RecipientActionResponse;
13860
+ 200: PageEmailSendResponse;
13451
13861
  };
13452
- export type EmailBatchesRecipientsSendResult = EmailBatchesRecipientsSendResults[keyof EmailBatchesRecipientsSendResults];
13453
- export type EmailBatchesRecipientsSkipData = {
13454
- body: SelectRecipientsRequest;
13862
+ export type EmailBatchesSendsListResult = EmailBatchesSendsListResults[keyof EmailBatchesSendsListResults];
13863
+ export type EmailBatchesSendsCreateData = {
13864
+ body: CreateEmailSendRequest;
13455
13865
  path: {
13456
13866
  /**
13457
13867
  * Batch Id
@@ -13459,9 +13869,9 @@ export type EmailBatchesRecipientsSkipData = {
13459
13869
  batch_id: string;
13460
13870
  };
13461
13871
  query?: never;
13462
- url: '/v1/email/batches/{batch_id}/skip';
13872
+ url: '/v1/email/batches/{batch_id}/sends';
13463
13873
  };
13464
- export type EmailBatchesRecipientsSkipErrors = {
13874
+ export type EmailBatchesSendsCreateErrors = {
13465
13875
  /**
13466
13876
  * Well-formed, but rejected by a rule; `detail.errors` lists each problem.
13467
13877
  */
@@ -13491,28 +13901,330 @@ export type EmailBatchesRecipientsSkipErrors = {
13491
13901
  */
13492
13902
  default: ErrorResponse;
13493
13903
  };
13494
- export type EmailBatchesRecipientsSkipError = EmailBatchesRecipientsSkipErrors[keyof EmailBatchesRecipientsSkipErrors];
13495
- export type EmailBatchesRecipientsSkipResults = {
13904
+ export type EmailBatchesSendsCreateError = EmailBatchesSendsCreateErrors[keyof EmailBatchesSendsCreateErrors];
13905
+ export type EmailBatchesSendsCreateResults = {
13496
13906
  /**
13497
13907
  * Successful Response
13498
13908
  */
13499
- 200: RecipientActionResponse;
13909
+ 201: CreateEmailSendResponse;
13500
13910
  };
13501
- export type EmailBatchesRecipientsSkipResult = EmailBatchesRecipientsSkipResults[keyof EmailBatchesRecipientsSkipResults];
13502
- export type EmailSendersListData = {
13911
+ export type EmailBatchesSendsCreateResult = EmailBatchesSendsCreateResults[keyof EmailBatchesSendsCreateResults];
13912
+ export type EmailBatchesSendsGetData = {
13503
13913
  body?: never;
13504
- path?: never;
13505
- query: {
13914
+ path: {
13506
13915
  /**
13507
- * Integration Id
13508
- *
13509
- * A connected Resend account.
13916
+ * Batch Id
13510
13917
  */
13511
- integration_id: string;
13918
+ batch_id: string;
13919
+ /**
13920
+ * Send Id
13921
+ */
13922
+ send_id: string;
13512
13923
  };
13513
- url: '/v1/email/senders';
13924
+ query?: never;
13925
+ url: '/v1/email/batches/{batch_id}/sends/{send_id}';
13514
13926
  };
13515
- export type EmailSendersListErrors = {
13927
+ export type EmailBatchesSendsGetErrors = {
13928
+ /**
13929
+ * Missing credential, or one that is revoked or no longer a member of this organization.
13930
+ */
13931
+ 401: ErrorResponse;
13932
+ /**
13933
+ * No such resource in this organization.
13934
+ */
13935
+ 404: ErrorResponse;
13936
+ /**
13937
+ * The request did not match this operation's schema; `detail.errors` lists each field.
13938
+ */
13939
+ 422: ErrorResponse;
13940
+ /**
13941
+ * Unexpected error. Every error this API returns carries this body.
13942
+ */
13943
+ default: ErrorResponse;
13944
+ };
13945
+ export type EmailBatchesSendsGetError = EmailBatchesSendsGetErrors[keyof EmailBatchesSendsGetErrors];
13946
+ export type EmailBatchesSendsGetResults = {
13947
+ /**
13948
+ * Successful Response
13949
+ */
13950
+ 200: EmailSendResponse;
13951
+ };
13952
+ export type EmailBatchesSendsGetResult = EmailBatchesSendsGetResults[keyof EmailBatchesSendsGetResults];
13953
+ export type EmailBatchesSendsUpdateData = {
13954
+ body: PatchEmailSendRequest;
13955
+ path: {
13956
+ /**
13957
+ * Batch Id
13958
+ */
13959
+ batch_id: string;
13960
+ /**
13961
+ * Send Id
13962
+ */
13963
+ send_id: string;
13964
+ };
13965
+ query?: never;
13966
+ url: '/v1/email/batches/{batch_id}/sends/{send_id}';
13967
+ };
13968
+ export type EmailBatchesSendsUpdateErrors = {
13969
+ /**
13970
+ * Well-formed, but rejected by a rule; `detail.errors` lists each problem.
13971
+ */
13972
+ 400: ErrorResponse;
13973
+ /**
13974
+ * Missing credential, or one that is revoked or no longer a member of this organization.
13975
+ */
13976
+ 401: ErrorResponse;
13977
+ /**
13978
+ * Authenticated, but this organization role may not perform the operation.
13979
+ */
13980
+ 403: ErrorResponse;
13981
+ /**
13982
+ * No such resource in this organization.
13983
+ */
13984
+ 404: ErrorResponse;
13985
+ /**
13986
+ * The resource's current state forbids this — a name already taken, a job already running.
13987
+ */
13988
+ 409: ErrorResponse;
13989
+ /**
13990
+ * The request did not match this operation's schema; `detail.errors` lists each field.
13991
+ */
13992
+ 422: ErrorResponse;
13993
+ /**
13994
+ * Unexpected error. Every error this API returns carries this body.
13995
+ */
13996
+ default: ErrorResponse;
13997
+ };
13998
+ export type EmailBatchesSendsUpdateError = EmailBatchesSendsUpdateErrors[keyof EmailBatchesSendsUpdateErrors];
13999
+ export type EmailBatchesSendsUpdateResults = {
14000
+ /**
14001
+ * Successful Response
14002
+ */
14003
+ 200: EmailSendResponse;
14004
+ };
14005
+ export type EmailBatchesSendsUpdateResult = EmailBatchesSendsUpdateResults[keyof EmailBatchesSendsUpdateResults];
14006
+ export type EmailBatchesSendsCancelData = {
14007
+ body?: never;
14008
+ path: {
14009
+ /**
14010
+ * Batch Id
14011
+ */
14012
+ batch_id: string;
14013
+ /**
14014
+ * Send Id
14015
+ */
14016
+ send_id: string;
14017
+ };
14018
+ query?: never;
14019
+ url: '/v1/email/batches/{batch_id}/sends/{send_id}/cancel';
14020
+ };
14021
+ export type EmailBatchesSendsCancelErrors = {
14022
+ /**
14023
+ * Well-formed, but rejected by a rule; `detail.errors` lists each problem.
14024
+ */
14025
+ 400: ErrorResponse;
14026
+ /**
14027
+ * Missing credential, or one that is revoked or no longer a member of this organization.
14028
+ */
14029
+ 401: ErrorResponse;
14030
+ /**
14031
+ * Authenticated, but this organization role may not perform the operation.
14032
+ */
14033
+ 403: ErrorResponse;
14034
+ /**
14035
+ * No such resource in this organization.
14036
+ */
14037
+ 404: ErrorResponse;
14038
+ /**
14039
+ * The resource's current state forbids this — a name already taken, a job already running.
14040
+ */
14041
+ 409: ErrorResponse;
14042
+ /**
14043
+ * The request did not match this operation's schema; `detail.errors` lists each field.
14044
+ */
14045
+ 422: ErrorResponse;
14046
+ /**
14047
+ * Unexpected error. Every error this API returns carries this body.
14048
+ */
14049
+ default: ErrorResponse;
14050
+ };
14051
+ export type EmailBatchesSendsCancelError = EmailBatchesSendsCancelErrors[keyof EmailBatchesSendsCancelErrors];
14052
+ export type EmailBatchesSendsCancelResults = {
14053
+ /**
14054
+ * Successful Response
14055
+ */
14056
+ 200: EmailSendResponse;
14057
+ };
14058
+ export type EmailBatchesSendsCancelResult = EmailBatchesSendsCancelResults[keyof EmailBatchesSendsCancelResults];
14059
+ export type EmailBatchesSendsPauseData = {
14060
+ body?: never;
14061
+ path: {
14062
+ /**
14063
+ * Batch Id
14064
+ */
14065
+ batch_id: string;
14066
+ /**
14067
+ * Send Id
14068
+ */
14069
+ send_id: string;
14070
+ };
14071
+ query?: never;
14072
+ url: '/v1/email/batches/{batch_id}/sends/{send_id}/pause';
14073
+ };
14074
+ export type EmailBatchesSendsPauseErrors = {
14075
+ /**
14076
+ * Well-formed, but rejected by a rule; `detail.errors` lists each problem.
14077
+ */
14078
+ 400: ErrorResponse;
14079
+ /**
14080
+ * Missing credential, or one that is revoked or no longer a member of this organization.
14081
+ */
14082
+ 401: ErrorResponse;
14083
+ /**
14084
+ * Authenticated, but this organization role may not perform the operation.
14085
+ */
14086
+ 403: ErrorResponse;
14087
+ /**
14088
+ * No such resource in this organization.
14089
+ */
14090
+ 404: ErrorResponse;
14091
+ /**
14092
+ * The resource's current state forbids this — a name already taken, a job already running.
14093
+ */
14094
+ 409: ErrorResponse;
14095
+ /**
14096
+ * The request did not match this operation's schema; `detail.errors` lists each field.
14097
+ */
14098
+ 422: ErrorResponse;
14099
+ /**
14100
+ * Unexpected error. Every error this API returns carries this body.
14101
+ */
14102
+ default: ErrorResponse;
14103
+ };
14104
+ export type EmailBatchesSendsPauseError = EmailBatchesSendsPauseErrors[keyof EmailBatchesSendsPauseErrors];
14105
+ export type EmailBatchesSendsPauseResults = {
14106
+ /**
14107
+ * Successful Response
14108
+ */
14109
+ 200: EmailSendResponse;
14110
+ };
14111
+ export type EmailBatchesSendsPauseResult = EmailBatchesSendsPauseResults[keyof EmailBatchesSendsPauseResults];
14112
+ export type EmailBatchesSendsResumeData = {
14113
+ body?: never;
14114
+ path: {
14115
+ /**
14116
+ * Batch Id
14117
+ */
14118
+ batch_id: string;
14119
+ /**
14120
+ * Send Id
14121
+ */
14122
+ send_id: string;
14123
+ };
14124
+ query?: never;
14125
+ url: '/v1/email/batches/{batch_id}/sends/{send_id}/resume';
14126
+ };
14127
+ export type EmailBatchesSendsResumeErrors = {
14128
+ /**
14129
+ * Well-formed, but rejected by a rule; `detail.errors` lists each problem.
14130
+ */
14131
+ 400: ErrorResponse;
14132
+ /**
14133
+ * Missing credential, or one that is revoked or no longer a member of this organization.
14134
+ */
14135
+ 401: ErrorResponse;
14136
+ /**
14137
+ * Authenticated, but this organization role may not perform the operation.
14138
+ */
14139
+ 403: ErrorResponse;
14140
+ /**
14141
+ * No such resource in this organization.
14142
+ */
14143
+ 404: ErrorResponse;
14144
+ /**
14145
+ * The resource's current state forbids this — a name already taken, a job already running.
14146
+ */
14147
+ 409: ErrorResponse;
14148
+ /**
14149
+ * The request did not match this operation's schema; `detail.errors` lists each field.
14150
+ */
14151
+ 422: ErrorResponse;
14152
+ /**
14153
+ * Unexpected error. Every error this API returns carries this body.
14154
+ */
14155
+ default: ErrorResponse;
14156
+ };
14157
+ export type EmailBatchesSendsResumeError = EmailBatchesSendsResumeErrors[keyof EmailBatchesSendsResumeErrors];
14158
+ export type EmailBatchesSendsResumeResults = {
14159
+ /**
14160
+ * Successful Response
14161
+ */
14162
+ 200: EmailSendResponse;
14163
+ };
14164
+ export type EmailBatchesSendsResumeResult = EmailBatchesSendsResumeResults[keyof EmailBatchesSendsResumeResults];
14165
+ export type EmailBatchesRecipientsSkipData = {
14166
+ body: SelectRecipientsRequest;
14167
+ path: {
14168
+ /**
14169
+ * Batch Id
14170
+ */
14171
+ batch_id: string;
14172
+ };
14173
+ query?: never;
14174
+ url: '/v1/email/batches/{batch_id}/skip';
14175
+ };
14176
+ export type EmailBatchesRecipientsSkipErrors = {
14177
+ /**
14178
+ * Well-formed, but rejected by a rule; `detail.errors` lists each problem.
14179
+ */
14180
+ 400: ErrorResponse;
14181
+ /**
14182
+ * Missing credential, or one that is revoked or no longer a member of this organization.
14183
+ */
14184
+ 401: ErrorResponse;
14185
+ /**
14186
+ * Authenticated, but this organization role may not perform the operation.
14187
+ */
14188
+ 403: ErrorResponse;
14189
+ /**
14190
+ * No such resource in this organization.
14191
+ */
14192
+ 404: ErrorResponse;
14193
+ /**
14194
+ * The resource's current state forbids this — a name already taken, a job already running.
14195
+ */
14196
+ 409: ErrorResponse;
14197
+ /**
14198
+ * The request did not match this operation's schema; `detail.errors` lists each field.
14199
+ */
14200
+ 422: ErrorResponse;
14201
+ /**
14202
+ * Unexpected error. Every error this API returns carries this body.
14203
+ */
14204
+ default: ErrorResponse;
14205
+ };
14206
+ export type EmailBatchesRecipientsSkipError = EmailBatchesRecipientsSkipErrors[keyof EmailBatchesRecipientsSkipErrors];
14207
+ export type EmailBatchesRecipientsSkipResults = {
14208
+ /**
14209
+ * Successful Response
14210
+ */
14211
+ 200: RecipientActionResponse;
14212
+ };
14213
+ export type EmailBatchesRecipientsSkipResult = EmailBatchesRecipientsSkipResults[keyof EmailBatchesRecipientsSkipResults];
14214
+ export type EmailSendersListData = {
14215
+ body?: never;
14216
+ path?: never;
14217
+ query: {
14218
+ /**
14219
+ * Integration Id
14220
+ *
14221
+ * A connected Resend account.
14222
+ */
14223
+ integration_id: string;
14224
+ };
14225
+ url: '/v1/email/senders';
14226
+ };
14227
+ export type EmailSendersListErrors = {
13516
14228
  /**
13517
14229
  * Missing credential, or one that is revoked or no longer a member of this organization.
13518
14230
  */
@@ -14880,7 +15592,7 @@ export type TasksCreateResults = {
14880
15592
  /**
14881
15593
  * Successful Response
14882
15594
  */
14883
- 201: TaskWriteResponse;
15595
+ 201: TaskResponse;
14884
15596
  };
14885
15597
  export type TasksCreateResult = TasksCreateResults[keyof TasksCreateResults];
14886
15598
  export type TasksDeleteData = {
@@ -15015,9 +15727,58 @@ export type TasksUpdateResults = {
15015
15727
  /**
15016
15728
  * Successful Response
15017
15729
  */
15018
- 200: TaskWriteResponse;
15730
+ 200: TaskResponse;
15019
15731
  };
15020
15732
  export type TasksUpdateResult = TasksUpdateResults[keyof TasksUpdateResults];
15733
+ export type TasksPublishData = {
15734
+ body?: never;
15735
+ path: {
15736
+ /**
15737
+ * Task Id
15738
+ */
15739
+ task_id: string;
15740
+ };
15741
+ query?: never;
15742
+ url: '/v1/tasks/{task_id}/publish';
15743
+ };
15744
+ export type TasksPublishErrors = {
15745
+ /**
15746
+ * Well-formed, but rejected by a rule; `detail.errors` lists each problem.
15747
+ */
15748
+ 400: ErrorResponse;
15749
+ /**
15750
+ * Missing credential, or one that is revoked or no longer a member of this organization.
15751
+ */
15752
+ 401: ErrorResponse;
15753
+ /**
15754
+ * Authenticated, but this organization role may not perform the operation.
15755
+ */
15756
+ 403: ErrorResponse;
15757
+ /**
15758
+ * No such resource in this organization.
15759
+ */
15760
+ 404: ErrorResponse;
15761
+ /**
15762
+ * The resource's current state forbids this — a name already taken, a job already running.
15763
+ */
15764
+ 409: ErrorResponse;
15765
+ /**
15766
+ * The request did not match this operation's schema; `detail.errors` lists each field.
15767
+ */
15768
+ 422: ErrorResponse;
15769
+ /**
15770
+ * Unexpected error. Every error this API returns carries this body.
15771
+ */
15772
+ default: ErrorResponse;
15773
+ };
15774
+ export type TasksPublishError = TasksPublishErrors[keyof TasksPublishErrors];
15775
+ export type TasksPublishResults = {
15776
+ /**
15777
+ * Successful Response
15778
+ */
15779
+ 200: PublishTaskResponse;
15780
+ };
15781
+ export type TasksPublishResult = TasksPublishResults[keyof TasksPublishResults];
15021
15782
  export type TasksRunsListData = {
15022
15783
  body?: never;
15023
15784
  path: {
@@ -15154,6 +15915,149 @@ export type TasksRunsGetResults = {
15154
15915
  200: TaskRunResponse;
15155
15916
  };
15156
15917
  export type TasksRunsGetResult = TasksRunsGetResults[keyof TasksRunsGetResults];
15918
+ export type TasksValidateData = {
15919
+ body?: never;
15920
+ path: {
15921
+ /**
15922
+ * Task Id
15923
+ */
15924
+ task_id: string;
15925
+ };
15926
+ query?: never;
15927
+ url: '/v1/tasks/{task_id}/validate';
15928
+ };
15929
+ export type TasksValidateErrors = {
15930
+ /**
15931
+ * Well-formed, but rejected by a rule; `detail.errors` lists each problem.
15932
+ */
15933
+ 400: ErrorResponse;
15934
+ /**
15935
+ * Missing credential, or one that is revoked or no longer a member of this organization.
15936
+ */
15937
+ 401: ErrorResponse;
15938
+ /**
15939
+ * Authenticated, but this organization role may not perform the operation.
15940
+ */
15941
+ 403: ErrorResponse;
15942
+ /**
15943
+ * No such resource in this organization.
15944
+ */
15945
+ 404: ErrorResponse;
15946
+ /**
15947
+ * The resource's current state forbids this — a name already taken, a job already running.
15948
+ */
15949
+ 409: ErrorResponse;
15950
+ /**
15951
+ * The request did not match this operation's schema; `detail.errors` lists each field.
15952
+ */
15953
+ 422: ErrorResponse;
15954
+ /**
15955
+ * Unexpected error. Every error this API returns carries this body.
15956
+ */
15957
+ default: ErrorResponse;
15958
+ };
15959
+ export type TasksValidateError = TasksValidateErrors[keyof TasksValidateErrors];
15960
+ export type TasksValidateResults = {
15961
+ /**
15962
+ * Successful Response
15963
+ */
15964
+ 200: ValidateResponse;
15965
+ };
15966
+ export type TasksValidateResult = TasksValidateResults[keyof TasksValidateResults];
15967
+ export type TasksVersionsGetData = {
15968
+ body?: never;
15969
+ path: {
15970
+ /**
15971
+ * Task Id
15972
+ */
15973
+ task_id: string;
15974
+ /**
15975
+ * Version
15976
+ */
15977
+ version: number;
15978
+ };
15979
+ query?: never;
15980
+ url: '/v1/tasks/{task_id}/versions/{version}';
15981
+ };
15982
+ export type TasksVersionsGetErrors = {
15983
+ /**
15984
+ * Missing credential, or one that is revoked or no longer a member of this organization.
15985
+ */
15986
+ 401: ErrorResponse;
15987
+ /**
15988
+ * No such resource in this organization.
15989
+ */
15990
+ 404: ErrorResponse;
15991
+ /**
15992
+ * The request did not match this operation's schema; `detail.errors` lists each field.
15993
+ */
15994
+ 422: ErrorResponse;
15995
+ /**
15996
+ * Unexpected error. Every error this API returns carries this body.
15997
+ */
15998
+ default: ErrorResponse;
15999
+ };
16000
+ export type TasksVersionsGetError = TasksVersionsGetErrors[keyof TasksVersionsGetErrors];
16001
+ export type TasksVersionsGetResults = {
16002
+ /**
16003
+ * Successful Response
16004
+ */
16005
+ 200: TaskVersionDetailResponse;
16006
+ };
16007
+ export type TasksVersionsGetResult = TasksVersionsGetResults[keyof TasksVersionsGetResults];
16008
+ export type TasksVersionsRollbackData = {
16009
+ body?: never;
16010
+ path: {
16011
+ /**
16012
+ * Task Id
16013
+ */
16014
+ task_id: string;
16015
+ /**
16016
+ * Version
16017
+ */
16018
+ version: number;
16019
+ };
16020
+ query?: never;
16021
+ url: '/v1/tasks/{task_id}/versions/{version}/rollback';
16022
+ };
16023
+ export type TasksVersionsRollbackErrors = {
16024
+ /**
16025
+ * Well-formed, but rejected by a rule; `detail.errors` lists each problem.
16026
+ */
16027
+ 400: ErrorResponse;
16028
+ /**
16029
+ * Missing credential, or one that is revoked or no longer a member of this organization.
16030
+ */
16031
+ 401: ErrorResponse;
16032
+ /**
16033
+ * Authenticated, but this organization role may not perform the operation.
16034
+ */
16035
+ 403: ErrorResponse;
16036
+ /**
16037
+ * No such resource in this organization.
16038
+ */
16039
+ 404: ErrorResponse;
16040
+ /**
16041
+ * The resource's current state forbids this — a name already taken, a job already running.
16042
+ */
16043
+ 409: ErrorResponse;
16044
+ /**
16045
+ * The request did not match this operation's schema; `detail.errors` lists each field.
16046
+ */
16047
+ 422: ErrorResponse;
16048
+ /**
16049
+ * Unexpected error. Every error this API returns carries this body.
16050
+ */
16051
+ default: ErrorResponse;
16052
+ };
16053
+ export type TasksVersionsRollbackError = TasksVersionsRollbackErrors[keyof TasksVersionsRollbackErrors];
16054
+ export type TasksVersionsRollbackResults = {
16055
+ /**
16056
+ * Successful Response
16057
+ */
16058
+ 200: TaskResponse;
16059
+ };
16060
+ export type TasksVersionsRollbackResult = TasksVersionsRollbackResults[keyof TasksVersionsRollbackResults];
15157
16061
  export type TelephonyAccountsListData = {
15158
16062
  body?: never;
15159
16063
  path?: never;