@talqing/mcp 0.3.0 → 0.3.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.
- package/SKILL.md +109 -51
- package/package.json +1 -1
- package/tools.json +160 -20
package/SKILL.md
CHANGED
|
@@ -817,15 +817,14 @@ message, draft an opening line, pull a field out of a document.
|
|
|
817
817
|
**not** read `{{system_vars.human_phone_number}}` / `.agent_phone_number` /
|
|
818
818
|
`.direction` — there is no call.
|
|
819
819
|
- **`llm`** — one model, with the same `fallback`, `reasoning_effort`,
|
|
820
|
-
`priority` and `builtin_tools` an agent's LLM has.
|
|
821
|
-
|
|
822
|
-
`
|
|
823
|
-
|
|
820
|
+
`priority` and `builtin_tools` an agent's LLM has. A provider tool runs inside
|
|
821
|
+
a step rather than as one, so it costs no steps and real seconds. There is no
|
|
822
|
+
`stt`, `tts`, `realtime`, `greeting`, `turn_handling`, `avatar`, `handoffs`,
|
|
823
|
+
`recording`, `analysis`, `kb_ids` or lifecycle hook — a task has nobody to
|
|
824
|
+
hear, nobody to greet, nothing to hand over and one turn to hook.
|
|
824
825
|
- **`tools`** / **`mcps`** — exactly an agent's, attached by id or defined
|
|
825
|
-
inline
|
|
826
|
-
|
|
827
|
-
defensible for a bounded job and would not be for a live call, which is why
|
|
828
|
-
agents pin and tasks do not.
|
|
826
|
+
inline, and pinned by publish exactly as an agent's are: republishing a tool
|
|
827
|
+
does not change a published task until that task is published again.
|
|
829
828
|
- **`vars`** — the task's **inputs**, declared exactly as an agent's variables
|
|
830
829
|
are: a `name`, a `description`, an optional `default` and `required`. A run
|
|
831
830
|
supplies values by name; one it omits falls back to the `default`, and a
|
|
@@ -835,25 +834,39 @@ message, draft an opening line, pull a field out of a document.
|
|
|
835
834
|
agent, whose key space is open.
|
|
836
835
|
- **`output`** — a flat list of the fields the model must produce, each with a
|
|
837
836
|
`name`, a `type` (`string`, `boolean`, `integer` or `number`) and a
|
|
838
|
-
`description`. At
|
|
839
|
-
task that wants to return five
|
|
840
|
-
them.
|
|
837
|
+
`description`. At most 25, and at least one **to publish** — a draft may have
|
|
838
|
+
none. No arrays and no nested objects: a task that wants to return five
|
|
839
|
+
talking points returns one string containing them.
|
|
841
840
|
- **`max_steps`** (default 25, max 50) — how many LLM → tools → LLM **rounds**
|
|
842
841
|
the run may take. A round, not a tool call: four tools in one reply cost one
|
|
843
842
|
step. This is the runaway-loop guard.
|
|
844
|
-
- **`timeout_seconds`** (default
|
|
843
|
+
- **`timeout_seconds`** (default 300, max 600) — the real time budget.
|
|
845
844
|
|
|
846
845
|
A name may not appear in both `vars` and `output`: a run's inputs and its output
|
|
847
846
|
are read side by side, so a collision would make one of the two unreachable.
|
|
848
847
|
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
848
|
+
### Draft, publish, versions
|
|
849
|
+
|
|
850
|
+
**A task has the same lifecycle an agent has**, and the same four functions.
|
|
851
|
+
`create_task` and `update_task` write the **draft**, checked only for what a
|
|
852
|
+
half-written task can be judged on — so a task saves before it has a model key,
|
|
853
|
+
a prompt or an output field, and the person can keep building. `publish_task`
|
|
854
|
+
freezes that draft as an immutable version, pins every attached tool to the
|
|
855
|
+
version live at that moment, and makes it what runs. `get_task_version` reads a
|
|
856
|
+
frozen one back and `rollback_task_version` puts one back into production,
|
|
857
|
+
replacing the draft.
|
|
858
|
+
|
|
859
|
+
`validate_task` is the publish-grade check without the publish: a workspace API
|
|
860
|
+
key for the model, at least one `output` field, the attached tools' operation
|
|
861
|
+
trees, and the email batches already drafting with this task. Run it before
|
|
862
|
+
`publish_task` — its `errors` are what a publish would refuse with, and its
|
|
863
|
+
`warnings` (a prompt reading a variable nothing declares, a task with no prompt)
|
|
864
|
+
are worth reporting but never block.
|
|
865
|
+
|
|
866
|
+
**Build order:** create the draft → write the prompt, `vars` and `output` →
|
|
867
|
+
`run_task` with `version: "draft"` to try it → fix → `validate_task` →
|
|
868
|
+
`publish_task` **when the person asks you to**. Publishing is their call, not
|
|
869
|
+
yours: it changes what every run and every live email batch does.
|
|
857
870
|
|
|
858
871
|
### The output tool
|
|
859
872
|
|
|
@@ -876,6 +889,11 @@ about what belongs there.
|
|
|
876
889
|
their secrets, the MCP servers spend their credits, and the model spends their
|
|
877
890
|
tokens. A task that books, charges or sends will do so.
|
|
878
891
|
|
|
892
|
+
It runs the published version unless `version` says otherwise. Pass
|
|
893
|
+
`version: "draft"` to try the unpublished config — that is the loop you build
|
|
894
|
+
in, and it is refused with the publish errors when the draft does not hold
|
|
895
|
+
together.
|
|
896
|
+
|
|
879
897
|
The response is the whole run — `output`, a `trace` of every tool call and
|
|
880
898
|
everything the model wrote (secrets redacted, long fields truncated and marked),
|
|
881
899
|
`steps_used` against `max_steps`, the tokens each model spent and
|
|
@@ -901,9 +919,16 @@ problem it is:
|
|
|
901
919
|
`no_output` precisely so nobody rewrites a prompt that was never the problem.
|
|
902
920
|
- `timeout` — `timeout_seconds` elapsed.
|
|
903
921
|
- `provider_error` — the model or an MCP server failed. Not yours to fix.
|
|
904
|
-
- `configuration` — yours to tell them: a missing BYOK key, a
|
|
905
|
-
|
|
922
|
+
- `configuration` — yours to tell them: a missing BYOK key, a tool version this
|
|
923
|
+
publish pinned that has since been deleted, an integration whose credential no
|
|
924
|
+
longer resolves.
|
|
906
925
|
- `platform` — ours.
|
|
926
|
+
- `canceled` — a deploy or restart stopped the run. A batch row is drafted again
|
|
927
|
+
automatically; a run started by hand is run again.
|
|
928
|
+
|
|
929
|
+
Each run records `task_version` — which published definition ran it, and null
|
|
930
|
+
for a `version: "draft"` run. That is what makes two runs either side of an edit
|
|
931
|
+
tell apart.
|
|
907
932
|
|
|
908
933
|
Task runs are **not** in the Observability charts, which are built on calls and
|
|
909
934
|
conversations. `list_task_runs` is where a task's own history lives.
|
|
@@ -1035,9 +1060,11 @@ afterwards will not forgive us:
|
|
|
1035
1060
|
opted in. This runs on *their* Resend account under *their* agreement.
|
|
1036
1061
|
- **Nothing is sent that they have not reviewed and selected.** Creating a batch
|
|
1037
1062
|
only drafts.
|
|
1038
|
-
- **Every row runs the task
|
|
1039
|
-
|
|
1040
|
-
|
|
1063
|
+
- **Every row runs the task's CURRENT PUBLISHED version**, re-read every pass, so
|
|
1064
|
+
publishing mid-batch changes every row drafted after that moment. Which version
|
|
1065
|
+
wrote which rows is on the batch as `drafted_versions`, and
|
|
1066
|
+
`redraft_email_batch_recipients` with `selection: "stale_version"` is how the
|
|
1067
|
+
older ones are rewritten.
|
|
1041
1068
|
- **Talqing reports what it sent, not what landed.** Deliveries, bounces and
|
|
1042
1069
|
spam complaints live in the Resend dashboard, and watching them there is how a
|
|
1043
1070
|
sending domain survives.
|
|
@@ -1067,26 +1094,46 @@ no tokens spent. Flag blank cells in a required column before creating.
|
|
|
1067
1094
|
|
|
1068
1095
|
### Two jobs, and a human between them
|
|
1069
1096
|
|
|
1070
|
-
**Drafting** starts on `start_at` (or immediately),
|
|
1071
|
-
|
|
1072
|
-
the last row lands.
|
|
1073
|
-
`
|
|
1074
|
-
batch means *"the drafts are ready
|
|
1075
|
-
nothing about what has been sent.
|
|
1076
|
-
|
|
1077
|
-
**Sending** is separate
|
|
1078
|
-
`
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1097
|
+
**Drafting** starts on `start_at` (or immediately), runs `draft_concurrency` rows
|
|
1098
|
+
at a time with at least `draft_gap_seconds` between two starts, and stops when
|
|
1099
|
+
the last row lands. It has no business-hours window: nobody receives a draft. Its
|
|
1100
|
+
`status` is about drafting and nothing else — `scheduled`, `drafting`, `paused`,
|
|
1101
|
+
`drafted`, `canceled`, `failed`. A `drafted` batch means *"the drafts are ready
|
|
1102
|
+
to review"*, never "finished": it says nothing about what has been sent.
|
|
1103
|
+
|
|
1104
|
+
**Sending** is separate, only ever happens when a person asks, and is its own
|
|
1105
|
+
row. `create_email_send` takes `recipient_ids` or `selection: "all_drafts"` and
|
|
1106
|
+
returns a **send** you can steer:
|
|
1107
|
+
|
|
1108
|
+
- `start_at` schedules it, `window` (on its own `timezone`) holds it to business
|
|
1109
|
+
hours, `send_gap_seconds` is the minimum wait between two emails (1 second to
|
|
1110
|
+
1 hour) and `send_daily_cap` bounds how many may leave per local day. Anything
|
|
1111
|
+
omitted comes from the batch.
|
|
1112
|
+
- `pause_email_send` stops on the next email; `resume_email_send` carries on.
|
|
1113
|
+
- `cancel_email_send` gives **every unsent row back as a draft**, ready for
|
|
1114
|
+
another send. It is also the ONLY way to change what a scheduled send
|
|
1115
|
+
contains: a send's rows are fixed when it is created, and there is no verb for
|
|
1116
|
+
pulling rows out of one.
|
|
1117
|
+
- `get_email_send` carries `next_send_at`, which is how "waiting for Monday" is
|
|
1118
|
+
told apart from "stuck", and covers a start time, a shut window and a spent
|
|
1119
|
+
daily cap alike.
|
|
1120
|
+
|
|
1121
|
+
**The safeguard here is a RATE, not a row count.** `send_daily_cap` (200 by
|
|
1122
|
+
default, per batch, `null` for uncapped) is what stands between a 5 000-row list
|
|
1123
|
+
and a sending domain nobody trusts again. Before creating a send, say how many
|
|
1124
|
+
emails it is and roughly how long it will take at the pace it has — and if the
|
|
1125
|
+
user asks to raise or remove the cap, say what it is for rather than just doing
|
|
1126
|
+
it.
|
|
1127
|
+
|
|
1128
|
+
Each send may override `from_email` / `from_name` / `reply_to` for itself alone;
|
|
1129
|
+
the batch's own default is unchanged. The Resend account itself is not
|
|
1088
1130
|
overridable — a different account is a different batch.
|
|
1089
1131
|
|
|
1132
|
+
Every email carries `List-Unsubscribe: <mailto:…?subject=unsubscribe>`, pointed
|
|
1133
|
+
at the send's `reply_to` or its `from_email`. There is no one-click unsubscribe
|
|
1134
|
+
and no suppression list, so an opt-out arrives as a reply in the tenant's own
|
|
1135
|
+
inbox and honouring it is theirs to do.
|
|
1136
|
+
|
|
1090
1137
|
### Fixing rows
|
|
1091
1138
|
|
|
1092
1139
|
`list_email_batch_recipients` returns each row's `columns` (the merged space),
|
|
@@ -1095,8 +1142,13 @@ null when it can. `patch_email_batch_recipient` edits cells: the edit is stored
|
|
|
1095
1142
|
apart from what the model wrote, merged last, and an empty value clears it. That
|
|
1096
1143
|
is the answer to a row whose task returned `null` for the address — type one in.
|
|
1097
1144
|
|
|
1098
|
-
`
|
|
1099
|
-
|
|
1145
|
+
`redraft_email_batch_recipients` writes rows again from scratch and is the one
|
|
1146
|
+
action that revives a batch that already finished drafting. Its `selection` is
|
|
1147
|
+
`failed` (drafting failed), `stale_version` (an older published version of the
|
|
1148
|
+
task wrote them), `not_sent`, or `all` — which names every row it refuses.
|
|
1149
|
+
**Each redrafted row runs the task again and is billed again**, so say the row
|
|
1150
|
+
count before running `all`. A person's edited cells survive unless
|
|
1151
|
+
`clear_overrides` is set.
|
|
1100
1152
|
|
|
1101
1153
|
**One address is mailed at most once per batch**, enforced when the row is
|
|
1102
1154
|
claimed for sending: the second row settles `skipped` with
|
|
@@ -1105,12 +1157,18 @@ ours — Resend keeps one and auto-suppresses hard bounces and complaints.
|
|
|
1105
1157
|
|
|
1106
1158
|
### Watching it
|
|
1107
1159
|
|
|
1108
|
-
`get_email_batch` carries live counts, `failure_reason`, `
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1160
|
+
`get_email_batch` carries live counts, `failure_reason`, `sent_today` (against
|
|
1161
|
+
`send_daily_cap`), `drafted_versions` and the drafting cost so far. A batch that
|
|
1162
|
+
stops itself did so after ten consecutive drafting failures, or on the first
|
|
1163
|
+
`configuration` failure — a deleted task, a field map an edit broke — because
|
|
1164
|
+
those will fail identically for every remaining row.
|
|
1165
|
+
|
|
1166
|
+
**A send fails on its own, and never takes the batch with it.** Ten consecutive
|
|
1167
|
+
provider failures, or one account-level refusal (a revoked key, an unverified
|
|
1168
|
+
domain, an exhausted quota), stop that send and return its untouched rows to the
|
|
1169
|
+
review table as drafts. Fix the cause and create another send; the drafts are
|
|
1170
|
+
still there. In the other direction, pausing or cancelling the *batch* stops
|
|
1171
|
+
drafting and does not touch a send that is already scheduled or going out.
|
|
1114
1172
|
|
|
1115
1173
|
## Knowledge bases
|
|
1116
1174
|
|
package/package.json
CHANGED
package/tools.json
CHANGED
|
@@ -297,7 +297,7 @@
|
|
|
297
297
|
"role": "write"
|
|
298
298
|
},
|
|
299
299
|
{
|
|
300
|
-
"description": "Fetch one task's config
|
|
300
|
+
"description": "Fetch one task's draft config, published version, history and last run.",
|
|
301
301
|
"method": "GET",
|
|
302
302
|
"name": "get_task",
|
|
303
303
|
"parameters": {
|
|
@@ -311,7 +311,7 @@
|
|
|
311
311
|
"role": "read"
|
|
312
312
|
},
|
|
313
313
|
{
|
|
314
|
-
"description": "Replace
|
|
314
|
+
"description": "Replace the task's draft config with the one supplied.",
|
|
315
315
|
"method": "PATCH",
|
|
316
316
|
"name": "update_task",
|
|
317
317
|
"parameters": {
|
|
@@ -325,7 +325,7 @@
|
|
|
325
325
|
"role": "write"
|
|
326
326
|
},
|
|
327
327
|
{
|
|
328
|
-
"description": "Delete a task. Its
|
|
328
|
+
"description": "Delete a task and its published versions. Its runs survive, still named after it.",
|
|
329
329
|
"method": "DELETE",
|
|
330
330
|
"name": "delete_task",
|
|
331
331
|
"parameters": {
|
|
@@ -338,6 +338,62 @@
|
|
|
338
338
|
"read_only": false,
|
|
339
339
|
"role": "write"
|
|
340
340
|
},
|
|
341
|
+
{
|
|
342
|
+
"description": "Run publish-grade validation on the draft without publishing it.",
|
|
343
|
+
"method": "POST",
|
|
344
|
+
"name": "validate_task",
|
|
345
|
+
"parameters": {
|
|
346
|
+
"additionalProperties": true,
|
|
347
|
+
"description": "Arguments not inlined: call describe_function('validate_task').",
|
|
348
|
+
"properties": {},
|
|
349
|
+
"type": "object"
|
|
350
|
+
},
|
|
351
|
+
"path": "/v1/tasks/{task_id}/validate",
|
|
352
|
+
"read_only": false,
|
|
353
|
+
"role": "write"
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
"description": "Freeze the current draft as a new immutable version and make it live.",
|
|
357
|
+
"method": "POST",
|
|
358
|
+
"name": "publish_task",
|
|
359
|
+
"parameters": {
|
|
360
|
+
"additionalProperties": true,
|
|
361
|
+
"description": "Arguments not inlined: call describe_function('publish_task').",
|
|
362
|
+
"properties": {},
|
|
363
|
+
"type": "object"
|
|
364
|
+
},
|
|
365
|
+
"path": "/v1/tasks/{task_id}/publish",
|
|
366
|
+
"read_only": false,
|
|
367
|
+
"role": "write"
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"description": "Fetch what one published version of a task actually contains.",
|
|
371
|
+
"method": "GET",
|
|
372
|
+
"name": "get_task_version",
|
|
373
|
+
"parameters": {
|
|
374
|
+
"additionalProperties": true,
|
|
375
|
+
"description": "Arguments not inlined: call describe_function('get_task_version').",
|
|
376
|
+
"properties": {},
|
|
377
|
+
"type": "object"
|
|
378
|
+
},
|
|
379
|
+
"path": "/v1/tasks/{task_id}/versions/{version}",
|
|
380
|
+
"read_only": true,
|
|
381
|
+
"role": "read"
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
"description": "Put an earlier published version of a task back into production.",
|
|
385
|
+
"method": "POST",
|
|
386
|
+
"name": "rollback_task_version",
|
|
387
|
+
"parameters": {
|
|
388
|
+
"additionalProperties": true,
|
|
389
|
+
"description": "Arguments not inlined: call describe_function('rollback_task_version').",
|
|
390
|
+
"properties": {},
|
|
391
|
+
"type": "object"
|
|
392
|
+
},
|
|
393
|
+
"path": "/v1/tasks/{task_id}/versions/{version}/rollback",
|
|
394
|
+
"read_only": false,
|
|
395
|
+
"role": "write"
|
|
396
|
+
},
|
|
341
397
|
{
|
|
342
398
|
"description": "Run the task once with the variables you supply, and wait for the result.",
|
|
343
399
|
"method": "POST",
|
|
@@ -1137,7 +1193,7 @@
|
|
|
1137
1193
|
"role": "write"
|
|
1138
1194
|
},
|
|
1139
1195
|
{
|
|
1140
|
-
"description": "Stop drafting for good.
|
|
1196
|
+
"description": "Stop drafting for good. A batch cannot be deleted, because it is the record of what was sent to whom.",
|
|
1141
1197
|
"method": "POST",
|
|
1142
1198
|
"name": "cancel_email_batch",
|
|
1143
1199
|
"parameters": {
|
|
@@ -1179,58 +1235,142 @@
|
|
|
1179
1235
|
"role": "write"
|
|
1180
1236
|
},
|
|
1181
1237
|
{
|
|
1182
|
-
"description": "
|
|
1238
|
+
"description": "Take drafted rows out of consideration. Reversible with `restore`.",
|
|
1183
1239
|
"method": "POST",
|
|
1184
|
-
"name": "
|
|
1240
|
+
"name": "skip_email_batch_recipients",
|
|
1185
1241
|
"parameters": {
|
|
1186
1242
|
"additionalProperties": true,
|
|
1187
|
-
"description": "Arguments not inlined: call describe_function('
|
|
1243
|
+
"description": "Arguments not inlined: call describe_function('skip_email_batch_recipients').",
|
|
1188
1244
|
"properties": {},
|
|
1189
1245
|
"type": "object"
|
|
1190
1246
|
},
|
|
1191
|
-
"path": "/v1/email/batches/{batch_id}/
|
|
1247
|
+
"path": "/v1/email/batches/{batch_id}/skip",
|
|
1192
1248
|
"read_only": false,
|
|
1193
1249
|
"role": "write"
|
|
1194
1250
|
},
|
|
1195
1251
|
{
|
|
1196
|
-
"description": "
|
|
1252
|
+
"description": "Put skipped rows back. `selection: \"all_eligible\"` means every skipped row.",
|
|
1197
1253
|
"method": "POST",
|
|
1198
|
-
"name": "
|
|
1254
|
+
"name": "restore_email_batch_recipients",
|
|
1199
1255
|
"parameters": {
|
|
1200
1256
|
"additionalProperties": true,
|
|
1201
|
-
"description": "Arguments not inlined: call describe_function('
|
|
1257
|
+
"description": "Arguments not inlined: call describe_function('restore_email_batch_recipients').",
|
|
1202
1258
|
"properties": {},
|
|
1203
1259
|
"type": "object"
|
|
1204
1260
|
},
|
|
1205
|
-
"path": "/v1/email/batches/{batch_id}/
|
|
1261
|
+
"path": "/v1/email/batches/{batch_id}/restore",
|
|
1206
1262
|
"read_only": false,
|
|
1207
1263
|
"role": "write"
|
|
1208
1264
|
},
|
|
1209
1265
|
{
|
|
1210
|
-
"description": "
|
|
1266
|
+
"description": "Draft rows again from scratch. **Each one runs the task and is billed again.**",
|
|
1211
1267
|
"method": "POST",
|
|
1212
|
-
"name": "
|
|
1268
|
+
"name": "redraft_email_batch_recipients",
|
|
1213
1269
|
"parameters": {
|
|
1214
1270
|
"additionalProperties": true,
|
|
1215
|
-
"description": "Arguments not inlined: call describe_function('
|
|
1271
|
+
"description": "Arguments not inlined: call describe_function('redraft_email_batch_recipients').",
|
|
1216
1272
|
"properties": {},
|
|
1217
1273
|
"type": "object"
|
|
1218
1274
|
},
|
|
1219
|
-
"path": "/v1/email/batches/{batch_id}/
|
|
1275
|
+
"path": "/v1/email/batches/{batch_id}/redraft",
|
|
1276
|
+
"read_only": false,
|
|
1277
|
+
"role": "write"
|
|
1278
|
+
},
|
|
1279
|
+
{
|
|
1280
|
+
"description": "Send these rows. **This mails real people and cannot be undone.**",
|
|
1281
|
+
"method": "POST",
|
|
1282
|
+
"name": "create_email_send",
|
|
1283
|
+
"parameters": {
|
|
1284
|
+
"additionalProperties": true,
|
|
1285
|
+
"description": "Arguments not inlined: call describe_function('create_email_send').",
|
|
1286
|
+
"properties": {},
|
|
1287
|
+
"type": "object"
|
|
1288
|
+
},
|
|
1289
|
+
"path": "/v1/email/batches/{batch_id}/sends",
|
|
1290
|
+
"read_only": false,
|
|
1291
|
+
"role": "write"
|
|
1292
|
+
},
|
|
1293
|
+
{
|
|
1294
|
+
"description": "Every send on this batch, newest first, with its counts and its schedule.",
|
|
1295
|
+
"method": "GET",
|
|
1296
|
+
"name": "list_email_sends",
|
|
1297
|
+
"parameters": {
|
|
1298
|
+
"additionalProperties": true,
|
|
1299
|
+
"description": "Arguments not inlined: call describe_function('list_email_sends').",
|
|
1300
|
+
"properties": {},
|
|
1301
|
+
"type": "object"
|
|
1302
|
+
},
|
|
1303
|
+
"path": "/v1/email/batches/{batch_id}/sends",
|
|
1304
|
+
"read_only": true,
|
|
1305
|
+
"role": "read"
|
|
1306
|
+
},
|
|
1307
|
+
{
|
|
1308
|
+
"description": "One send: where its rows are, and when it next does something.",
|
|
1309
|
+
"method": "GET",
|
|
1310
|
+
"name": "get_email_send",
|
|
1311
|
+
"parameters": {
|
|
1312
|
+
"additionalProperties": true,
|
|
1313
|
+
"description": "Arguments not inlined: call describe_function('get_email_send').",
|
|
1314
|
+
"properties": {},
|
|
1315
|
+
"type": "object"
|
|
1316
|
+
},
|
|
1317
|
+
"path": "/v1/email/batches/{batch_id}/sends/{send_id}",
|
|
1318
|
+
"read_only": true,
|
|
1319
|
+
"role": "read"
|
|
1320
|
+
},
|
|
1321
|
+
{
|
|
1322
|
+
"description": "Re-steer one send: its pace, its hours, its daily cap, its start time.",
|
|
1323
|
+
"method": "PATCH",
|
|
1324
|
+
"name": "patch_email_send",
|
|
1325
|
+
"parameters": {
|
|
1326
|
+
"additionalProperties": true,
|
|
1327
|
+
"description": "Arguments not inlined: call describe_function('patch_email_send').",
|
|
1328
|
+
"properties": {},
|
|
1329
|
+
"type": "object"
|
|
1330
|
+
},
|
|
1331
|
+
"path": "/v1/email/batches/{batch_id}/sends/{send_id}",
|
|
1332
|
+
"read_only": false,
|
|
1333
|
+
"role": "write"
|
|
1334
|
+
},
|
|
1335
|
+
{
|
|
1336
|
+
"description": "Stop sending. It takes hold on the next email, and nothing is lost \u2014 the rows stay queued for whenever you resume.",
|
|
1337
|
+
"method": "POST",
|
|
1338
|
+
"name": "pause_email_send",
|
|
1339
|
+
"parameters": {
|
|
1340
|
+
"additionalProperties": true,
|
|
1341
|
+
"description": "Arguments not inlined: call describe_function('pause_email_send').",
|
|
1342
|
+
"properties": {},
|
|
1343
|
+
"type": "object"
|
|
1344
|
+
},
|
|
1345
|
+
"path": "/v1/email/batches/{batch_id}/sends/{send_id}/pause",
|
|
1346
|
+
"read_only": false,
|
|
1347
|
+
"role": "write"
|
|
1348
|
+
},
|
|
1349
|
+
{
|
|
1350
|
+
"description": "Undo a pause and carry on from where it stopped.",
|
|
1351
|
+
"method": "POST",
|
|
1352
|
+
"name": "resume_email_send",
|
|
1353
|
+
"parameters": {
|
|
1354
|
+
"additionalProperties": true,
|
|
1355
|
+
"description": "Arguments not inlined: call describe_function('resume_email_send').",
|
|
1356
|
+
"properties": {},
|
|
1357
|
+
"type": "object"
|
|
1358
|
+
},
|
|
1359
|
+
"path": "/v1/email/batches/{batch_id}/sends/{send_id}/resume",
|
|
1220
1360
|
"read_only": false,
|
|
1221
1361
|
"role": "write"
|
|
1222
1362
|
},
|
|
1223
1363
|
{
|
|
1224
|
-
"description": "
|
|
1364
|
+
"description": "Stop this send, and give every row it has not sent back as a draft.",
|
|
1225
1365
|
"method": "POST",
|
|
1226
|
-
"name": "
|
|
1366
|
+
"name": "cancel_email_send",
|
|
1227
1367
|
"parameters": {
|
|
1228
1368
|
"additionalProperties": true,
|
|
1229
|
-
"description": "Arguments not inlined: call describe_function('
|
|
1369
|
+
"description": "Arguments not inlined: call describe_function('cancel_email_send').",
|
|
1230
1370
|
"properties": {},
|
|
1231
1371
|
"type": "object"
|
|
1232
1372
|
},
|
|
1233
|
-
"path": "/v1/email/batches/{batch_id}/
|
|
1373
|
+
"path": "/v1/email/batches/{batch_id}/sends/{send_id}/cancel",
|
|
1234
1374
|
"read_only": false,
|
|
1235
1375
|
"role": "write"
|
|
1236
1376
|
},
|