@roarkanalytics/cli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +225 -0
- package/bin.d.ts +2 -0
- package/bin.js +14 -0
- package/commands.d.ts +5 -0
- package/commands.js +3553 -0
- package/completions.d.ts +1 -0
- package/completions.js +13 -0
- package/index.d.ts +6 -0
- package/index.js +26 -0
- package/man/roark-agent-create.1 +99 -0
- package/man/roark-agent-endpoint-create.1 +108 -0
- package/man/roark-agent-endpoint-get.1 +93 -0
- package/man/roark-agent-endpoint-list.1 +102 -0
- package/man/roark-agent-endpoint-update.1 +103 -0
- package/man/roark-agent-get.1 +93 -0
- package/man/roark-agent-list.1 +99 -0
- package/man/roark-agent-update.1 +100 -0
- package/man/roark-call-create.1 +150 -0
- package/man/roark-call-get.1 +93 -0
- package/man/roark-call-list.1 +111 -0
- package/man/roark-call-metric-list.1 +100 -0
- package/man/roark-call-sentiment-run-list.1 +93 -0
- package/man/roark-call-transcript-get.1 +97 -0
- package/man/roark-config-apply.1 +96 -0
- package/man/roark-config-diff.1 +96 -0
- package/man/roark-customer-flow-create.1 +97 -0
- package/man/roark-customer-flow-delete.1 +93 -0
- package/man/roark-customer-flow-edge-case-create.1 +112 -0
- package/man/roark-customer-flow-edge-case-delete.1 +96 -0
- package/man/roark-customer-flow-edge-case-promote.1 +96 -0
- package/man/roark-customer-flow-edge-case-update.1 +118 -0
- package/man/roark-customer-flow-get.1 +93 -0
- package/man/roark-customer-flow-graph-replace.1 +100 -0
- package/man/roark-customer-flow-happy-path-update.1 +115 -0
- package/man/roark-customer-flow-list.1 +105 -0
- package/man/roark-customer-flow-update.1 +109 -0
- package/man/roark-health.1 +89 -0
- package/man/roark-http-request-definition-create.1 +108 -0
- package/man/roark-http-request-definition-get.1 +93 -0
- package/man/roark-http-request-definition-list.1 +96 -0
- package/man/roark-http-request-definition-update.1 +109 -0
- package/man/roark-metric-collection-job-create.1 +99 -0
- package/man/roark-metric-collection-job-get.1 +93 -0
- package/man/roark-metric-collection-job-list.1 +99 -0
- package/man/roark-metric-definition-create.1 +100 -0
- package/man/roark-metric-definition-list.1 +89 -0
- package/man/roark-metric-policy-create.1 +105 -0
- package/man/roark-metric-policy-delete.1 +93 -0
- package/man/roark-metric-policy-get.1 +93 -0
- package/man/roark-metric-policy-list.1 +99 -0
- package/man/roark-metric-policy-update.1 +106 -0
- package/man/roark-simulation-environment-get.1 +93 -0
- package/man/roark-simulation-environment-list.1 +96 -0
- package/man/roark-simulation-job-get.1 +93 -0
- package/man/roark-simulation-job-lookup.1 +96 -0
- package/man/roark-simulation-persona-create.1 +156 -0
- package/man/roark-simulation-persona-get.1 +93 -0
- package/man/roark-simulation-persona-list.1 +99 -0
- package/man/roark-simulation-persona-update.1 +160 -0
- package/man/roark-simulation-plan-create.1 +138 -0
- package/man/roark-simulation-plan-delete.1 +93 -0
- package/man/roark-simulation-plan-get.1 +93 -0
- package/man/roark-simulation-plan-job-get.1 +93 -0
- package/man/roark-simulation-plan-job-list.1 +108 -0
- package/man/roark-simulation-plan-job-start.1 +97 -0
- package/man/roark-simulation-plan-list.1 +102 -0
- package/man/roark-simulation-plan-update.1 +142 -0
- package/man/roark-simulation-run.1 +97 -0
- package/man/roark-webhook-create.1 +102 -0
- package/man/roark-webhook-delete.1 +93 -0
- package/man/roark-webhook-get.1 +93 -0
- package/man/roark-webhook-list.1 +96 -0
- package/man/roark.1 +287 -0
- package/package.json +102 -0
- package/runtime/commands/api.d.ts +26 -0
- package/runtime/commands/api.js +85 -0
- package/runtime/commands/auth.d.ts +9 -0
- package/runtime/commands/auth.js +111 -0
- package/runtime/commands/completion.d.ts +9 -0
- package/runtime/commands/completion.js +42 -0
- package/runtime/commands/config.d.ts +15 -0
- package/runtime/commands/config.js +125 -0
- package/runtime/config.d.ts +65 -0
- package/runtime/config.js +163 -0
- package/runtime/confirm.d.ts +16 -0
- package/runtime/confirm.js +34 -0
- package/runtime/errors.d.ts +45 -0
- package/runtime/errors.js +91 -0
- package/runtime/input.d.ts +52 -0
- package/runtime/input.js +211 -0
- package/runtime/output.d.ts +41 -0
- package/runtime/output.js +90 -0
- package/runtime/program.d.ts +45 -0
- package/runtime/program.js +305 -0
- package/runtime/types.d.ts +53 -0
- package/runtime/types.js +10 -0
- package/version.d.ts +1 -0
- package/version.js +8 -0
package/commands.js
ADDED
|
@@ -0,0 +1,3553 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// File generated from our OpenAPI spec by app-agent-codegen. Do not edit.
|
|
3
|
+
//
|
|
4
|
+
// The runtime that reads this table lives in ./runtime and is hand-maintained.
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.COMMANDS = exports.GROUPS = exports.DESCRIPTION = exports.BINARY_NAME = void 0;
|
|
7
|
+
exports.BINARY_NAME = 'roark';
|
|
8
|
+
exports.DESCRIPTION = 'Command line interface for the Roark Analytics API';
|
|
9
|
+
// Help text for the command groups, which have no operation of their own.
|
|
10
|
+
exports.GROUPS = {
|
|
11
|
+
agent: 'Manage agents',
|
|
12
|
+
'agent endpoint': 'Manage agent endpoints',
|
|
13
|
+
call: 'Manage calls',
|
|
14
|
+
'call metric': 'Read call metrics',
|
|
15
|
+
'call sentiment-run': 'Read call sentiment runs',
|
|
16
|
+
'call transcript': 'Read call transcript',
|
|
17
|
+
config: 'Read configs',
|
|
18
|
+
'customer-flow': 'Manage customer flows',
|
|
19
|
+
'customer-flow edge-case': 'Manage customer flow edge cases',
|
|
20
|
+
'customer-flow graph': 'Manage customer flow graph',
|
|
21
|
+
'customer-flow happy-path': 'Manage customer flow happy path',
|
|
22
|
+
'http-request-definition': 'Manage HTTP request definitions',
|
|
23
|
+
metric: 'Manage metrics',
|
|
24
|
+
'metric collection-job': 'Manage metric collection jobs',
|
|
25
|
+
'metric definition': 'Manage metric definitions',
|
|
26
|
+
'metric policy': 'Manage metric policies',
|
|
27
|
+
simulation: 'Manage simulations',
|
|
28
|
+
'simulation environment': 'Read simulation environments',
|
|
29
|
+
'simulation job': 'Read simulation jobs',
|
|
30
|
+
'simulation persona': 'Manage simulation personas',
|
|
31
|
+
'simulation plan': 'Manage simulation plans',
|
|
32
|
+
'simulation plan job': 'Manage simulation plan jobs',
|
|
33
|
+
webhook: 'Manage webhooks',
|
|
34
|
+
};
|
|
35
|
+
exports.COMMANDS = [
|
|
36
|
+
{
|
|
37
|
+
commandPath: ['agent', 'create'],
|
|
38
|
+
clientProperty: 'agent',
|
|
39
|
+
methodName: 'create',
|
|
40
|
+
httpMethod: 'post',
|
|
41
|
+
httpPath: '/v1/agent',
|
|
42
|
+
summary: 'Create a new agent',
|
|
43
|
+
description: 'Creates a new agent for the authenticated project.',
|
|
44
|
+
positionals: [],
|
|
45
|
+
flags: [
|
|
46
|
+
{
|
|
47
|
+
name: 'name',
|
|
48
|
+
path: ['name'],
|
|
49
|
+
location: 'body',
|
|
50
|
+
required: true,
|
|
51
|
+
description: 'Name of the agent',
|
|
52
|
+
valueKind: 'string',
|
|
53
|
+
repeatable: false,
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: 'description',
|
|
57
|
+
path: ['description'],
|
|
58
|
+
location: 'body',
|
|
59
|
+
required: false,
|
|
60
|
+
description: 'Description of the agent',
|
|
61
|
+
valueKind: 'string',
|
|
62
|
+
repeatable: false,
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'custom-id',
|
|
66
|
+
path: ['customId'],
|
|
67
|
+
location: 'body',
|
|
68
|
+
required: false,
|
|
69
|
+
description: 'Custom identifier for the agent',
|
|
70
|
+
valueKind: 'string',
|
|
71
|
+
repeatable: false,
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
hasParams: true,
|
|
75
|
+
paramsAllOptional: false,
|
|
76
|
+
bodyOpaque: false,
|
|
77
|
+
bodyVariants: [],
|
|
78
|
+
acceptsBody: true,
|
|
79
|
+
requiresAuth: true,
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
commandPath: ['agent', 'endpoint', 'create'],
|
|
83
|
+
clientProperty: 'agentEndpoint',
|
|
84
|
+
methodName: 'create',
|
|
85
|
+
httpMethod: 'post',
|
|
86
|
+
httpPath: '/v1/agent/endpoint',
|
|
87
|
+
summary: 'Create a new agent endpoint',
|
|
88
|
+
description: 'Creates a new agent endpoint for the authenticated project.',
|
|
89
|
+
positionals: [],
|
|
90
|
+
flags: [
|
|
91
|
+
{
|
|
92
|
+
name: 'agent-id',
|
|
93
|
+
path: ['agentId'],
|
|
94
|
+
location: 'body',
|
|
95
|
+
required: true,
|
|
96
|
+
description: 'Agent ID to associate this endpoint with',
|
|
97
|
+
valueKind: 'string',
|
|
98
|
+
repeatable: false,
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: 'value',
|
|
102
|
+
path: ['value'],
|
|
103
|
+
location: 'body',
|
|
104
|
+
required: true,
|
|
105
|
+
description: 'Phone number in E.164 format (e.g., +12345678900)',
|
|
106
|
+
valueKind: 'string',
|
|
107
|
+
repeatable: false,
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
name: 'environment',
|
|
111
|
+
path: ['environment'],
|
|
112
|
+
location: 'body',
|
|
113
|
+
required: false,
|
|
114
|
+
description: 'Environment name (default: production)',
|
|
115
|
+
valueKind: 'string',
|
|
116
|
+
repeatable: false,
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: 'direction',
|
|
120
|
+
path: ['direction'],
|
|
121
|
+
location: 'body',
|
|
122
|
+
required: true,
|
|
123
|
+
description: 'Call direction: INCOMING, OUTGOING, or INCOMING_AND_OUTGOING',
|
|
124
|
+
valueKind: 'string',
|
|
125
|
+
enumValues: ['INCOMING', 'OUTGOING', 'INCOMING_AND_OUTGOING'],
|
|
126
|
+
repeatable: false,
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
name: 'outbound-dial-type',
|
|
130
|
+
path: ['outboundDialType'],
|
|
131
|
+
location: 'body',
|
|
132
|
+
required: false,
|
|
133
|
+
description: 'Outbound dial type: NONE or HTTP_REQUEST (default: NONE)',
|
|
134
|
+
valueKind: 'string',
|
|
135
|
+
enumValues: ['NONE', 'HTTP_REQUEST'],
|
|
136
|
+
repeatable: false,
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
name: 'outbound-dial-http-request-definition-id',
|
|
140
|
+
path: ['outboundDialHttpRequestDefinitionId'],
|
|
141
|
+
location: 'body',
|
|
142
|
+
required: false,
|
|
143
|
+
description: 'ID of the HTTP request definition for outbound dialing (required when outboundDialType is HTTP_REQUEST)',
|
|
144
|
+
valueKind: 'string',
|
|
145
|
+
repeatable: false,
|
|
146
|
+
},
|
|
147
|
+
],
|
|
148
|
+
hasParams: true,
|
|
149
|
+
paramsAllOptional: false,
|
|
150
|
+
bodyOpaque: false,
|
|
151
|
+
bodyVariants: [],
|
|
152
|
+
acceptsBody: true,
|
|
153
|
+
requiresAuth: true,
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
commandPath: ['agent', 'endpoint', 'get'],
|
|
157
|
+
clientProperty: 'agentEndpoint',
|
|
158
|
+
methodName: 'getByID',
|
|
159
|
+
httpMethod: 'get',
|
|
160
|
+
httpPath: '/v1/agent/endpoint/{endpointId}',
|
|
161
|
+
summary: 'Get agent endpoint by ID',
|
|
162
|
+
description: 'Returns a specific agent endpoint by its ID.',
|
|
163
|
+
positionals: [
|
|
164
|
+
{
|
|
165
|
+
name: 'endpoint-id',
|
|
166
|
+
paramKey: 'endpointId',
|
|
167
|
+
description: 'The ID of the agent endpoint to retrieve',
|
|
168
|
+
},
|
|
169
|
+
],
|
|
170
|
+
flags: [],
|
|
171
|
+
hasParams: false,
|
|
172
|
+
paramsAllOptional: true,
|
|
173
|
+
bodyOpaque: false,
|
|
174
|
+
bodyVariants: [],
|
|
175
|
+
acceptsBody: false,
|
|
176
|
+
requiresAuth: true,
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
commandPath: ['agent', 'endpoint', 'list'],
|
|
180
|
+
clientProperty: 'agentEndpoint',
|
|
181
|
+
methodName: 'list',
|
|
182
|
+
httpMethod: 'get',
|
|
183
|
+
httpPath: '/v1/agent/endpoint',
|
|
184
|
+
summary: 'List agent endpoints',
|
|
185
|
+
description: 'Returns a paginated list of agent endpoints for the authenticated project.',
|
|
186
|
+
positionals: [],
|
|
187
|
+
flags: [
|
|
188
|
+
{
|
|
189
|
+
name: 'limit',
|
|
190
|
+
path: ['limit'],
|
|
191
|
+
location: 'query',
|
|
192
|
+
required: false,
|
|
193
|
+
description: 'Maximum number of endpoints to return (default: 20, max: 50)',
|
|
194
|
+
valueKind: 'integer',
|
|
195
|
+
repeatable: false,
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
name: 'after',
|
|
199
|
+
path: ['after'],
|
|
200
|
+
location: 'query',
|
|
201
|
+
required: false,
|
|
202
|
+
description: 'Cursor for pagination - endpoint ID to start after',
|
|
203
|
+
valueKind: 'string',
|
|
204
|
+
repeatable: false,
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
name: 'agent-id',
|
|
208
|
+
path: ['agentId'],
|
|
209
|
+
location: 'query',
|
|
210
|
+
required: false,
|
|
211
|
+
description: 'Filter by agent ID',
|
|
212
|
+
valueKind: 'string',
|
|
213
|
+
repeatable: false,
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
name: 'search-text',
|
|
217
|
+
path: ['searchText'],
|
|
218
|
+
location: 'query',
|
|
219
|
+
required: false,
|
|
220
|
+
description: 'Search text to filter endpoints',
|
|
221
|
+
valueKind: 'string',
|
|
222
|
+
repeatable: false,
|
|
223
|
+
},
|
|
224
|
+
],
|
|
225
|
+
hasParams: true,
|
|
226
|
+
paramsAllOptional: true,
|
|
227
|
+
bodyOpaque: false,
|
|
228
|
+
bodyVariants: [],
|
|
229
|
+
acceptsBody: false,
|
|
230
|
+
requiresAuth: true,
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
commandPath: ['agent', 'endpoint', 'update'],
|
|
234
|
+
clientProperty: 'agentEndpoint',
|
|
235
|
+
methodName: 'update',
|
|
236
|
+
httpMethod: 'put',
|
|
237
|
+
httpPath: '/v1/agent/endpoint/{endpointId}',
|
|
238
|
+
summary: 'Update an agent endpoint',
|
|
239
|
+
description: 'Updates an existing agent endpoint by its ID. Only environment and outboundDialType can be modified.',
|
|
240
|
+
positionals: [
|
|
241
|
+
{
|
|
242
|
+
name: 'endpoint-id',
|
|
243
|
+
paramKey: 'endpointId',
|
|
244
|
+
description: 'The ID of the agent endpoint to update',
|
|
245
|
+
},
|
|
246
|
+
],
|
|
247
|
+
flags: [
|
|
248
|
+
{
|
|
249
|
+
name: 'environment',
|
|
250
|
+
path: ['environment'],
|
|
251
|
+
location: 'body',
|
|
252
|
+
required: false,
|
|
253
|
+
description: 'Environment name',
|
|
254
|
+
valueKind: 'string',
|
|
255
|
+
repeatable: false,
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
name: 'outbound-dial-type',
|
|
259
|
+
path: ['outboundDialType'],
|
|
260
|
+
location: 'body',
|
|
261
|
+
required: false,
|
|
262
|
+
description: 'Outbound dial type: NONE or HTTP_REQUEST',
|
|
263
|
+
valueKind: 'string',
|
|
264
|
+
enumValues: ['NONE', 'HTTP_REQUEST'],
|
|
265
|
+
repeatable: false,
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
name: 'outbound-dial-http-request-definition-id',
|
|
269
|
+
path: ['outboundDialHttpRequestDefinitionId'],
|
|
270
|
+
location: 'body',
|
|
271
|
+
required: false,
|
|
272
|
+
description: 'ID of the HTTP request definition for outbound dialing',
|
|
273
|
+
valueKind: 'string',
|
|
274
|
+
repeatable: false,
|
|
275
|
+
},
|
|
276
|
+
],
|
|
277
|
+
hasParams: true,
|
|
278
|
+
paramsAllOptional: true,
|
|
279
|
+
bodyOpaque: false,
|
|
280
|
+
bodyVariants: [],
|
|
281
|
+
acceptsBody: true,
|
|
282
|
+
requiresAuth: true,
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
commandPath: ['agent', 'get'],
|
|
286
|
+
clientProperty: 'agent',
|
|
287
|
+
methodName: 'getByID',
|
|
288
|
+
httpMethod: 'get',
|
|
289
|
+
httpPath: '/v1/agent/{agentId}',
|
|
290
|
+
summary: 'Get agent by ID',
|
|
291
|
+
description: 'Returns a specific agent by its ID.',
|
|
292
|
+
positionals: [
|
|
293
|
+
{
|
|
294
|
+
name: 'agent-id',
|
|
295
|
+
paramKey: 'agentId',
|
|
296
|
+
description: 'The ID of the agent to retrieve',
|
|
297
|
+
},
|
|
298
|
+
],
|
|
299
|
+
flags: [],
|
|
300
|
+
hasParams: false,
|
|
301
|
+
paramsAllOptional: true,
|
|
302
|
+
bodyOpaque: false,
|
|
303
|
+
bodyVariants: [],
|
|
304
|
+
acceptsBody: false,
|
|
305
|
+
requiresAuth: true,
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
commandPath: ['agent', 'list'],
|
|
309
|
+
clientProperty: 'agent',
|
|
310
|
+
methodName: 'list',
|
|
311
|
+
httpMethod: 'get',
|
|
312
|
+
httpPath: '/v1/agent',
|
|
313
|
+
summary: 'List agents',
|
|
314
|
+
description: 'Returns a paginated list of agents for the authenticated project.',
|
|
315
|
+
positionals: [],
|
|
316
|
+
flags: [
|
|
317
|
+
{
|
|
318
|
+
name: 'limit',
|
|
319
|
+
path: ['limit'],
|
|
320
|
+
location: 'query',
|
|
321
|
+
required: false,
|
|
322
|
+
valueKind: 'integer',
|
|
323
|
+
repeatable: false,
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
name: 'after',
|
|
327
|
+
path: ['after'],
|
|
328
|
+
location: 'query',
|
|
329
|
+
required: false,
|
|
330
|
+
valueKind: 'string',
|
|
331
|
+
repeatable: false,
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
name: 'search-text',
|
|
335
|
+
path: ['searchText'],
|
|
336
|
+
location: 'query',
|
|
337
|
+
required: false,
|
|
338
|
+
valueKind: 'string',
|
|
339
|
+
repeatable: false,
|
|
340
|
+
},
|
|
341
|
+
],
|
|
342
|
+
hasParams: true,
|
|
343
|
+
paramsAllOptional: true,
|
|
344
|
+
bodyOpaque: false,
|
|
345
|
+
bodyVariants: [],
|
|
346
|
+
acceptsBody: false,
|
|
347
|
+
requiresAuth: true,
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
commandPath: ['agent', 'update'],
|
|
351
|
+
clientProperty: 'agent',
|
|
352
|
+
methodName: 'update',
|
|
353
|
+
httpMethod: 'put',
|
|
354
|
+
httpPath: '/v1/agent/{agentId}',
|
|
355
|
+
summary: 'Update an agent',
|
|
356
|
+
description: 'Updates an existing agent by its ID.',
|
|
357
|
+
positionals: [
|
|
358
|
+
{
|
|
359
|
+
name: 'agent-id',
|
|
360
|
+
paramKey: 'agentId',
|
|
361
|
+
description: 'The ID of the agent to update',
|
|
362
|
+
},
|
|
363
|
+
],
|
|
364
|
+
flags: [
|
|
365
|
+
{
|
|
366
|
+
name: 'name',
|
|
367
|
+
path: ['name'],
|
|
368
|
+
location: 'body',
|
|
369
|
+
required: false,
|
|
370
|
+
description: 'Name of the agent',
|
|
371
|
+
valueKind: 'string',
|
|
372
|
+
repeatable: false,
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
name: 'description',
|
|
376
|
+
path: ['description'],
|
|
377
|
+
location: 'body',
|
|
378
|
+
required: false,
|
|
379
|
+
description: 'Description of the agent',
|
|
380
|
+
valueKind: 'string',
|
|
381
|
+
repeatable: false,
|
|
382
|
+
},
|
|
383
|
+
],
|
|
384
|
+
hasParams: true,
|
|
385
|
+
paramsAllOptional: true,
|
|
386
|
+
bodyOpaque: false,
|
|
387
|
+
bodyVariants: [],
|
|
388
|
+
acceptsBody: true,
|
|
389
|
+
requiresAuth: true,
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
commandPath: ['call', 'create'],
|
|
393
|
+
clientProperty: 'call',
|
|
394
|
+
methodName: 'create',
|
|
395
|
+
httpMethod: 'post',
|
|
396
|
+
httpPath: '/v1/call',
|
|
397
|
+
summary: 'Create a call',
|
|
398
|
+
description: 'Create a new call with recording, transcript, agents, and customers',
|
|
399
|
+
positionals: [],
|
|
400
|
+
flags: [
|
|
401
|
+
{
|
|
402
|
+
name: 'recording-url',
|
|
403
|
+
path: ['recordingUrl'],
|
|
404
|
+
location: 'body',
|
|
405
|
+
required: true,
|
|
406
|
+
description: 'URL of source recording (must be an accessible WAV, MP3, MP4, or OGG file). Can be a signed URL.',
|
|
407
|
+
valueKind: 'string',
|
|
408
|
+
repeatable: false,
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
name: 'stereo-recording-url',
|
|
412
|
+
path: ['stereoRecordingUrl'],
|
|
413
|
+
location: 'body',
|
|
414
|
+
required: false,
|
|
415
|
+
description: 'URL of source stereo recording. Must be accessible. Can be a signed URL. Supported formats: WAV, MP3, MP4, OGG.',
|
|
416
|
+
valueKind: 'string',
|
|
417
|
+
repeatable: false,
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
name: 'started-at',
|
|
421
|
+
path: ['startedAt'],
|
|
422
|
+
location: 'body',
|
|
423
|
+
required: true,
|
|
424
|
+
description: 'When the call started (ISO 8601 format)',
|
|
425
|
+
valueKind: 'string',
|
|
426
|
+
repeatable: false,
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
name: 'interface-type',
|
|
430
|
+
path: ['interfaceType'],
|
|
431
|
+
location: 'body',
|
|
432
|
+
required: true,
|
|
433
|
+
description: 'Interface type of the call (PHONE or WEB)',
|
|
434
|
+
valueKind: 'string',
|
|
435
|
+
enumValues: ['PHONE', 'WEB'],
|
|
436
|
+
repeatable: false,
|
|
437
|
+
},
|
|
438
|
+
{
|
|
439
|
+
name: 'call-direction',
|
|
440
|
+
path: ['callDirection'],
|
|
441
|
+
location: 'body',
|
|
442
|
+
required: true,
|
|
443
|
+
description: 'Direction of the call (INBOUND or OUTBOUND)',
|
|
444
|
+
valueKind: 'string',
|
|
445
|
+
enumValues: ['INBOUND', 'OUTBOUND'],
|
|
446
|
+
repeatable: false,
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
name: 'ended-status',
|
|
450
|
+
path: ['endedStatus'],
|
|
451
|
+
location: 'body',
|
|
452
|
+
required: false,
|
|
453
|
+
description: 'High-level call end status, indicating how the call terminated',
|
|
454
|
+
valueKind: 'string',
|
|
455
|
+
enumValues: [
|
|
456
|
+
'PARTICIPANTS_DID_NOT_SPEAK',
|
|
457
|
+
'AGENT_DID_NOT_ANSWER',
|
|
458
|
+
'AGENT_DID_NOT_SPEAK',
|
|
459
|
+
'AGENT_STOPPED_SPEAKING',
|
|
460
|
+
'AGENT_ENDED_CALL',
|
|
461
|
+
'AGENT_TRANSFERRED_CALL',
|
|
462
|
+
'AGENT_BUSY',
|
|
463
|
+
'AGENT_ERROR',
|
|
464
|
+
'CUSTOMER_ENDED_CALL',
|
|
465
|
+
'VOICE_MAIL_REACHED',
|
|
466
|
+
'SILENCE_TIME_OUT',
|
|
467
|
+
'PHONE_CALL_PROVIDER_CONNECTION_ERROR',
|
|
468
|
+
'CUSTOMER_DID_NOT_ANSWER',
|
|
469
|
+
'CUSTOMER_DID_NOT_SPEAK',
|
|
470
|
+
'CUSTOMER_STOPPED_SPEAKING',
|
|
471
|
+
'CUSTOMER_BUSY',
|
|
472
|
+
'DIAL_ERROR',
|
|
473
|
+
'MAX_DURATION_REACHED',
|
|
474
|
+
'UNKNOWN',
|
|
475
|
+
],
|
|
476
|
+
repeatable: false,
|
|
477
|
+
},
|
|
478
|
+
{
|
|
479
|
+
name: 'transcript',
|
|
480
|
+
path: ['transcript'],
|
|
481
|
+
location: 'body',
|
|
482
|
+
required: false,
|
|
483
|
+
description: 'List of transcript entries made during the call',
|
|
484
|
+
valueKind: 'array',
|
|
485
|
+
repeatable: false,
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
name: 'tool-invocations',
|
|
489
|
+
path: ['toolInvocations'],
|
|
490
|
+
location: 'body',
|
|
491
|
+
required: false,
|
|
492
|
+
description: 'List of tool invocations made during the call',
|
|
493
|
+
valueKind: 'array',
|
|
494
|
+
repeatable: false,
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
name: 'properties',
|
|
498
|
+
path: ['properties'],
|
|
499
|
+
location: 'body',
|
|
500
|
+
required: false,
|
|
501
|
+
description: 'Custom properties to include with the call. These can be used for filtering and will show in the call details page',
|
|
502
|
+
valueKind: 'object',
|
|
503
|
+
repeatable: false,
|
|
504
|
+
},
|
|
505
|
+
{
|
|
506
|
+
name: 'vapi-call-id',
|
|
507
|
+
path: ['vapiCallId'],
|
|
508
|
+
location: 'body',
|
|
509
|
+
required: false,
|
|
510
|
+
description: 'The Vapi call ID (UUID) to link this call with OpenTelemetry trace data from Vapi. Used for matching calls with OTEL traces.',
|
|
511
|
+
valueKind: 'string',
|
|
512
|
+
repeatable: false,
|
|
513
|
+
},
|
|
514
|
+
{
|
|
515
|
+
name: 'livekit-room-id',
|
|
516
|
+
path: ['livekitRoomId'],
|
|
517
|
+
location: 'body',
|
|
518
|
+
required: false,
|
|
519
|
+
description: 'The LiveKit Cloud room ID to link this call with OpenTelemetry trace data from LiveKit. Used for matching calls with OTEL traces.',
|
|
520
|
+
valueKind: 'string',
|
|
521
|
+
repeatable: false,
|
|
522
|
+
},
|
|
523
|
+
{
|
|
524
|
+
name: 'external-id',
|
|
525
|
+
path: ['externalId'],
|
|
526
|
+
location: 'body',
|
|
527
|
+
required: false,
|
|
528
|
+
description: 'A stable identifier from your own system (e.g. session ID, conversation ID) used to correlate this call with OpenTelemetry traces. Set the same value as a `roark.external_id` span or resource attribute on your traces and the matching trace will be linked automatically. Must be unique within a project.',
|
|
529
|
+
valueKind: 'string',
|
|
530
|
+
repeatable: false,
|
|
531
|
+
},
|
|
532
|
+
{
|
|
533
|
+
name: 'agent',
|
|
534
|
+
path: ['agent'],
|
|
535
|
+
location: 'body',
|
|
536
|
+
required: false,
|
|
537
|
+
description: 'Single agent participating in the call. Use this for simpler API when you have only one agent.',
|
|
538
|
+
valueKind: 'object',
|
|
539
|
+
},
|
|
540
|
+
{
|
|
541
|
+
name: 'agent.endpoint',
|
|
542
|
+
path: ['agent', 'endpoint'],
|
|
543
|
+
location: 'body',
|
|
544
|
+
required: false,
|
|
545
|
+
description: 'Endpoint configuration for this agent (optional)',
|
|
546
|
+
valueKind: 'string',
|
|
547
|
+
repeatable: false,
|
|
548
|
+
},
|
|
549
|
+
{
|
|
550
|
+
name: 'agent.prompt',
|
|
551
|
+
path: ['agent', 'prompt'],
|
|
552
|
+
location: 'body',
|
|
553
|
+
required: false,
|
|
554
|
+
description: "Agent's prompt configuration (optional)",
|
|
555
|
+
valueKind: 'object',
|
|
556
|
+
repeatable: false,
|
|
557
|
+
},
|
|
558
|
+
{
|
|
559
|
+
name: 'agents',
|
|
560
|
+
path: ['agents'],
|
|
561
|
+
location: 'body',
|
|
562
|
+
required: false,
|
|
563
|
+
description: 'Agents participating in the call. Each agent requires identification and prompt information.',
|
|
564
|
+
valueKind: 'array',
|
|
565
|
+
repeatable: false,
|
|
566
|
+
},
|
|
567
|
+
{
|
|
568
|
+
name: 'customer',
|
|
569
|
+
path: ['customer'],
|
|
570
|
+
location: 'body',
|
|
571
|
+
required: false,
|
|
572
|
+
description: 'Single customer participating in the call. Use this for simpler API when you have only one customer.',
|
|
573
|
+
valueKind: 'object',
|
|
574
|
+
},
|
|
575
|
+
{
|
|
576
|
+
name: 'customer.label',
|
|
577
|
+
path: ['customer', 'label'],
|
|
578
|
+
location: 'body',
|
|
579
|
+
required: false,
|
|
580
|
+
description: 'Label to identify this customer in the transcript (e.g., "speaker-01", "speaker-02")',
|
|
581
|
+
valueKind: 'string',
|
|
582
|
+
repeatable: false,
|
|
583
|
+
},
|
|
584
|
+
{
|
|
585
|
+
name: 'customer.phone-number-e164',
|
|
586
|
+
path: ['customer', 'phoneNumberE164'],
|
|
587
|
+
location: 'body',
|
|
588
|
+
required: true,
|
|
589
|
+
description: 'Customer phone number in E.164 format (e.g., +14155551234)',
|
|
590
|
+
valueKind: 'string',
|
|
591
|
+
repeatable: false,
|
|
592
|
+
},
|
|
593
|
+
{
|
|
594
|
+
name: 'customers',
|
|
595
|
+
path: ['customers'],
|
|
596
|
+
location: 'body',
|
|
597
|
+
required: false,
|
|
598
|
+
description: 'Customers participating in the call.',
|
|
599
|
+
valueKind: 'array',
|
|
600
|
+
repeatable: false,
|
|
601
|
+
},
|
|
602
|
+
],
|
|
603
|
+
hasParams: true,
|
|
604
|
+
paramsAllOptional: false,
|
|
605
|
+
bodyOpaque: false,
|
|
606
|
+
bodyVariants: [],
|
|
607
|
+
acceptsBody: true,
|
|
608
|
+
requiresAuth: true,
|
|
609
|
+
},
|
|
610
|
+
{
|
|
611
|
+
commandPath: ['call', 'get'],
|
|
612
|
+
clientProperty: 'call',
|
|
613
|
+
methodName: 'getByID',
|
|
614
|
+
httpMethod: 'get',
|
|
615
|
+
httpPath: '/v1/call/{callId}',
|
|
616
|
+
summary: 'Get a call by ID',
|
|
617
|
+
description: 'Retrieve an existing call by its unique identifier',
|
|
618
|
+
positionals: [
|
|
619
|
+
{
|
|
620
|
+
name: 'call-id',
|
|
621
|
+
paramKey: 'callId',
|
|
622
|
+
},
|
|
623
|
+
],
|
|
624
|
+
flags: [],
|
|
625
|
+
hasParams: false,
|
|
626
|
+
paramsAllOptional: true,
|
|
627
|
+
bodyOpaque: false,
|
|
628
|
+
bodyVariants: [],
|
|
629
|
+
acceptsBody: false,
|
|
630
|
+
requiresAuth: true,
|
|
631
|
+
},
|
|
632
|
+
{
|
|
633
|
+
commandPath: ['call', 'list'],
|
|
634
|
+
clientProperty: 'call',
|
|
635
|
+
methodName: 'list',
|
|
636
|
+
httpMethod: 'get',
|
|
637
|
+
httpPath: '/v1/call',
|
|
638
|
+
summary: 'List calls',
|
|
639
|
+
description: 'Returns a paginated list of calls for the authenticated project.',
|
|
640
|
+
positionals: [],
|
|
641
|
+
flags: [
|
|
642
|
+
{
|
|
643
|
+
name: 'limit',
|
|
644
|
+
path: ['limit'],
|
|
645
|
+
location: 'query',
|
|
646
|
+
required: false,
|
|
647
|
+
description: 'Maximum number of calls to return (default: 20, max: 100)',
|
|
648
|
+
valueKind: 'integer',
|
|
649
|
+
repeatable: false,
|
|
650
|
+
},
|
|
651
|
+
{
|
|
652
|
+
name: 'after',
|
|
653
|
+
path: ['after'],
|
|
654
|
+
location: 'query',
|
|
655
|
+
required: false,
|
|
656
|
+
description: 'Cursor for pagination - use the nextCursor value from a previous response',
|
|
657
|
+
valueKind: 'string',
|
|
658
|
+
repeatable: false,
|
|
659
|
+
},
|
|
660
|
+
{
|
|
661
|
+
name: 'sort-by',
|
|
662
|
+
path: ['sortBy'],
|
|
663
|
+
location: 'query',
|
|
664
|
+
required: false,
|
|
665
|
+
description: 'Field to sort by (default: createdAt)',
|
|
666
|
+
valueKind: 'string',
|
|
667
|
+
enumValues: ['createdAt', 'startedAt', 'endedAt', 'duration', 'title', 'status'],
|
|
668
|
+
repeatable: false,
|
|
669
|
+
},
|
|
670
|
+
{
|
|
671
|
+
name: 'sort-direction',
|
|
672
|
+
path: ['sortDirection'],
|
|
673
|
+
location: 'query',
|
|
674
|
+
required: false,
|
|
675
|
+
description: 'Sort direction (default: desc)',
|
|
676
|
+
valueKind: 'string',
|
|
677
|
+
enumValues: ['asc', 'desc'],
|
|
678
|
+
repeatable: false,
|
|
679
|
+
},
|
|
680
|
+
{
|
|
681
|
+
name: 'status',
|
|
682
|
+
path: ['status'],
|
|
683
|
+
location: 'query',
|
|
684
|
+
required: false,
|
|
685
|
+
description: 'Filter by call status',
|
|
686
|
+
valueKind: 'string',
|
|
687
|
+
enumValues: ['RINGING', 'IN_PROGRESS', 'ENDED'],
|
|
688
|
+
repeatable: false,
|
|
689
|
+
},
|
|
690
|
+
{
|
|
691
|
+
name: 'search-text',
|
|
692
|
+
path: ['searchText'],
|
|
693
|
+
location: 'query',
|
|
694
|
+
required: false,
|
|
695
|
+
description: 'Search text to filter calls by title, summary, or transcript',
|
|
696
|
+
valueKind: 'string',
|
|
697
|
+
repeatable: false,
|
|
698
|
+
},
|
|
699
|
+
{
|
|
700
|
+
name: 'simulation-run-plan-job-id',
|
|
701
|
+
path: ['simulationRunPlanJobId'],
|
|
702
|
+
location: 'query',
|
|
703
|
+
required: false,
|
|
704
|
+
description: 'Filter by simulation run plan job ID to get all calls from a specific simulation batch',
|
|
705
|
+
valueKind: 'string',
|
|
706
|
+
repeatable: false,
|
|
707
|
+
},
|
|
708
|
+
],
|
|
709
|
+
hasParams: true,
|
|
710
|
+
paramsAllOptional: true,
|
|
711
|
+
bodyOpaque: false,
|
|
712
|
+
bodyVariants: [],
|
|
713
|
+
acceptsBody: false,
|
|
714
|
+
requiresAuth: true,
|
|
715
|
+
},
|
|
716
|
+
{
|
|
717
|
+
commandPath: ['call', 'metric', 'list'],
|
|
718
|
+
clientProperty: 'call',
|
|
719
|
+
methodName: 'listMetrics',
|
|
720
|
+
httpMethod: 'get',
|
|
721
|
+
httpPath: '/v1/call/{callId}/metrics',
|
|
722
|
+
summary: 'List call metrics',
|
|
723
|
+
description: 'Fetch all call-level metrics for a specific call, including both system-generated and custom metrics. Only returns rows from the **latest** metric-collection job per metric — if the same metric has been recomputed, prior runs are excluded and remain in the metric history. By default returns only successfully computed metrics; pass `?status=all` to also include rows that resolved as NOT_APPLICABLE / DATA_MISSING / ERROR (the `value` field is omitted on those entries — check `captureStatus`).',
|
|
724
|
+
positionals: [
|
|
725
|
+
{
|
|
726
|
+
name: 'call-id',
|
|
727
|
+
paramKey: 'callId',
|
|
728
|
+
},
|
|
729
|
+
],
|
|
730
|
+
flags: [
|
|
731
|
+
{
|
|
732
|
+
name: 'flatten',
|
|
733
|
+
path: ['flatten'],
|
|
734
|
+
location: 'query',
|
|
735
|
+
required: false,
|
|
736
|
+
description: 'Whether to return a flat list instead of grouped by metric definition (default: false)',
|
|
737
|
+
valueKind: 'string',
|
|
738
|
+
repeatable: false,
|
|
739
|
+
},
|
|
740
|
+
{
|
|
741
|
+
name: 'status',
|
|
742
|
+
path: ['status'],
|
|
743
|
+
location: 'query',
|
|
744
|
+
required: false,
|
|
745
|
+
description: 'Filter metrics by capture status. `success` (default) returns only successfully computed metrics — backwards-compatible with the historical behavior. `all` also returns NOT_APPLICABLE / DATA_MISSING / ERROR rows (with `value` omitted), so clients can distinguish "still computing" from "computed but no value" and exit retry loops correctly.',
|
|
746
|
+
valueKind: 'string',
|
|
747
|
+
enumValues: ['success', 'all'],
|
|
748
|
+
repeatable: false,
|
|
749
|
+
},
|
|
750
|
+
],
|
|
751
|
+
hasParams: true,
|
|
752
|
+
paramsAllOptional: true,
|
|
753
|
+
bodyOpaque: false,
|
|
754
|
+
bodyVariants: [],
|
|
755
|
+
acceptsBody: false,
|
|
756
|
+
requiresAuth: true,
|
|
757
|
+
},
|
|
758
|
+
{
|
|
759
|
+
commandPath: ['call', 'sentiment-run', 'list'],
|
|
760
|
+
clientProperty: 'call',
|
|
761
|
+
methodName: 'listSentimentRuns',
|
|
762
|
+
httpMethod: 'get',
|
|
763
|
+
httpPath: '/v1/call/{callId}/sentiment-run',
|
|
764
|
+
summary: 'List call sentiment runs',
|
|
765
|
+
description: 'Fetch detailed sentiment analysis results for a specific call, including emotional tone, key phrases, and sentiment scores.',
|
|
766
|
+
positionals: [
|
|
767
|
+
{
|
|
768
|
+
name: 'call-id',
|
|
769
|
+
paramKey: 'callId',
|
|
770
|
+
},
|
|
771
|
+
],
|
|
772
|
+
flags: [],
|
|
773
|
+
hasParams: false,
|
|
774
|
+
paramsAllOptional: true,
|
|
775
|
+
bodyOpaque: false,
|
|
776
|
+
bodyVariants: [],
|
|
777
|
+
acceptsBody: false,
|
|
778
|
+
requiresAuth: true,
|
|
779
|
+
},
|
|
780
|
+
{
|
|
781
|
+
commandPath: ['call', 'transcript', 'get'],
|
|
782
|
+
clientProperty: 'call',
|
|
783
|
+
methodName: 'getTranscript',
|
|
784
|
+
httpMethod: 'get',
|
|
785
|
+
httpPath: '/v1/call/{callId}/transcript',
|
|
786
|
+
summary: 'Get call transcript',
|
|
787
|
+
description: 'Fetch the full transcript for a specific call. Optionally specify a transcription source; otherwise the best available source is used automatically.',
|
|
788
|
+
positionals: [
|
|
789
|
+
{
|
|
790
|
+
name: 'call-id',
|
|
791
|
+
paramKey: 'callId',
|
|
792
|
+
},
|
|
793
|
+
],
|
|
794
|
+
flags: [
|
|
795
|
+
{
|
|
796
|
+
name: 'source',
|
|
797
|
+
path: ['source'],
|
|
798
|
+
location: 'query',
|
|
799
|
+
required: false,
|
|
800
|
+
description: 'Transcription source to fetch. When omitted, uses the preferred source based on availability: CUSTOMER_AGENT_REALTIME > SIMULATION_AGENT_REALTIME > ROARK_POST_CALL',
|
|
801
|
+
valueKind: 'string',
|
|
802
|
+
enumValues: ['ROARK_POST_CALL', 'SIMULATION_AGENT_REALTIME', 'CUSTOMER_AGENT_REALTIME'],
|
|
803
|
+
repeatable: false,
|
|
804
|
+
},
|
|
805
|
+
],
|
|
806
|
+
hasParams: true,
|
|
807
|
+
paramsAllOptional: true,
|
|
808
|
+
bodyOpaque: false,
|
|
809
|
+
bodyVariants: [],
|
|
810
|
+
acceptsBody: false,
|
|
811
|
+
requiresAuth: true,
|
|
812
|
+
},
|
|
813
|
+
{
|
|
814
|
+
commandPath: ['config', 'apply'],
|
|
815
|
+
clientProperty: 'config',
|
|
816
|
+
methodName: 'apply',
|
|
817
|
+
httpMethod: 'post',
|
|
818
|
+
httpPath: '/v1/config/apply',
|
|
819
|
+
summary: 'Apply a config bundle',
|
|
820
|
+
description: 'Reconcile a config-as-code bundle into the project. Submit the full desired set of resources; resources already managed by config are updated, new ones created, and (unless prune is false) config-managed resources absent from the bundle are deleted. Identity is by name — no ids in the bundle.',
|
|
821
|
+
positionals: [],
|
|
822
|
+
flags: [
|
|
823
|
+
{
|
|
824
|
+
name: 'resources',
|
|
825
|
+
path: ['resources'],
|
|
826
|
+
location: 'body',
|
|
827
|
+
required: true,
|
|
828
|
+
valueKind: 'array',
|
|
829
|
+
repeatable: false,
|
|
830
|
+
},
|
|
831
|
+
{
|
|
832
|
+
name: 'prune',
|
|
833
|
+
path: ['prune'],
|
|
834
|
+
location: 'body',
|
|
835
|
+
required: false,
|
|
836
|
+
valueKind: 'boolean',
|
|
837
|
+
repeatable: false,
|
|
838
|
+
},
|
|
839
|
+
],
|
|
840
|
+
hasParams: true,
|
|
841
|
+
paramsAllOptional: false,
|
|
842
|
+
bodyOpaque: false,
|
|
843
|
+
bodyVariants: [],
|
|
844
|
+
acceptsBody: true,
|
|
845
|
+
requiresAuth: true,
|
|
846
|
+
},
|
|
847
|
+
{
|
|
848
|
+
commandPath: ['config', 'diff'],
|
|
849
|
+
clientProperty: 'config',
|
|
850
|
+
methodName: 'diff',
|
|
851
|
+
httpMethod: 'post',
|
|
852
|
+
httpPath: '/v1/config/diff',
|
|
853
|
+
summary: 'Diff a config bundle',
|
|
854
|
+
description: 'Dry run: returns the changes reconcile a config-as-code bundle into the project. Submit the full desired set of resources; resources already managed by config are updated, new ones created, and (unless prune is false) config-managed resources absent from the bundle are deleted. Identity is by name — no ids in the bundle. No writes are performed.',
|
|
855
|
+
positionals: [],
|
|
856
|
+
flags: [
|
|
857
|
+
{
|
|
858
|
+
name: 'resources',
|
|
859
|
+
path: ['resources'],
|
|
860
|
+
location: 'body',
|
|
861
|
+
required: true,
|
|
862
|
+
valueKind: 'array',
|
|
863
|
+
repeatable: false,
|
|
864
|
+
},
|
|
865
|
+
{
|
|
866
|
+
name: 'prune',
|
|
867
|
+
path: ['prune'],
|
|
868
|
+
location: 'body',
|
|
869
|
+
required: false,
|
|
870
|
+
valueKind: 'boolean',
|
|
871
|
+
repeatable: false,
|
|
872
|
+
},
|
|
873
|
+
],
|
|
874
|
+
hasParams: true,
|
|
875
|
+
paramsAllOptional: false,
|
|
876
|
+
bodyOpaque: false,
|
|
877
|
+
bodyVariants: [],
|
|
878
|
+
acceptsBody: true,
|
|
879
|
+
requiresAuth: true,
|
|
880
|
+
},
|
|
881
|
+
{
|
|
882
|
+
commandPath: ['customer-flow', 'create'],
|
|
883
|
+
clientProperty: 'customerFlow',
|
|
884
|
+
methodName: 'create',
|
|
885
|
+
httpMethod: 'post',
|
|
886
|
+
httpPath: '/v1/customer-flow',
|
|
887
|
+
summary: 'Create a customer flow',
|
|
888
|
+
description: 'Creates a customer flow. A SCRIPTED flow carries a step graph and gets one way of running it per path through the graph; an IMPROV flow carries the briefs you send. Customer flows replace the older simulation scenarios, so build a flow for anything new.',
|
|
889
|
+
positionals: [],
|
|
890
|
+
flags: [],
|
|
891
|
+
hasParams: true,
|
|
892
|
+
paramsAllOptional: false,
|
|
893
|
+
bodyOpaque: true,
|
|
894
|
+
bodyVariants: [
|
|
895
|
+
{
|
|
896
|
+
name: 'CreateScriptedCustomerFlowInput',
|
|
897
|
+
required: ['type', 'title', 'graph'],
|
|
898
|
+
},
|
|
899
|
+
{
|
|
900
|
+
name: 'CreateImprovCustomerFlowInput',
|
|
901
|
+
required: ['type', 'title', 'agentIds', 'happyPath'],
|
|
902
|
+
},
|
|
903
|
+
],
|
|
904
|
+
acceptsBody: true,
|
|
905
|
+
requiresAuth: true,
|
|
906
|
+
},
|
|
907
|
+
{
|
|
908
|
+
commandPath: ['customer-flow', 'delete'],
|
|
909
|
+
clientProperty: 'customerFlow',
|
|
910
|
+
methodName: 'delete',
|
|
911
|
+
httpMethod: 'delete',
|
|
912
|
+
httpPath: '/v1/customer-flow/{flowId}',
|
|
913
|
+
summary: 'Delete a customer flow',
|
|
914
|
+
description: 'Soft-deletes a customer flow along with its edge cases, expectations and (for scripted flows) its step graph. Run plans that linked it drop it from their test cases.',
|
|
915
|
+
positionals: [
|
|
916
|
+
{
|
|
917
|
+
name: 'flow-id',
|
|
918
|
+
paramKey: 'flowId',
|
|
919
|
+
},
|
|
920
|
+
],
|
|
921
|
+
flags: [],
|
|
922
|
+
hasParams: false,
|
|
923
|
+
paramsAllOptional: true,
|
|
924
|
+
bodyOpaque: false,
|
|
925
|
+
bodyVariants: [],
|
|
926
|
+
acceptsBody: false,
|
|
927
|
+
requiresAuth: true,
|
|
928
|
+
},
|
|
929
|
+
{
|
|
930
|
+
commandPath: ['customer-flow', 'edge-case', 'create'],
|
|
931
|
+
clientProperty: 'customerFlowEdgeCase',
|
|
932
|
+
methodName: 'add',
|
|
933
|
+
httpMethod: 'post',
|
|
934
|
+
httpPath: '/v1/customer-flow/{flowId}/edge-case',
|
|
935
|
+
summary: 'Add an edge case',
|
|
936
|
+
description: "Adds a variant to an IMPROV flow. A scripted flow's variants are owned by the path engine, one per path through the graph, so they are created by editing the graph through PUT /v1/customer-flow/{flowId}/graph rather than here. Leave personaOverrideId or environmentId unset to inherit the happy path's.",
|
|
937
|
+
positionals: [
|
|
938
|
+
{
|
|
939
|
+
name: 'flow-id',
|
|
940
|
+
paramKey: 'flowId',
|
|
941
|
+
},
|
|
942
|
+
],
|
|
943
|
+
flags: [
|
|
944
|
+
{
|
|
945
|
+
name: 'title',
|
|
946
|
+
path: ['title'],
|
|
947
|
+
location: 'body',
|
|
948
|
+
required: true,
|
|
949
|
+
valueKind: 'string',
|
|
950
|
+
repeatable: false,
|
|
951
|
+
},
|
|
952
|
+
{
|
|
953
|
+
name: 'environment-id',
|
|
954
|
+
path: ['environmentId'],
|
|
955
|
+
location: 'body',
|
|
956
|
+
required: false,
|
|
957
|
+
valueKind: 'string',
|
|
958
|
+
repeatable: false,
|
|
959
|
+
},
|
|
960
|
+
{
|
|
961
|
+
name: 'prompt',
|
|
962
|
+
path: ['prompt'],
|
|
963
|
+
location: 'body',
|
|
964
|
+
required: false,
|
|
965
|
+
valueKind: 'string',
|
|
966
|
+
repeatable: false,
|
|
967
|
+
},
|
|
968
|
+
{
|
|
969
|
+
name: 'preceded-by-customer-flow-id',
|
|
970
|
+
path: ['precededByCustomerFlowId'],
|
|
971
|
+
location: 'body',
|
|
972
|
+
required: false,
|
|
973
|
+
valueKind: 'string',
|
|
974
|
+
repeatable: false,
|
|
975
|
+
},
|
|
976
|
+
{
|
|
977
|
+
name: 'preceded-by-customer-flow-variant-id',
|
|
978
|
+
path: ['precededByCustomerFlowVariantId'],
|
|
979
|
+
location: 'body',
|
|
980
|
+
required: false,
|
|
981
|
+
valueKind: 'string',
|
|
982
|
+
repeatable: false,
|
|
983
|
+
},
|
|
984
|
+
{
|
|
985
|
+
name: 'persona-override-id',
|
|
986
|
+
path: ['personaOverrideId'],
|
|
987
|
+
location: 'body',
|
|
988
|
+
required: false,
|
|
989
|
+
description: "The persona this runs as. Omit to inherit the happy path's.",
|
|
990
|
+
valueKind: 'string',
|
|
991
|
+
repeatable: false,
|
|
992
|
+
},
|
|
993
|
+
],
|
|
994
|
+
hasParams: true,
|
|
995
|
+
paramsAllOptional: false,
|
|
996
|
+
bodyOpaque: false,
|
|
997
|
+
bodyVariants: [],
|
|
998
|
+
acceptsBody: true,
|
|
999
|
+
requiresAuth: true,
|
|
1000
|
+
},
|
|
1001
|
+
{
|
|
1002
|
+
commandPath: ['customer-flow', 'edge-case', 'delete'],
|
|
1003
|
+
clientProperty: 'customerFlowEdgeCase',
|
|
1004
|
+
methodName: 'remove',
|
|
1005
|
+
httpMethod: 'delete',
|
|
1006
|
+
httpPath: '/v1/customer-flow/{flowId}/edge-case/{edgeCaseId}',
|
|
1007
|
+
summary: 'Remove an edge case',
|
|
1008
|
+
description: 'Soft-deletes a variant. On a scripted flow the path engine re-creates a variant for any path still in the graph, so remove the path through PUT /graph instead if that is what you meant.',
|
|
1009
|
+
positionals: [
|
|
1010
|
+
{
|
|
1011
|
+
name: 'flow-id',
|
|
1012
|
+
paramKey: 'flowId',
|
|
1013
|
+
},
|
|
1014
|
+
{
|
|
1015
|
+
name: 'edge-case-id',
|
|
1016
|
+
paramKey: 'edgeCaseId',
|
|
1017
|
+
},
|
|
1018
|
+
],
|
|
1019
|
+
flags: [],
|
|
1020
|
+
hasParams: true,
|
|
1021
|
+
paramsAllOptional: false,
|
|
1022
|
+
bodyOpaque: false,
|
|
1023
|
+
bodyVariants: [],
|
|
1024
|
+
acceptsBody: false,
|
|
1025
|
+
requiresAuth: true,
|
|
1026
|
+
},
|
|
1027
|
+
{
|
|
1028
|
+
commandPath: ['customer-flow', 'edge-case', 'promote'],
|
|
1029
|
+
clientProperty: 'customerFlowEdgeCase',
|
|
1030
|
+
methodName: 'promote',
|
|
1031
|
+
httpMethod: 'post',
|
|
1032
|
+
httpPath: '/v1/customer-flow/{flowId}/edge-case/{edgeCaseId}/promote',
|
|
1033
|
+
summary: 'Promote an edge case to the happy path',
|
|
1034
|
+
description: "Makes this edge case the flow's happy path, and the outgoing happy path an edge case. Its persona and environment are baked into it first, so edge cases that were inheriting keep the configuration they had.",
|
|
1035
|
+
positionals: [
|
|
1036
|
+
{
|
|
1037
|
+
name: 'flow-id',
|
|
1038
|
+
paramKey: 'flowId',
|
|
1039
|
+
},
|
|
1040
|
+
{
|
|
1041
|
+
name: 'edge-case-id',
|
|
1042
|
+
paramKey: 'edgeCaseId',
|
|
1043
|
+
},
|
|
1044
|
+
],
|
|
1045
|
+
flags: [],
|
|
1046
|
+
hasParams: true,
|
|
1047
|
+
paramsAllOptional: false,
|
|
1048
|
+
bodyOpaque: false,
|
|
1049
|
+
bodyVariants: [],
|
|
1050
|
+
acceptsBody: false,
|
|
1051
|
+
requiresAuth: true,
|
|
1052
|
+
},
|
|
1053
|
+
{
|
|
1054
|
+
commandPath: ['customer-flow', 'edge-case', 'update'],
|
|
1055
|
+
clientProperty: 'customerFlowEdgeCase',
|
|
1056
|
+
methodName: 'update',
|
|
1057
|
+
httpMethod: 'put',
|
|
1058
|
+
httpPath: '/v1/customer-flow/{flowId}/edge-case/{edgeCaseId}',
|
|
1059
|
+
summary: 'Update an edge case',
|
|
1060
|
+
description: "Updates an edge case's title, persona, environment, brief, preceded-by link or expectations. Omitted fields are left alone; `additionalExpectations` replaces the set wholesale rather than appending. Promoting it to the happy path is a separate call, since that also demotes the incumbent.",
|
|
1061
|
+
positionals: [
|
|
1062
|
+
{
|
|
1063
|
+
name: 'flow-id',
|
|
1064
|
+
paramKey: 'flowId',
|
|
1065
|
+
},
|
|
1066
|
+
{
|
|
1067
|
+
name: 'edge-case-id',
|
|
1068
|
+
paramKey: 'edgeCaseId',
|
|
1069
|
+
},
|
|
1070
|
+
],
|
|
1071
|
+
flags: [
|
|
1072
|
+
{
|
|
1073
|
+
name: 'title',
|
|
1074
|
+
path: ['title'],
|
|
1075
|
+
location: 'body',
|
|
1076
|
+
required: false,
|
|
1077
|
+
valueKind: 'string',
|
|
1078
|
+
repeatable: false,
|
|
1079
|
+
},
|
|
1080
|
+
{
|
|
1081
|
+
name: 'environment-id',
|
|
1082
|
+
path: ['environmentId'],
|
|
1083
|
+
location: 'body',
|
|
1084
|
+
required: false,
|
|
1085
|
+
valueKind: 'string',
|
|
1086
|
+
repeatable: false,
|
|
1087
|
+
},
|
|
1088
|
+
{
|
|
1089
|
+
name: 'prompt',
|
|
1090
|
+
path: ['prompt'],
|
|
1091
|
+
location: 'body',
|
|
1092
|
+
required: false,
|
|
1093
|
+
valueKind: 'string',
|
|
1094
|
+
repeatable: false,
|
|
1095
|
+
},
|
|
1096
|
+
{
|
|
1097
|
+
name: 'preceded-by-customer-flow-id',
|
|
1098
|
+
path: ['precededByCustomerFlowId'],
|
|
1099
|
+
location: 'body',
|
|
1100
|
+
required: false,
|
|
1101
|
+
valueKind: 'string',
|
|
1102
|
+
repeatable: false,
|
|
1103
|
+
},
|
|
1104
|
+
{
|
|
1105
|
+
name: 'preceded-by-customer-flow-variant-id',
|
|
1106
|
+
path: ['precededByCustomerFlowVariantId'],
|
|
1107
|
+
location: 'body',
|
|
1108
|
+
required: false,
|
|
1109
|
+
valueKind: 'string',
|
|
1110
|
+
repeatable: false,
|
|
1111
|
+
},
|
|
1112
|
+
{
|
|
1113
|
+
name: 'persona-override-id',
|
|
1114
|
+
path: ['personaOverrideId'],
|
|
1115
|
+
location: 'body',
|
|
1116
|
+
required: false,
|
|
1117
|
+
description: "The persona this runs as. Null on an edge case inherits the happy path's.",
|
|
1118
|
+
valueKind: 'string',
|
|
1119
|
+
repeatable: false,
|
|
1120
|
+
},
|
|
1121
|
+
{
|
|
1122
|
+
name: 'additional-expectations',
|
|
1123
|
+
path: ['additionalExpectations'],
|
|
1124
|
+
location: 'body',
|
|
1125
|
+
required: false,
|
|
1126
|
+
description: "Replaces the expectations that apply to this variant on top of the flow's. Omit to leave them alone, send [] to clear. Improv flows only: a scripted variant's expectations come from the agent turns on its path and are rewritten on the next graph edit.",
|
|
1127
|
+
valueKind: 'array',
|
|
1128
|
+
repeatable: false,
|
|
1129
|
+
},
|
|
1130
|
+
],
|
|
1131
|
+
hasParams: true,
|
|
1132
|
+
paramsAllOptional: false,
|
|
1133
|
+
bodyOpaque: false,
|
|
1134
|
+
bodyVariants: [],
|
|
1135
|
+
acceptsBody: true,
|
|
1136
|
+
requiresAuth: true,
|
|
1137
|
+
},
|
|
1138
|
+
{
|
|
1139
|
+
commandPath: ['customer-flow', 'get'],
|
|
1140
|
+
clientProperty: 'customerFlow',
|
|
1141
|
+
methodName: 'getByID',
|
|
1142
|
+
httpMethod: 'get',
|
|
1143
|
+
httpPath: '/v1/customer-flow/{flowId}',
|
|
1144
|
+
summary: 'Get customer flow by ID',
|
|
1145
|
+
description: 'Returns a customer flow with its happy path, edge cases, expectations and linked agents. Scripted flows also carry their step graph.',
|
|
1146
|
+
positionals: [
|
|
1147
|
+
{
|
|
1148
|
+
name: 'flow-id',
|
|
1149
|
+
paramKey: 'flowId',
|
|
1150
|
+
},
|
|
1151
|
+
],
|
|
1152
|
+
flags: [],
|
|
1153
|
+
hasParams: false,
|
|
1154
|
+
paramsAllOptional: true,
|
|
1155
|
+
bodyOpaque: false,
|
|
1156
|
+
bodyVariants: [],
|
|
1157
|
+
acceptsBody: false,
|
|
1158
|
+
requiresAuth: true,
|
|
1159
|
+
},
|
|
1160
|
+
{
|
|
1161
|
+
commandPath: ['customer-flow', 'graph', 'replace'],
|
|
1162
|
+
clientProperty: 'customerFlow',
|
|
1163
|
+
methodName: 'replaceGraph',
|
|
1164
|
+
httpMethod: 'put',
|
|
1165
|
+
httpPath: '/v1/customer-flow/{flowId}/graph',
|
|
1166
|
+
summary: "Replace a scripted flow's steps",
|
|
1167
|
+
description: "Replaces a scripted flow's conversation graph with the tree you send. This is a full replace, not a merge: a step you omit is removed. Include `nodeId` on a step to update the existing one, omit it to create a new step. Where two branches rejoin, keep the `mergeIntoNodeIds` references a read gave you. Dropping them un-merges those branches and is refused unless `allowUnmerge` is set. A change to the set of paths re-seeds how the flow runs, which the response reports as `variantsReshaped` along with the resulting happy path and edge cases.",
|
|
1168
|
+
positionals: [
|
|
1169
|
+
{
|
|
1170
|
+
name: 'flow-id',
|
|
1171
|
+
paramKey: 'flowId',
|
|
1172
|
+
},
|
|
1173
|
+
],
|
|
1174
|
+
flags: [
|
|
1175
|
+
{
|
|
1176
|
+
name: 'graph',
|
|
1177
|
+
path: ['graph'],
|
|
1178
|
+
location: 'body',
|
|
1179
|
+
required: true,
|
|
1180
|
+
description: "The complete graph. This replaces the flow's existing steps rather than merging into them.",
|
|
1181
|
+
valueKind: 'array',
|
|
1182
|
+
repeatable: false,
|
|
1183
|
+
},
|
|
1184
|
+
{
|
|
1185
|
+
name: 'allow-unmerge',
|
|
1186
|
+
path: ['allowUnmerge'],
|
|
1187
|
+
location: 'body',
|
|
1188
|
+
required: false,
|
|
1189
|
+
description: 'Confirms a write that drops branches which currently rejoin. Only needed when the request omits mergeIntoNodeIds references the flow already had; a faithful round trip never needs it.',
|
|
1190
|
+
valueKind: 'boolean',
|
|
1191
|
+
repeatable: false,
|
|
1192
|
+
},
|
|
1193
|
+
],
|
|
1194
|
+
hasParams: true,
|
|
1195
|
+
paramsAllOptional: false,
|
|
1196
|
+
bodyOpaque: false,
|
|
1197
|
+
bodyVariants: [],
|
|
1198
|
+
acceptsBody: true,
|
|
1199
|
+
requiresAuth: true,
|
|
1200
|
+
},
|
|
1201
|
+
{
|
|
1202
|
+
commandPath: ['customer-flow', 'happy-path', 'update'],
|
|
1203
|
+
clientProperty: 'customerFlow',
|
|
1204
|
+
methodName: 'updateHappyPath',
|
|
1205
|
+
httpMethod: 'put',
|
|
1206
|
+
httpPath: '/v1/customer-flow/{flowId}/happy-path',
|
|
1207
|
+
summary: "Update a flow's happy path",
|
|
1208
|
+
description: "Updates the happy path's title, persona, environment, brief or expectations. Omitted fields are left alone; `additionalExpectations` replaces the set wholesale rather than appending. Its persona and environment are what the edge cases inherit, so changing them here changes every edge case that does not name its own.",
|
|
1209
|
+
positionals: [
|
|
1210
|
+
{
|
|
1211
|
+
name: 'flow-id',
|
|
1212
|
+
paramKey: 'flowId',
|
|
1213
|
+
},
|
|
1214
|
+
],
|
|
1215
|
+
flags: [
|
|
1216
|
+
{
|
|
1217
|
+
name: 'title',
|
|
1218
|
+
path: ['title'],
|
|
1219
|
+
location: 'body',
|
|
1220
|
+
required: false,
|
|
1221
|
+
valueKind: 'string',
|
|
1222
|
+
repeatable: false,
|
|
1223
|
+
},
|
|
1224
|
+
{
|
|
1225
|
+
name: 'environment-id',
|
|
1226
|
+
path: ['environmentId'],
|
|
1227
|
+
location: 'body',
|
|
1228
|
+
required: false,
|
|
1229
|
+
valueKind: 'string',
|
|
1230
|
+
repeatable: false,
|
|
1231
|
+
},
|
|
1232
|
+
{
|
|
1233
|
+
name: 'prompt',
|
|
1234
|
+
path: ['prompt'],
|
|
1235
|
+
location: 'body',
|
|
1236
|
+
required: false,
|
|
1237
|
+
valueKind: 'string',
|
|
1238
|
+
repeatable: false,
|
|
1239
|
+
},
|
|
1240
|
+
{
|
|
1241
|
+
name: 'preceded-by-customer-flow-id',
|
|
1242
|
+
path: ['precededByCustomerFlowId'],
|
|
1243
|
+
location: 'body',
|
|
1244
|
+
required: false,
|
|
1245
|
+
valueKind: 'string',
|
|
1246
|
+
repeatable: false,
|
|
1247
|
+
},
|
|
1248
|
+
{
|
|
1249
|
+
name: 'preceded-by-customer-flow-variant-id',
|
|
1250
|
+
path: ['precededByCustomerFlowVariantId'],
|
|
1251
|
+
location: 'body',
|
|
1252
|
+
required: false,
|
|
1253
|
+
valueKind: 'string',
|
|
1254
|
+
repeatable: false,
|
|
1255
|
+
},
|
|
1256
|
+
{
|
|
1257
|
+
name: 'persona-override-id',
|
|
1258
|
+
path: ['personaOverrideId'],
|
|
1259
|
+
location: 'body',
|
|
1260
|
+
required: false,
|
|
1261
|
+
description: "The persona this runs as. Null on an edge case inherits the happy path's.",
|
|
1262
|
+
valueKind: 'string',
|
|
1263
|
+
repeatable: false,
|
|
1264
|
+
},
|
|
1265
|
+
{
|
|
1266
|
+
name: 'additional-expectations',
|
|
1267
|
+
path: ['additionalExpectations'],
|
|
1268
|
+
location: 'body',
|
|
1269
|
+
required: false,
|
|
1270
|
+
description: "Replaces the expectations that apply to this variant on top of the flow's. Omit to leave them alone, send [] to clear. Improv flows only: a scripted variant's expectations come from the agent turns on its path and are rewritten on the next graph edit.",
|
|
1271
|
+
valueKind: 'array',
|
|
1272
|
+
repeatable: false,
|
|
1273
|
+
},
|
|
1274
|
+
],
|
|
1275
|
+
hasParams: true,
|
|
1276
|
+
paramsAllOptional: true,
|
|
1277
|
+
bodyOpaque: false,
|
|
1278
|
+
bodyVariants: [],
|
|
1279
|
+
acceptsBody: true,
|
|
1280
|
+
requiresAuth: true,
|
|
1281
|
+
},
|
|
1282
|
+
{
|
|
1283
|
+
commandPath: ['customer-flow', 'list'],
|
|
1284
|
+
clientProperty: 'customerFlow',
|
|
1285
|
+
methodName: 'list',
|
|
1286
|
+
httpMethod: 'get',
|
|
1287
|
+
httpPath: '/v1/customer-flow',
|
|
1288
|
+
summary: 'List customer flows',
|
|
1289
|
+
description: "Returns a paginated list of customer flows with their agents, expectations, happy path and edge cases. The step graph is the one field omitted: reading it walks the project's whole step graph, so it comes back from the single-flow endpoint instead. Customer flows are how a project describes what to test; they replace the older simulation scenarios.",
|
|
1290
|
+
positionals: [],
|
|
1291
|
+
flags: [
|
|
1292
|
+
{
|
|
1293
|
+
name: 'limit',
|
|
1294
|
+
path: ['limit'],
|
|
1295
|
+
location: 'query',
|
|
1296
|
+
required: false,
|
|
1297
|
+
valueKind: 'integer',
|
|
1298
|
+
repeatable: false,
|
|
1299
|
+
},
|
|
1300
|
+
{
|
|
1301
|
+
name: 'after',
|
|
1302
|
+
path: ['after'],
|
|
1303
|
+
location: 'query',
|
|
1304
|
+
required: false,
|
|
1305
|
+
valueKind: 'string',
|
|
1306
|
+
repeatable: false,
|
|
1307
|
+
},
|
|
1308
|
+
{
|
|
1309
|
+
name: 'search-text',
|
|
1310
|
+
path: ['searchText'],
|
|
1311
|
+
location: 'query',
|
|
1312
|
+
required: false,
|
|
1313
|
+
valueKind: 'string',
|
|
1314
|
+
repeatable: false,
|
|
1315
|
+
},
|
|
1316
|
+
{
|
|
1317
|
+
name: 'type',
|
|
1318
|
+
path: ['type'],
|
|
1319
|
+
location: 'query',
|
|
1320
|
+
required: false,
|
|
1321
|
+
valueKind: 'string',
|
|
1322
|
+
enumValues: ['SCRIPTED', 'IMPROV', 'VOICEMAIL'],
|
|
1323
|
+
repeatable: false,
|
|
1324
|
+
},
|
|
1325
|
+
{
|
|
1326
|
+
name: 'include-system',
|
|
1327
|
+
path: ['includeSystem'],
|
|
1328
|
+
location: 'query',
|
|
1329
|
+
required: false,
|
|
1330
|
+
valueKind: 'string',
|
|
1331
|
+
enumValues: ['true', 'false'],
|
|
1332
|
+
repeatable: false,
|
|
1333
|
+
},
|
|
1334
|
+
],
|
|
1335
|
+
hasParams: true,
|
|
1336
|
+
paramsAllOptional: true,
|
|
1337
|
+
bodyOpaque: false,
|
|
1338
|
+
bodyVariants: [],
|
|
1339
|
+
acceptsBody: false,
|
|
1340
|
+
requiresAuth: true,
|
|
1341
|
+
},
|
|
1342
|
+
{
|
|
1343
|
+
commandPath: ['customer-flow', 'update'],
|
|
1344
|
+
clientProperty: 'customerFlow',
|
|
1345
|
+
methodName: 'update',
|
|
1346
|
+
httpMethod: 'put',
|
|
1347
|
+
httpPath: '/v1/customer-flow/{flowId}',
|
|
1348
|
+
summary: 'Update a customer flow',
|
|
1349
|
+
description: "Updates a flow's title, description, branching mode, linked agents or flow-level expectations. The step graph is replaced through PUT /graph.",
|
|
1350
|
+
positionals: [
|
|
1351
|
+
{
|
|
1352
|
+
name: 'flow-id',
|
|
1353
|
+
paramKey: 'flowId',
|
|
1354
|
+
},
|
|
1355
|
+
],
|
|
1356
|
+
flags: [
|
|
1357
|
+
{
|
|
1358
|
+
name: 'title',
|
|
1359
|
+
path: ['title'],
|
|
1360
|
+
location: 'body',
|
|
1361
|
+
required: false,
|
|
1362
|
+
valueKind: 'string',
|
|
1363
|
+
repeatable: false,
|
|
1364
|
+
},
|
|
1365
|
+
{
|
|
1366
|
+
name: 'description',
|
|
1367
|
+
path: ['description'],
|
|
1368
|
+
location: 'body',
|
|
1369
|
+
required: false,
|
|
1370
|
+
valueKind: 'string',
|
|
1371
|
+
repeatable: false,
|
|
1372
|
+
},
|
|
1373
|
+
{
|
|
1374
|
+
name: 'branching-mode',
|
|
1375
|
+
path: ['branchingMode'],
|
|
1376
|
+
location: 'body',
|
|
1377
|
+
required: false,
|
|
1378
|
+
description: 'Scripted flows only.',
|
|
1379
|
+
valueKind: 'string',
|
|
1380
|
+
enumValues: ['DETERMINISTIC', 'ADAPTIVE'],
|
|
1381
|
+
repeatable: false,
|
|
1382
|
+
},
|
|
1383
|
+
{
|
|
1384
|
+
name: 'agent-ids',
|
|
1385
|
+
path: ['agentIds'],
|
|
1386
|
+
location: 'body',
|
|
1387
|
+
required: false,
|
|
1388
|
+
description: 'Replaces the linked agents. Omit to leave them unchanged. An improv flow must keep at least one; a scripted flow can be left with none.',
|
|
1389
|
+
valueKind: 'array',
|
|
1390
|
+
repeatable: true,
|
|
1391
|
+
},
|
|
1392
|
+
{
|
|
1393
|
+
name: 'agent-expectations',
|
|
1394
|
+
path: ['agentExpectations'],
|
|
1395
|
+
location: 'body',
|
|
1396
|
+
required: false,
|
|
1397
|
+
description: 'Replaces the flow-level expectations. Omit to leave them unchanged.',
|
|
1398
|
+
valueKind: 'array',
|
|
1399
|
+
repeatable: false,
|
|
1400
|
+
},
|
|
1401
|
+
],
|
|
1402
|
+
hasParams: true,
|
|
1403
|
+
paramsAllOptional: true,
|
|
1404
|
+
bodyOpaque: false,
|
|
1405
|
+
bodyVariants: [],
|
|
1406
|
+
acceptsBody: true,
|
|
1407
|
+
requiresAuth: true,
|
|
1408
|
+
},
|
|
1409
|
+
{
|
|
1410
|
+
commandPath: ['health'],
|
|
1411
|
+
clientProperty: 'health',
|
|
1412
|
+
methodName: 'get',
|
|
1413
|
+
httpMethod: 'get',
|
|
1414
|
+
httpPath: '/health',
|
|
1415
|
+
summary: 'Get API health status',
|
|
1416
|
+
description: 'Returns the health status of the API and its dependencies',
|
|
1417
|
+
positionals: [],
|
|
1418
|
+
flags: [],
|
|
1419
|
+
hasParams: false,
|
|
1420
|
+
paramsAllOptional: true,
|
|
1421
|
+
bodyOpaque: false,
|
|
1422
|
+
bodyVariants: [],
|
|
1423
|
+
acceptsBody: false,
|
|
1424
|
+
requiresAuth: true,
|
|
1425
|
+
},
|
|
1426
|
+
{
|
|
1427
|
+
commandPath: ['http-request-definition', 'create'],
|
|
1428
|
+
clientProperty: 'httpRequestDefinition',
|
|
1429
|
+
methodName: 'create',
|
|
1430
|
+
httpMethod: 'post',
|
|
1431
|
+
httpPath: '/v1/http-request-definition',
|
|
1432
|
+
summary: 'Create HTTP request definition',
|
|
1433
|
+
description: 'Creates a new HTTP request definition. The signing secret is only returned in this response and cannot be retrieved later.',
|
|
1434
|
+
positionals: [],
|
|
1435
|
+
flags: [
|
|
1436
|
+
{
|
|
1437
|
+
name: 'scope',
|
|
1438
|
+
path: ['scope'],
|
|
1439
|
+
location: 'body',
|
|
1440
|
+
required: true,
|
|
1441
|
+
description: 'Scope: AGENT_OUTBOUND_DIAL',
|
|
1442
|
+
valueKind: 'string',
|
|
1443
|
+
enumValues: ['AGENT_OUTBOUND_DIAL'],
|
|
1444
|
+
repeatable: false,
|
|
1445
|
+
},
|
|
1446
|
+
{
|
|
1447
|
+
name: 'url',
|
|
1448
|
+
path: ['url'],
|
|
1449
|
+
location: 'body',
|
|
1450
|
+
required: true,
|
|
1451
|
+
description: 'URL for the HTTP request',
|
|
1452
|
+
valueKind: 'string',
|
|
1453
|
+
repeatable: false,
|
|
1454
|
+
},
|
|
1455
|
+
{
|
|
1456
|
+
name: 'description',
|
|
1457
|
+
path: ['description'],
|
|
1458
|
+
location: 'body',
|
|
1459
|
+
required: false,
|
|
1460
|
+
description: 'Description of the HTTP request definition',
|
|
1461
|
+
valueKind: 'string',
|
|
1462
|
+
repeatable: false,
|
|
1463
|
+
},
|
|
1464
|
+
{
|
|
1465
|
+
name: 'method',
|
|
1466
|
+
path: ['method'],
|
|
1467
|
+
location: 'body',
|
|
1468
|
+
required: false,
|
|
1469
|
+
description: 'HTTP method (default: POST)',
|
|
1470
|
+
valueKind: 'string',
|
|
1471
|
+
enumValues: ['POST', 'PUT', 'PATCH', 'GET'],
|
|
1472
|
+
repeatable: false,
|
|
1473
|
+
},
|
|
1474
|
+
{
|
|
1475
|
+
name: 'body',
|
|
1476
|
+
path: ['body'],
|
|
1477
|
+
location: 'body',
|
|
1478
|
+
required: false,
|
|
1479
|
+
description: 'Request body template. Accepts a JSON object or a string with placeholders like {{phoneNumberToDial}}. Objects are serialized to JSON for storage.',
|
|
1480
|
+
valueKind: 'string',
|
|
1481
|
+
repeatable: false,
|
|
1482
|
+
},
|
|
1483
|
+
{
|
|
1484
|
+
name: 'headers',
|
|
1485
|
+
path: ['headers'],
|
|
1486
|
+
location: 'body',
|
|
1487
|
+
required: false,
|
|
1488
|
+
description: 'Request headers as key-value pairs',
|
|
1489
|
+
valueKind: 'object',
|
|
1490
|
+
repeatable: false,
|
|
1491
|
+
},
|
|
1492
|
+
],
|
|
1493
|
+
hasParams: true,
|
|
1494
|
+
paramsAllOptional: false,
|
|
1495
|
+
bodyOpaque: false,
|
|
1496
|
+
bodyVariants: [],
|
|
1497
|
+
acceptsBody: true,
|
|
1498
|
+
requiresAuth: true,
|
|
1499
|
+
},
|
|
1500
|
+
{
|
|
1501
|
+
commandPath: ['http-request-definition', 'get'],
|
|
1502
|
+
clientProperty: 'httpRequestDefinition',
|
|
1503
|
+
methodName: 'getByID',
|
|
1504
|
+
httpMethod: 'get',
|
|
1505
|
+
httpPath: '/v1/http-request-definition/{definitionId}',
|
|
1506
|
+
summary: 'Get HTTP request definition by ID',
|
|
1507
|
+
description: 'Returns a specific HTTP request definition by its ID.',
|
|
1508
|
+
positionals: [
|
|
1509
|
+
{
|
|
1510
|
+
name: 'definition-id',
|
|
1511
|
+
paramKey: 'definitionId',
|
|
1512
|
+
description: 'The ID of the HTTP request definition to retrieve',
|
|
1513
|
+
},
|
|
1514
|
+
],
|
|
1515
|
+
flags: [],
|
|
1516
|
+
hasParams: false,
|
|
1517
|
+
paramsAllOptional: true,
|
|
1518
|
+
bodyOpaque: false,
|
|
1519
|
+
bodyVariants: [],
|
|
1520
|
+
acceptsBody: false,
|
|
1521
|
+
requiresAuth: true,
|
|
1522
|
+
},
|
|
1523
|
+
{
|
|
1524
|
+
commandPath: ['http-request-definition', 'list'],
|
|
1525
|
+
clientProperty: 'httpRequestDefinition',
|
|
1526
|
+
methodName: 'list',
|
|
1527
|
+
httpMethod: 'get',
|
|
1528
|
+
httpPath: '/v1/http-request-definition',
|
|
1529
|
+
summary: 'List HTTP request definitions',
|
|
1530
|
+
description: 'Returns a paginated list of HTTP request definitions for the authenticated project.',
|
|
1531
|
+
positionals: [],
|
|
1532
|
+
flags: [
|
|
1533
|
+
{
|
|
1534
|
+
name: 'limit',
|
|
1535
|
+
path: ['limit'],
|
|
1536
|
+
location: 'query',
|
|
1537
|
+
required: false,
|
|
1538
|
+
description: 'Maximum number of definitions to return (default: 20, max: 50)',
|
|
1539
|
+
valueKind: 'integer',
|
|
1540
|
+
repeatable: false,
|
|
1541
|
+
},
|
|
1542
|
+
{
|
|
1543
|
+
name: 'after',
|
|
1544
|
+
path: ['after'],
|
|
1545
|
+
location: 'query',
|
|
1546
|
+
required: false,
|
|
1547
|
+
description: 'Cursor for pagination - definition ID to start after',
|
|
1548
|
+
valueKind: 'string',
|
|
1549
|
+
repeatable: false,
|
|
1550
|
+
},
|
|
1551
|
+
],
|
|
1552
|
+
hasParams: true,
|
|
1553
|
+
paramsAllOptional: true,
|
|
1554
|
+
bodyOpaque: false,
|
|
1555
|
+
bodyVariants: [],
|
|
1556
|
+
acceptsBody: false,
|
|
1557
|
+
requiresAuth: true,
|
|
1558
|
+
},
|
|
1559
|
+
{
|
|
1560
|
+
commandPath: ['http-request-definition', 'update'],
|
|
1561
|
+
clientProperty: 'httpRequestDefinition',
|
|
1562
|
+
methodName: 'update',
|
|
1563
|
+
httpMethod: 'put',
|
|
1564
|
+
httpPath: '/v1/http-request-definition/{definitionId}',
|
|
1565
|
+
summary: 'Update HTTP request definition',
|
|
1566
|
+
description: 'Updates an existing HTTP request definition.',
|
|
1567
|
+
positionals: [
|
|
1568
|
+
{
|
|
1569
|
+
name: 'definition-id',
|
|
1570
|
+
paramKey: 'definitionId',
|
|
1571
|
+
description: 'The ID of the HTTP request definition to update',
|
|
1572
|
+
},
|
|
1573
|
+
],
|
|
1574
|
+
flags: [
|
|
1575
|
+
{
|
|
1576
|
+
name: 'url',
|
|
1577
|
+
path: ['url'],
|
|
1578
|
+
location: 'body',
|
|
1579
|
+
required: false,
|
|
1580
|
+
description: 'URL for the HTTP request',
|
|
1581
|
+
valueKind: 'string',
|
|
1582
|
+
repeatable: false,
|
|
1583
|
+
},
|
|
1584
|
+
{
|
|
1585
|
+
name: 'description',
|
|
1586
|
+
path: ['description'],
|
|
1587
|
+
location: 'body',
|
|
1588
|
+
required: false,
|
|
1589
|
+
description: 'Description of the HTTP request definition',
|
|
1590
|
+
valueKind: 'string',
|
|
1591
|
+
repeatable: false,
|
|
1592
|
+
},
|
|
1593
|
+
{
|
|
1594
|
+
name: 'method',
|
|
1595
|
+
path: ['method'],
|
|
1596
|
+
location: 'body',
|
|
1597
|
+
required: false,
|
|
1598
|
+
description: 'HTTP method: POST, PUT, PATCH, or GET',
|
|
1599
|
+
valueKind: 'string',
|
|
1600
|
+
enumValues: ['POST', 'PUT', 'PATCH', 'GET'],
|
|
1601
|
+
repeatable: false,
|
|
1602
|
+
},
|
|
1603
|
+
{
|
|
1604
|
+
name: 'body',
|
|
1605
|
+
path: ['body'],
|
|
1606
|
+
location: 'body',
|
|
1607
|
+
required: false,
|
|
1608
|
+
description: 'Request body template. Accepts a JSON object or a string with placeholders like {{phoneNumberToDial}}. Objects are serialized to JSON for storage.',
|
|
1609
|
+
valueKind: 'string',
|
|
1610
|
+
repeatable: false,
|
|
1611
|
+
},
|
|
1612
|
+
{
|
|
1613
|
+
name: 'headers',
|
|
1614
|
+
path: ['headers'],
|
|
1615
|
+
location: 'body',
|
|
1616
|
+
required: false,
|
|
1617
|
+
description: 'Request headers as key-value pairs',
|
|
1618
|
+
valueKind: 'object',
|
|
1619
|
+
repeatable: false,
|
|
1620
|
+
},
|
|
1621
|
+
],
|
|
1622
|
+
hasParams: true,
|
|
1623
|
+
paramsAllOptional: true,
|
|
1624
|
+
bodyOpaque: false,
|
|
1625
|
+
bodyVariants: [],
|
|
1626
|
+
acceptsBody: true,
|
|
1627
|
+
requiresAuth: true,
|
|
1628
|
+
},
|
|
1629
|
+
{
|
|
1630
|
+
commandPath: ['metric', 'collection-job', 'create'],
|
|
1631
|
+
clientProperty: 'metricCollectionJob',
|
|
1632
|
+
methodName: 'create',
|
|
1633
|
+
httpMethod: 'post',
|
|
1634
|
+
httpPath: '/v1/metric/collection-jobs',
|
|
1635
|
+
summary: 'Create and run a metric collection job',
|
|
1636
|
+
description: 'Creates a metric collection job for the specified calls or chats and metrics, then triggers processing. Provide exactly one of callIds or chatIds.',
|
|
1637
|
+
positionals: [],
|
|
1638
|
+
flags: [
|
|
1639
|
+
{
|
|
1640
|
+
name: 'call-ids',
|
|
1641
|
+
path: ['callIds'],
|
|
1642
|
+
location: 'body',
|
|
1643
|
+
required: false,
|
|
1644
|
+
description: 'Call IDs to collect metrics for. Mutually exclusive with chatIds. Max 500 per request.',
|
|
1645
|
+
valueKind: 'array',
|
|
1646
|
+
repeatable: true,
|
|
1647
|
+
},
|
|
1648
|
+
{
|
|
1649
|
+
name: 'chat-ids',
|
|
1650
|
+
path: ['chatIds'],
|
|
1651
|
+
location: 'body',
|
|
1652
|
+
required: false,
|
|
1653
|
+
description: 'Chat IDs to collect metrics for. Mutually exclusive with callIds. Max 500 per request.',
|
|
1654
|
+
valueKind: 'array',
|
|
1655
|
+
repeatable: true,
|
|
1656
|
+
},
|
|
1657
|
+
{
|
|
1658
|
+
name: 'metrics',
|
|
1659
|
+
path: ['metrics'],
|
|
1660
|
+
location: 'body',
|
|
1661
|
+
required: true,
|
|
1662
|
+
description: 'Metric definitions to collect. Max 20 per request.',
|
|
1663
|
+
valueKind: 'array',
|
|
1664
|
+
repeatable: false,
|
|
1665
|
+
},
|
|
1666
|
+
],
|
|
1667
|
+
hasParams: true,
|
|
1668
|
+
paramsAllOptional: false,
|
|
1669
|
+
bodyOpaque: false,
|
|
1670
|
+
bodyVariants: [],
|
|
1671
|
+
acceptsBody: true,
|
|
1672
|
+
requiresAuth: true,
|
|
1673
|
+
},
|
|
1674
|
+
{
|
|
1675
|
+
commandPath: ['metric', 'collection-job', 'get'],
|
|
1676
|
+
clientProperty: 'metricCollectionJob',
|
|
1677
|
+
methodName: 'getByID',
|
|
1678
|
+
httpMethod: 'get',
|
|
1679
|
+
httpPath: '/v1/metric/collection-jobs/{jobId}',
|
|
1680
|
+
summary: 'Get metric collection job by ID',
|
|
1681
|
+
description: 'Returns a specific metric collection job with progress information.',
|
|
1682
|
+
positionals: [
|
|
1683
|
+
{
|
|
1684
|
+
name: 'job-id',
|
|
1685
|
+
paramKey: 'jobId',
|
|
1686
|
+
description: 'The ID of the metric collection job to retrieve',
|
|
1687
|
+
},
|
|
1688
|
+
],
|
|
1689
|
+
flags: [],
|
|
1690
|
+
hasParams: false,
|
|
1691
|
+
paramsAllOptional: true,
|
|
1692
|
+
bodyOpaque: false,
|
|
1693
|
+
bodyVariants: [],
|
|
1694
|
+
acceptsBody: false,
|
|
1695
|
+
requiresAuth: true,
|
|
1696
|
+
},
|
|
1697
|
+
{
|
|
1698
|
+
commandPath: ['metric', 'collection-job', 'list'],
|
|
1699
|
+
clientProperty: 'metricCollectionJob',
|
|
1700
|
+
methodName: 'list',
|
|
1701
|
+
httpMethod: 'get',
|
|
1702
|
+
httpPath: '/v1/metric/collection-jobs',
|
|
1703
|
+
summary: 'List metric collection jobs',
|
|
1704
|
+
description: 'Returns a paginated list of metric collection jobs for the project.',
|
|
1705
|
+
positionals: [],
|
|
1706
|
+
flags: [
|
|
1707
|
+
{
|
|
1708
|
+
name: 'limit',
|
|
1709
|
+
path: ['limit'],
|
|
1710
|
+
location: 'query',
|
|
1711
|
+
required: false,
|
|
1712
|
+
description: 'Maximum number of jobs to return (default: 20, max: 50)',
|
|
1713
|
+
valueKind: 'integer',
|
|
1714
|
+
repeatable: false,
|
|
1715
|
+
},
|
|
1716
|
+
{
|
|
1717
|
+
name: 'after',
|
|
1718
|
+
path: ['after'],
|
|
1719
|
+
location: 'query',
|
|
1720
|
+
required: false,
|
|
1721
|
+
description: 'Cursor for pagination - use the nextCursor value from a previous response',
|
|
1722
|
+
valueKind: 'string',
|
|
1723
|
+
repeatable: false,
|
|
1724
|
+
},
|
|
1725
|
+
{
|
|
1726
|
+
name: 'status',
|
|
1727
|
+
path: ['status'],
|
|
1728
|
+
location: 'query',
|
|
1729
|
+
required: false,
|
|
1730
|
+
description: 'Filter by job status',
|
|
1731
|
+
valueKind: 'string',
|
|
1732
|
+
enumValues: ['PENDING', 'PROCESSING', 'COMPLETED', 'FAILED', 'CANCELED'],
|
|
1733
|
+
repeatable: false,
|
|
1734
|
+
},
|
|
1735
|
+
],
|
|
1736
|
+
hasParams: true,
|
|
1737
|
+
paramsAllOptional: true,
|
|
1738
|
+
bodyOpaque: false,
|
|
1739
|
+
bodyVariants: [],
|
|
1740
|
+
acceptsBody: false,
|
|
1741
|
+
requiresAuth: true,
|
|
1742
|
+
},
|
|
1743
|
+
{
|
|
1744
|
+
commandPath: ['metric', 'definition', 'create'],
|
|
1745
|
+
clientProperty: 'metric',
|
|
1746
|
+
methodName: 'createDefinition',
|
|
1747
|
+
httpMethod: 'post',
|
|
1748
|
+
httpPath: '/v1/metric/definitions',
|
|
1749
|
+
summary: 'Create custom metric definition',
|
|
1750
|
+
description: 'Create a new metric definition. The `calculationType` field selects the variant: LLM_JUDGE (LLM-evaluated), FORMULA (computed from a math expression over other metrics), or PATTERN (detects a trigger→outcome pattern within a window). To create a threshold on top of an existing metric, use `POST /metric/definitions/{idOrSlug}/thresholds` instead.',
|
|
1751
|
+
positionals: [],
|
|
1752
|
+
flags: [],
|
|
1753
|
+
hasParams: true,
|
|
1754
|
+
paramsAllOptional: false,
|
|
1755
|
+
bodyOpaque: true,
|
|
1756
|
+
bodyVariants: [
|
|
1757
|
+
{
|
|
1758
|
+
name: 'PromptMetricInput',
|
|
1759
|
+
required: ['calculationType', 'name', 'outputType', 'analysisPackageId'],
|
|
1760
|
+
},
|
|
1761
|
+
{
|
|
1762
|
+
name: 'FormulaMetricInput',
|
|
1763
|
+
required: ['calculationType', 'name', 'outputType', 'formula', 'sources', 'analysisPackageId'],
|
|
1764
|
+
},
|
|
1765
|
+
{
|
|
1766
|
+
name: 'PatternMetricInput',
|
|
1767
|
+
required: ['calculationType', 'name', 'operation', 'outcome', 'analysisPackageId'],
|
|
1768
|
+
},
|
|
1769
|
+
],
|
|
1770
|
+
acceptsBody: true,
|
|
1771
|
+
requiresAuth: true,
|
|
1772
|
+
},
|
|
1773
|
+
{
|
|
1774
|
+
commandPath: ['metric', 'definition', 'list'],
|
|
1775
|
+
clientProperty: 'metric',
|
|
1776
|
+
methodName: 'listDefinitions',
|
|
1777
|
+
httpMethod: 'get',
|
|
1778
|
+
httpPath: '/v1/metric/definitions',
|
|
1779
|
+
summary: 'List metric definitions',
|
|
1780
|
+
description: 'Fetch all metric definitions available in the project, including both system-generated and custom metrics.',
|
|
1781
|
+
positionals: [],
|
|
1782
|
+
flags: [],
|
|
1783
|
+
hasParams: false,
|
|
1784
|
+
paramsAllOptional: true,
|
|
1785
|
+
bodyOpaque: false,
|
|
1786
|
+
bodyVariants: [],
|
|
1787
|
+
acceptsBody: false,
|
|
1788
|
+
requiresAuth: true,
|
|
1789
|
+
},
|
|
1790
|
+
{
|
|
1791
|
+
commandPath: ['metric', 'policy', 'create'],
|
|
1792
|
+
clientProperty: 'metricPolicy',
|
|
1793
|
+
methodName: 'create',
|
|
1794
|
+
httpMethod: 'post',
|
|
1795
|
+
httpPath: '/v1/metric/policies',
|
|
1796
|
+
summary: 'Create a metric policy',
|
|
1797
|
+
description: 'Creates a new metric policy. Policies define which metrics to collect and under what conditions.',
|
|
1798
|
+
positionals: [],
|
|
1799
|
+
flags: [
|
|
1800
|
+
{
|
|
1801
|
+
name: 'name',
|
|
1802
|
+
path: ['name'],
|
|
1803
|
+
location: 'body',
|
|
1804
|
+
required: true,
|
|
1805
|
+
description: 'Name of the metric policy',
|
|
1806
|
+
valueKind: 'string',
|
|
1807
|
+
repeatable: false,
|
|
1808
|
+
},
|
|
1809
|
+
{
|
|
1810
|
+
name: 'status',
|
|
1811
|
+
path: ['status'],
|
|
1812
|
+
location: 'body',
|
|
1813
|
+
required: false,
|
|
1814
|
+
description: 'Status of the policy (default: ACTIVE)',
|
|
1815
|
+
valueKind: 'string',
|
|
1816
|
+
enumValues: ['ACTIVE', 'INACTIVE'],
|
|
1817
|
+
repeatable: false,
|
|
1818
|
+
},
|
|
1819
|
+
{
|
|
1820
|
+
name: 'modality',
|
|
1821
|
+
path: ['modality'],
|
|
1822
|
+
location: 'body',
|
|
1823
|
+
required: true,
|
|
1824
|
+
description: 'Modality this policy targets. A policy fires for exactly one modality and can only reference metrics that support that modality.',
|
|
1825
|
+
valueKind: 'string',
|
|
1826
|
+
enumValues: ['call', 'chat'],
|
|
1827
|
+
repeatable: false,
|
|
1828
|
+
},
|
|
1829
|
+
{
|
|
1830
|
+
name: 'conditions',
|
|
1831
|
+
path: ['conditions'],
|
|
1832
|
+
location: 'body',
|
|
1833
|
+
required: false,
|
|
1834
|
+
description: 'Condition groups. Omit to match all calls.',
|
|
1835
|
+
valueKind: 'array',
|
|
1836
|
+
repeatable: false,
|
|
1837
|
+
},
|
|
1838
|
+
{
|
|
1839
|
+
name: 'metrics',
|
|
1840
|
+
path: ['metrics'],
|
|
1841
|
+
location: 'body',
|
|
1842
|
+
required: true,
|
|
1843
|
+
description: 'Metric definitions to collect when this policy matches',
|
|
1844
|
+
valueKind: 'array',
|
|
1845
|
+
repeatable: false,
|
|
1846
|
+
},
|
|
1847
|
+
],
|
|
1848
|
+
hasParams: true,
|
|
1849
|
+
paramsAllOptional: false,
|
|
1850
|
+
bodyOpaque: false,
|
|
1851
|
+
bodyVariants: [],
|
|
1852
|
+
acceptsBody: true,
|
|
1853
|
+
requiresAuth: true,
|
|
1854
|
+
},
|
|
1855
|
+
{
|
|
1856
|
+
commandPath: ['metric', 'policy', 'delete'],
|
|
1857
|
+
clientProperty: 'metricPolicy',
|
|
1858
|
+
methodName: 'delete',
|
|
1859
|
+
httpMethod: 'delete',
|
|
1860
|
+
httpPath: '/v1/metric/policies/{policyId}',
|
|
1861
|
+
summary: 'Delete a metric policy',
|
|
1862
|
+
description: 'Soft-deletes a metric policy. System policies cannot be deleted.',
|
|
1863
|
+
positionals: [
|
|
1864
|
+
{
|
|
1865
|
+
name: 'policy-id',
|
|
1866
|
+
paramKey: 'policyId',
|
|
1867
|
+
description: 'The ID of the metric policy to delete',
|
|
1868
|
+
},
|
|
1869
|
+
],
|
|
1870
|
+
flags: [],
|
|
1871
|
+
hasParams: false,
|
|
1872
|
+
paramsAllOptional: true,
|
|
1873
|
+
bodyOpaque: false,
|
|
1874
|
+
bodyVariants: [],
|
|
1875
|
+
acceptsBody: false,
|
|
1876
|
+
requiresAuth: true,
|
|
1877
|
+
},
|
|
1878
|
+
{
|
|
1879
|
+
commandPath: ['metric', 'policy', 'get'],
|
|
1880
|
+
clientProperty: 'metricPolicy',
|
|
1881
|
+
methodName: 'getByID',
|
|
1882
|
+
httpMethod: 'get',
|
|
1883
|
+
httpPath: '/v1/metric/policies/{policyId}',
|
|
1884
|
+
summary: 'Get metric policy by ID',
|
|
1885
|
+
description: 'Returns a specific metric policy with its conditions and metrics.',
|
|
1886
|
+
positionals: [
|
|
1887
|
+
{
|
|
1888
|
+
name: 'policy-id',
|
|
1889
|
+
paramKey: 'policyId',
|
|
1890
|
+
description: 'The ID of the metric policy to retrieve',
|
|
1891
|
+
},
|
|
1892
|
+
],
|
|
1893
|
+
flags: [],
|
|
1894
|
+
hasParams: false,
|
|
1895
|
+
paramsAllOptional: true,
|
|
1896
|
+
bodyOpaque: false,
|
|
1897
|
+
bodyVariants: [],
|
|
1898
|
+
acceptsBody: false,
|
|
1899
|
+
requiresAuth: true,
|
|
1900
|
+
},
|
|
1901
|
+
{
|
|
1902
|
+
commandPath: ['metric', 'policy', 'list'],
|
|
1903
|
+
clientProperty: 'metricPolicy',
|
|
1904
|
+
methodName: 'list',
|
|
1905
|
+
httpMethod: 'get',
|
|
1906
|
+
httpPath: '/v1/metric/policies',
|
|
1907
|
+
summary: 'List metric policies',
|
|
1908
|
+
description: 'Returns a paginated list of metric policies for the project, including system policies.',
|
|
1909
|
+
positionals: [],
|
|
1910
|
+
flags: [
|
|
1911
|
+
{
|
|
1912
|
+
name: 'limit',
|
|
1913
|
+
path: ['limit'],
|
|
1914
|
+
location: 'query',
|
|
1915
|
+
required: false,
|
|
1916
|
+
description: 'Maximum number of policies to return (default: 20, max: 50)',
|
|
1917
|
+
valueKind: 'integer',
|
|
1918
|
+
repeatable: false,
|
|
1919
|
+
},
|
|
1920
|
+
{
|
|
1921
|
+
name: 'after',
|
|
1922
|
+
path: ['after'],
|
|
1923
|
+
location: 'query',
|
|
1924
|
+
required: false,
|
|
1925
|
+
description: 'Cursor for pagination - use the nextCursor value from a previous response',
|
|
1926
|
+
valueKind: 'string',
|
|
1927
|
+
repeatable: false,
|
|
1928
|
+
},
|
|
1929
|
+
{
|
|
1930
|
+
name: 'status',
|
|
1931
|
+
path: ['status'],
|
|
1932
|
+
location: 'query',
|
|
1933
|
+
required: false,
|
|
1934
|
+
description: 'Filter by policy status',
|
|
1935
|
+
valueKind: 'string',
|
|
1936
|
+
enumValues: ['ACTIVE', 'INACTIVE'],
|
|
1937
|
+
repeatable: false,
|
|
1938
|
+
},
|
|
1939
|
+
],
|
|
1940
|
+
hasParams: true,
|
|
1941
|
+
paramsAllOptional: true,
|
|
1942
|
+
bodyOpaque: false,
|
|
1943
|
+
bodyVariants: [],
|
|
1944
|
+
acceptsBody: false,
|
|
1945
|
+
requiresAuth: true,
|
|
1946
|
+
},
|
|
1947
|
+
{
|
|
1948
|
+
commandPath: ['metric', 'policy', 'update'],
|
|
1949
|
+
clientProperty: 'metricPolicy',
|
|
1950
|
+
methodName: 'update',
|
|
1951
|
+
httpMethod: 'put',
|
|
1952
|
+
httpPath: '/v1/metric/policies/{policyId}',
|
|
1953
|
+
summary: 'Update a metric policy',
|
|
1954
|
+
description: 'Updates an existing metric policy. System policies cannot be modified.',
|
|
1955
|
+
positionals: [
|
|
1956
|
+
{
|
|
1957
|
+
name: 'policy-id',
|
|
1958
|
+
paramKey: 'policyId',
|
|
1959
|
+
description: 'The ID of the metric policy to update',
|
|
1960
|
+
},
|
|
1961
|
+
],
|
|
1962
|
+
flags: [
|
|
1963
|
+
{
|
|
1964
|
+
name: 'name',
|
|
1965
|
+
path: ['name'],
|
|
1966
|
+
location: 'body',
|
|
1967
|
+
required: false,
|
|
1968
|
+
description: 'Name of the metric policy',
|
|
1969
|
+
valueKind: 'string',
|
|
1970
|
+
repeatable: false,
|
|
1971
|
+
},
|
|
1972
|
+
{
|
|
1973
|
+
name: 'status',
|
|
1974
|
+
path: ['status'],
|
|
1975
|
+
location: 'body',
|
|
1976
|
+
required: false,
|
|
1977
|
+
description: 'Status of the policy',
|
|
1978
|
+
valueKind: 'string',
|
|
1979
|
+
enumValues: ['ACTIVE', 'INACTIVE'],
|
|
1980
|
+
repeatable: false,
|
|
1981
|
+
},
|
|
1982
|
+
{
|
|
1983
|
+
name: 'conditions',
|
|
1984
|
+
path: ['conditions'],
|
|
1985
|
+
location: 'body',
|
|
1986
|
+
required: false,
|
|
1987
|
+
description: 'Condition groups. Omit to keep existing, provide empty array to remove all conditions.',
|
|
1988
|
+
valueKind: 'array',
|
|
1989
|
+
repeatable: false,
|
|
1990
|
+
},
|
|
1991
|
+
{
|
|
1992
|
+
name: 'metrics',
|
|
1993
|
+
path: ['metrics'],
|
|
1994
|
+
location: 'body',
|
|
1995
|
+
required: false,
|
|
1996
|
+
description: 'Metric definitions to collect when this policy matches',
|
|
1997
|
+
valueKind: 'array',
|
|
1998
|
+
repeatable: false,
|
|
1999
|
+
},
|
|
2000
|
+
],
|
|
2001
|
+
hasParams: true,
|
|
2002
|
+
paramsAllOptional: true,
|
|
2003
|
+
bodyOpaque: false,
|
|
2004
|
+
bodyVariants: [],
|
|
2005
|
+
acceptsBody: true,
|
|
2006
|
+
requiresAuth: true,
|
|
2007
|
+
},
|
|
2008
|
+
{
|
|
2009
|
+
commandPath: ['simulation', 'environment', 'get'],
|
|
2010
|
+
clientProperty: 'simulationEnvironment',
|
|
2011
|
+
methodName: 'getByID',
|
|
2012
|
+
httpMethod: 'get',
|
|
2013
|
+
httpPath: '/v1/simulation/environment/{environmentId}',
|
|
2014
|
+
summary: 'Get environment by ID',
|
|
2015
|
+
description: 'Returns a single environment by its ID.',
|
|
2016
|
+
positionals: [
|
|
2017
|
+
{
|
|
2018
|
+
name: 'environment-id',
|
|
2019
|
+
paramKey: 'environmentId',
|
|
2020
|
+
},
|
|
2021
|
+
],
|
|
2022
|
+
flags: [],
|
|
2023
|
+
hasParams: false,
|
|
2024
|
+
paramsAllOptional: true,
|
|
2025
|
+
bodyOpaque: false,
|
|
2026
|
+
bodyVariants: [],
|
|
2027
|
+
acceptsBody: false,
|
|
2028
|
+
requiresAuth: true,
|
|
2029
|
+
},
|
|
2030
|
+
{
|
|
2031
|
+
commandPath: ['simulation', 'environment', 'list'],
|
|
2032
|
+
clientProperty: 'simulationEnvironment',
|
|
2033
|
+
methodName: 'list',
|
|
2034
|
+
httpMethod: 'get',
|
|
2035
|
+
httpPath: '/v1/simulation/environment',
|
|
2036
|
+
summary: 'List environments',
|
|
2037
|
+
description: "Returns a paginated list of environments: the project's own plus the environments Roark curates and shares across every project. Reference one by id when setting a customer flow variant's environment.",
|
|
2038
|
+
positionals: [],
|
|
2039
|
+
flags: [
|
|
2040
|
+
{
|
|
2041
|
+
name: 'limit',
|
|
2042
|
+
path: ['limit'],
|
|
2043
|
+
location: 'query',
|
|
2044
|
+
required: false,
|
|
2045
|
+
valueKind: 'integer',
|
|
2046
|
+
repeatable: false,
|
|
2047
|
+
},
|
|
2048
|
+
{
|
|
2049
|
+
name: 'after',
|
|
2050
|
+
path: ['after'],
|
|
2051
|
+
location: 'query',
|
|
2052
|
+
required: false,
|
|
2053
|
+
valueKind: 'string',
|
|
2054
|
+
repeatable: false,
|
|
2055
|
+
},
|
|
2056
|
+
],
|
|
2057
|
+
hasParams: true,
|
|
2058
|
+
paramsAllOptional: true,
|
|
2059
|
+
bodyOpaque: false,
|
|
2060
|
+
bodyVariants: [],
|
|
2061
|
+
acceptsBody: false,
|
|
2062
|
+
requiresAuth: true,
|
|
2063
|
+
},
|
|
2064
|
+
{
|
|
2065
|
+
commandPath: ['simulation', 'job', 'get'],
|
|
2066
|
+
clientProperty: 'simulationJob',
|
|
2067
|
+
methodName: 'getByID',
|
|
2068
|
+
httpMethod: 'get',
|
|
2069
|
+
httpPath: '/v1/simulation/job/{jobId}',
|
|
2070
|
+
summary: 'Get simulation by ID',
|
|
2071
|
+
description: 'Get a individual simulation run directly by its ID. This is generally part of a larger simulation run plan job.',
|
|
2072
|
+
positionals: [
|
|
2073
|
+
{
|
|
2074
|
+
name: 'job-id',
|
|
2075
|
+
paramKey: 'jobId',
|
|
2076
|
+
description: 'Simulation job ID',
|
|
2077
|
+
},
|
|
2078
|
+
],
|
|
2079
|
+
flags: [],
|
|
2080
|
+
hasParams: false,
|
|
2081
|
+
paramsAllOptional: true,
|
|
2082
|
+
bodyOpaque: false,
|
|
2083
|
+
bodyVariants: [],
|
|
2084
|
+
acceptsBody: false,
|
|
2085
|
+
requiresAuth: true,
|
|
2086
|
+
},
|
|
2087
|
+
{
|
|
2088
|
+
commandPath: ['simulation', 'job', 'lookup'],
|
|
2089
|
+
clientProperty: 'simulationJob',
|
|
2090
|
+
methodName: 'lookup',
|
|
2091
|
+
httpMethod: 'get',
|
|
2092
|
+
httpPath: '/v1/simulation/job/lookup',
|
|
2093
|
+
summary: 'Lookup by phone number',
|
|
2094
|
+
description: 'Find the matching simulation using the number used by the Roark simulation agent.',
|
|
2095
|
+
positionals: [],
|
|
2096
|
+
flags: [
|
|
2097
|
+
{
|
|
2098
|
+
name: 'roark-phone-number',
|
|
2099
|
+
path: ['roarkPhoneNumber'],
|
|
2100
|
+
location: 'query',
|
|
2101
|
+
required: true,
|
|
2102
|
+
description: 'Phone number provisioned by Roark for the simulation job in E.164 format. In the case of an inbound simulation, this is the number that calls your agent; in the case of an outbound simulation, this is the number you call from your agent.',
|
|
2103
|
+
valueKind: 'string',
|
|
2104
|
+
repeatable: false,
|
|
2105
|
+
},
|
|
2106
|
+
{
|
|
2107
|
+
name: 'call-received-at',
|
|
2108
|
+
path: ['callReceivedAt'],
|
|
2109
|
+
location: 'query',
|
|
2110
|
+
required: false,
|
|
2111
|
+
description: 'ISO 8601 timestamp of when the call was received. Alternatively, any time between the start and end of the call is valid. Defaults to the current time, which fetches any jobs that are currently ongoing.',
|
|
2112
|
+
valueKind: 'string',
|
|
2113
|
+
repeatable: false,
|
|
2114
|
+
},
|
|
2115
|
+
],
|
|
2116
|
+
hasParams: true,
|
|
2117
|
+
paramsAllOptional: false,
|
|
2118
|
+
bodyOpaque: false,
|
|
2119
|
+
bodyVariants: [],
|
|
2120
|
+
acceptsBody: false,
|
|
2121
|
+
requiresAuth: true,
|
|
2122
|
+
},
|
|
2123
|
+
{
|
|
2124
|
+
commandPath: ['simulation', 'persona', 'create'],
|
|
2125
|
+
clientProperty: 'simulationPersona',
|
|
2126
|
+
methodName: 'create',
|
|
2127
|
+
httpMethod: 'post',
|
|
2128
|
+
httpPath: '/v1/persona',
|
|
2129
|
+
summary: 'Create a new persona',
|
|
2130
|
+
description: 'Creates a new persona for the authenticated project.',
|
|
2131
|
+
positionals: [],
|
|
2132
|
+
flags: [
|
|
2133
|
+
{
|
|
2134
|
+
name: 'name',
|
|
2135
|
+
path: ['name'],
|
|
2136
|
+
location: 'body',
|
|
2137
|
+
required: true,
|
|
2138
|
+
description: 'The name the agent will identify as during conversations',
|
|
2139
|
+
valueKind: 'string',
|
|
2140
|
+
repeatable: false,
|
|
2141
|
+
},
|
|
2142
|
+
{
|
|
2143
|
+
name: 'description',
|
|
2144
|
+
path: ['description'],
|
|
2145
|
+
location: 'body',
|
|
2146
|
+
required: false,
|
|
2147
|
+
description: 'Human-readable description of the persona',
|
|
2148
|
+
valueKind: 'string',
|
|
2149
|
+
repeatable: false,
|
|
2150
|
+
},
|
|
2151
|
+
{
|
|
2152
|
+
name: 'language',
|
|
2153
|
+
path: ['language'],
|
|
2154
|
+
location: 'body',
|
|
2155
|
+
required: true,
|
|
2156
|
+
description: 'Primary language ISO 639-1 code for the persona',
|
|
2157
|
+
valueKind: 'string',
|
|
2158
|
+
enumValues: [
|
|
2159
|
+
'EN',
|
|
2160
|
+
'ES',
|
|
2161
|
+
'DE',
|
|
2162
|
+
'HI',
|
|
2163
|
+
'FR',
|
|
2164
|
+
'NL',
|
|
2165
|
+
'AR',
|
|
2166
|
+
'EL',
|
|
2167
|
+
'IT',
|
|
2168
|
+
'ID',
|
|
2169
|
+
'TH',
|
|
2170
|
+
'JA',
|
|
2171
|
+
'TL',
|
|
2172
|
+
'MS',
|
|
2173
|
+
'ZH',
|
|
2174
|
+
'TR',
|
|
2175
|
+
'PT',
|
|
2176
|
+
'HE',
|
|
2177
|
+
],
|
|
2178
|
+
repeatable: false,
|
|
2179
|
+
},
|
|
2180
|
+
{
|
|
2181
|
+
name: 'secondary-language',
|
|
2182
|
+
path: ['secondaryLanguage'],
|
|
2183
|
+
location: 'body',
|
|
2184
|
+
required: false,
|
|
2185
|
+
description: 'Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)',
|
|
2186
|
+
valueKind: 'string',
|
|
2187
|
+
enumValues: ['EN'],
|
|
2188
|
+
repeatable: false,
|
|
2189
|
+
},
|
|
2190
|
+
{
|
|
2191
|
+
name: 'understood-languages',
|
|
2192
|
+
path: ['understoodLanguages'],
|
|
2193
|
+
location: 'body',
|
|
2194
|
+
required: false,
|
|
2195
|
+
description: 'Languages the persona can understand. Defaults to the languages the persona speaks.',
|
|
2196
|
+
valueKind: 'array',
|
|
2197
|
+
enumValues: [
|
|
2198
|
+
'EN',
|
|
2199
|
+
'ES',
|
|
2200
|
+
'DE',
|
|
2201
|
+
'HI',
|
|
2202
|
+
'FR',
|
|
2203
|
+
'NL',
|
|
2204
|
+
'AR',
|
|
2205
|
+
'EL',
|
|
2206
|
+
'IT',
|
|
2207
|
+
'ID',
|
|
2208
|
+
'TH',
|
|
2209
|
+
'JA',
|
|
2210
|
+
'TL',
|
|
2211
|
+
'MS',
|
|
2212
|
+
'ZH',
|
|
2213
|
+
'TR',
|
|
2214
|
+
'PT',
|
|
2215
|
+
'HE',
|
|
2216
|
+
],
|
|
2217
|
+
repeatable: true,
|
|
2218
|
+
},
|
|
2219
|
+
{
|
|
2220
|
+
name: 'accent',
|
|
2221
|
+
path: ['accent'],
|
|
2222
|
+
location: 'body',
|
|
2223
|
+
required: true,
|
|
2224
|
+
description: 'Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with optional variants',
|
|
2225
|
+
valueKind: 'string',
|
|
2226
|
+
enumValues: [
|
|
2227
|
+
'US',
|
|
2228
|
+
'US_X_SOUTH',
|
|
2229
|
+
'GB',
|
|
2230
|
+
'ES',
|
|
2231
|
+
'DE',
|
|
2232
|
+
'IN',
|
|
2233
|
+
'FR',
|
|
2234
|
+
'NL',
|
|
2235
|
+
'SA',
|
|
2236
|
+
'GR',
|
|
2237
|
+
'AU',
|
|
2238
|
+
'IT',
|
|
2239
|
+
'ID',
|
|
2240
|
+
'TH',
|
|
2241
|
+
'JP',
|
|
2242
|
+
'NZ',
|
|
2243
|
+
'PH',
|
|
2244
|
+
'SG',
|
|
2245
|
+
'MY',
|
|
2246
|
+
'HK',
|
|
2247
|
+
'TR',
|
|
2248
|
+
'PT',
|
|
2249
|
+
'IL',
|
|
2250
|
+
],
|
|
2251
|
+
repeatable: false,
|
|
2252
|
+
},
|
|
2253
|
+
{
|
|
2254
|
+
name: 'gender',
|
|
2255
|
+
path: ['gender'],
|
|
2256
|
+
location: 'body',
|
|
2257
|
+
required: true,
|
|
2258
|
+
description: 'Gender of the persona',
|
|
2259
|
+
valueKind: 'string',
|
|
2260
|
+
enumValues: ['MALE', 'FEMALE'],
|
|
2261
|
+
repeatable: false,
|
|
2262
|
+
},
|
|
2263
|
+
{
|
|
2264
|
+
name: 'background-noise',
|
|
2265
|
+
path: ['backgroundNoise'],
|
|
2266
|
+
location: 'body',
|
|
2267
|
+
required: false,
|
|
2268
|
+
description: 'Background noise setting',
|
|
2269
|
+
valueKind: 'string',
|
|
2270
|
+
enumValues: [
|
|
2271
|
+
'NONE',
|
|
2272
|
+
'AIRPORT',
|
|
2273
|
+
'CHILDREN_PLAYING',
|
|
2274
|
+
'CITY',
|
|
2275
|
+
'COFFEE_SHOP',
|
|
2276
|
+
'DRIVING',
|
|
2277
|
+
'OFFICE',
|
|
2278
|
+
'THUNDERSTORM',
|
|
2279
|
+
],
|
|
2280
|
+
repeatable: false,
|
|
2281
|
+
},
|
|
2282
|
+
{
|
|
2283
|
+
name: 'speech-pace',
|
|
2284
|
+
path: ['speechPace'],
|
|
2285
|
+
location: 'body',
|
|
2286
|
+
required: false,
|
|
2287
|
+
description: 'Speech pace of the persona',
|
|
2288
|
+
valueKind: 'string',
|
|
2289
|
+
enumValues: ['SUPER_SLOW', 'SLOW', 'NORMAL', 'FAST', 'SUPER_FAST'],
|
|
2290
|
+
repeatable: false,
|
|
2291
|
+
},
|
|
2292
|
+
{
|
|
2293
|
+
name: 'speech-clarity',
|
|
2294
|
+
path: ['speechClarity'],
|
|
2295
|
+
location: 'body',
|
|
2296
|
+
required: false,
|
|
2297
|
+
description: 'Speech clarity of the persona',
|
|
2298
|
+
valueKind: 'string',
|
|
2299
|
+
enumValues: ['CLEAR', 'VAGUE', 'RAMBLING'],
|
|
2300
|
+
repeatable: false,
|
|
2301
|
+
},
|
|
2302
|
+
{
|
|
2303
|
+
name: 'has-disfluencies',
|
|
2304
|
+
path: ['hasDisfluencies'],
|
|
2305
|
+
location: 'body',
|
|
2306
|
+
required: false,
|
|
2307
|
+
description: 'Whether the persona uses filler words like "um" and "uh"',
|
|
2308
|
+
valueKind: 'boolean',
|
|
2309
|
+
repeatable: false,
|
|
2310
|
+
},
|
|
2311
|
+
{
|
|
2312
|
+
name: 'base-emotion',
|
|
2313
|
+
path: ['baseEmotion'],
|
|
2314
|
+
location: 'body',
|
|
2315
|
+
required: false,
|
|
2316
|
+
description: 'Base emotional state of the persona',
|
|
2317
|
+
valueKind: 'string',
|
|
2318
|
+
enumValues: ['NEUTRAL', 'CHEERFUL', 'CONFUSED', 'FRUSTRATED', 'SKEPTICAL', 'RUSHED', 'DISTRACTED'],
|
|
2319
|
+
repeatable: false,
|
|
2320
|
+
},
|
|
2321
|
+
{
|
|
2322
|
+
name: 'intent-clarity',
|
|
2323
|
+
path: ['intentClarity'],
|
|
2324
|
+
location: 'body',
|
|
2325
|
+
required: false,
|
|
2326
|
+
description: 'How clearly the persona expresses their intentions',
|
|
2327
|
+
valueKind: 'string',
|
|
2328
|
+
enumValues: ['CLEAR', 'INDIRECT', 'VAGUE'],
|
|
2329
|
+
repeatable: false,
|
|
2330
|
+
},
|
|
2331
|
+
{
|
|
2332
|
+
name: 'confirmation-style',
|
|
2333
|
+
path: ['confirmationStyle'],
|
|
2334
|
+
location: 'body',
|
|
2335
|
+
required: false,
|
|
2336
|
+
description: 'How the persona confirms information',
|
|
2337
|
+
valueKind: 'string',
|
|
2338
|
+
enumValues: ['EXPLICIT', 'VAGUE'],
|
|
2339
|
+
repeatable: false,
|
|
2340
|
+
},
|
|
2341
|
+
{
|
|
2342
|
+
name: 'memory-reliability',
|
|
2343
|
+
path: ['memoryReliability'],
|
|
2344
|
+
location: 'body',
|
|
2345
|
+
required: false,
|
|
2346
|
+
description: "How reliable the persona's memory is",
|
|
2347
|
+
valueKind: 'string',
|
|
2348
|
+
enumValues: ['HIGH', 'LOW'],
|
|
2349
|
+
repeatable: false,
|
|
2350
|
+
},
|
|
2351
|
+
{
|
|
2352
|
+
name: 'response-timing',
|
|
2353
|
+
path: ['responseTiming'],
|
|
2354
|
+
location: 'body',
|
|
2355
|
+
required: false,
|
|
2356
|
+
description: 'Controls how quickly the persona responds to pauses in conversation (QUICK, NORMAL, RELAXED)',
|
|
2357
|
+
valueKind: 'string',
|
|
2358
|
+
enumValues: ['RELAXED', 'NORMAL', 'QUICK'],
|
|
2359
|
+
repeatable: false,
|
|
2360
|
+
},
|
|
2361
|
+
{
|
|
2362
|
+
name: 'backstory-prompt',
|
|
2363
|
+
path: ['backstoryPrompt'],
|
|
2364
|
+
location: 'body',
|
|
2365
|
+
required: false,
|
|
2366
|
+
description: 'Background story and behavioral patterns for the persona',
|
|
2367
|
+
valueKind: 'string',
|
|
2368
|
+
repeatable: false,
|
|
2369
|
+
},
|
|
2370
|
+
{
|
|
2371
|
+
name: 'idle-messages',
|
|
2372
|
+
path: ['idleMessages'],
|
|
2373
|
+
location: 'body',
|
|
2374
|
+
required: false,
|
|
2375
|
+
description: 'Messages the persona will say when the agent goes silent during a call. Defaults to language-appropriate phrases when omitted or sent as null.',
|
|
2376
|
+
valueKind: 'array',
|
|
2377
|
+
repeatable: true,
|
|
2378
|
+
},
|
|
2379
|
+
{
|
|
2380
|
+
name: 'idle-timeout-seconds',
|
|
2381
|
+
path: ['idleTimeoutSeconds'],
|
|
2382
|
+
location: 'body',
|
|
2383
|
+
required: false,
|
|
2384
|
+
description: 'Seconds of silence before the persona sends an idle message',
|
|
2385
|
+
valueKind: 'integer',
|
|
2386
|
+
repeatable: false,
|
|
2387
|
+
},
|
|
2388
|
+
{
|
|
2389
|
+
name: 'idle-message-max-spoken-count',
|
|
2390
|
+
path: ['idleMessageMaxSpokenCount'],
|
|
2391
|
+
location: 'body',
|
|
2392
|
+
required: false,
|
|
2393
|
+
description: 'Maximum number of idle messages the persona will send before giving up',
|
|
2394
|
+
valueKind: 'integer',
|
|
2395
|
+
repeatable: false,
|
|
2396
|
+
},
|
|
2397
|
+
{
|
|
2398
|
+
name: 'idle-message-reset-count-on-user-speech-enabled',
|
|
2399
|
+
path: ['idleMessageResetCountOnUserSpeechEnabled'],
|
|
2400
|
+
location: 'body',
|
|
2401
|
+
required: false,
|
|
2402
|
+
description: 'Whether the idle message counter resets when the agent speaks',
|
|
2403
|
+
valueKind: 'boolean',
|
|
2404
|
+
repeatable: false,
|
|
2405
|
+
},
|
|
2406
|
+
{
|
|
2407
|
+
name: 'properties',
|
|
2408
|
+
path: ['properties'],
|
|
2409
|
+
location: 'body',
|
|
2410
|
+
required: false,
|
|
2411
|
+
description: 'Additional custom properties about the persona',
|
|
2412
|
+
valueKind: 'object',
|
|
2413
|
+
repeatable: false,
|
|
2414
|
+
},
|
|
2415
|
+
],
|
|
2416
|
+
hasParams: true,
|
|
2417
|
+
paramsAllOptional: false,
|
|
2418
|
+
bodyOpaque: false,
|
|
2419
|
+
bodyVariants: [],
|
|
2420
|
+
acceptsBody: true,
|
|
2421
|
+
requiresAuth: true,
|
|
2422
|
+
},
|
|
2423
|
+
{
|
|
2424
|
+
commandPath: ['simulation', 'persona', 'get'],
|
|
2425
|
+
clientProperty: 'simulationPersona',
|
|
2426
|
+
methodName: 'getByID',
|
|
2427
|
+
httpMethod: 'get',
|
|
2428
|
+
httpPath: '/v1/persona/{personaId}',
|
|
2429
|
+
summary: 'Get persona by ID',
|
|
2430
|
+
description: 'Returns a specific persona by its ID.',
|
|
2431
|
+
positionals: [
|
|
2432
|
+
{
|
|
2433
|
+
name: 'persona-id',
|
|
2434
|
+
paramKey: 'personaId',
|
|
2435
|
+
description: 'The ID of the persona to retrieve',
|
|
2436
|
+
},
|
|
2437
|
+
],
|
|
2438
|
+
flags: [],
|
|
2439
|
+
hasParams: false,
|
|
2440
|
+
paramsAllOptional: true,
|
|
2441
|
+
bodyOpaque: false,
|
|
2442
|
+
bodyVariants: [],
|
|
2443
|
+
acceptsBody: false,
|
|
2444
|
+
requiresAuth: true,
|
|
2445
|
+
},
|
|
2446
|
+
{
|
|
2447
|
+
commandPath: ['simulation', 'persona', 'list'],
|
|
2448
|
+
clientProperty: 'simulationPersona',
|
|
2449
|
+
methodName: 'list',
|
|
2450
|
+
httpMethod: 'get',
|
|
2451
|
+
httpPath: '/v1/persona',
|
|
2452
|
+
summary: 'List personas',
|
|
2453
|
+
description: 'Returns a paginated list of personas for the authenticated project.',
|
|
2454
|
+
positionals: [],
|
|
2455
|
+
flags: [
|
|
2456
|
+
{
|
|
2457
|
+
name: 'limit',
|
|
2458
|
+
path: ['limit'],
|
|
2459
|
+
location: 'query',
|
|
2460
|
+
required: false,
|
|
2461
|
+
valueKind: 'integer',
|
|
2462
|
+
repeatable: false,
|
|
2463
|
+
},
|
|
2464
|
+
{
|
|
2465
|
+
name: 'after',
|
|
2466
|
+
path: ['after'],
|
|
2467
|
+
location: 'query',
|
|
2468
|
+
required: false,
|
|
2469
|
+
valueKind: 'string',
|
|
2470
|
+
repeatable: false,
|
|
2471
|
+
},
|
|
2472
|
+
{
|
|
2473
|
+
name: 'search-text',
|
|
2474
|
+
path: ['searchText'],
|
|
2475
|
+
location: 'query',
|
|
2476
|
+
required: false,
|
|
2477
|
+
valueKind: 'string',
|
|
2478
|
+
repeatable: false,
|
|
2479
|
+
},
|
|
2480
|
+
],
|
|
2481
|
+
hasParams: true,
|
|
2482
|
+
paramsAllOptional: true,
|
|
2483
|
+
bodyOpaque: false,
|
|
2484
|
+
bodyVariants: [],
|
|
2485
|
+
acceptsBody: false,
|
|
2486
|
+
requiresAuth: true,
|
|
2487
|
+
},
|
|
2488
|
+
{
|
|
2489
|
+
commandPath: ['simulation', 'persona', 'update'],
|
|
2490
|
+
clientProperty: 'simulationPersona',
|
|
2491
|
+
methodName: 'update',
|
|
2492
|
+
httpMethod: 'put',
|
|
2493
|
+
httpPath: '/v1/persona/{personaId}',
|
|
2494
|
+
summary: 'Update a persona',
|
|
2495
|
+
description: 'Updates an existing persona by its ID.',
|
|
2496
|
+
positionals: [
|
|
2497
|
+
{
|
|
2498
|
+
name: 'persona-id',
|
|
2499
|
+
paramKey: 'personaId',
|
|
2500
|
+
description: 'The ID of the persona to update',
|
|
2501
|
+
},
|
|
2502
|
+
],
|
|
2503
|
+
flags: [
|
|
2504
|
+
{
|
|
2505
|
+
name: 'name',
|
|
2506
|
+
path: ['name'],
|
|
2507
|
+
location: 'body',
|
|
2508
|
+
required: false,
|
|
2509
|
+
description: 'The name the agent will identify as during conversations',
|
|
2510
|
+
valueKind: 'string',
|
|
2511
|
+
repeatable: false,
|
|
2512
|
+
},
|
|
2513
|
+
{
|
|
2514
|
+
name: 'description',
|
|
2515
|
+
path: ['description'],
|
|
2516
|
+
location: 'body',
|
|
2517
|
+
required: false,
|
|
2518
|
+
description: 'Human-readable description of the persona',
|
|
2519
|
+
valueKind: 'string',
|
|
2520
|
+
repeatable: false,
|
|
2521
|
+
},
|
|
2522
|
+
{
|
|
2523
|
+
name: 'language',
|
|
2524
|
+
path: ['language'],
|
|
2525
|
+
location: 'body',
|
|
2526
|
+
required: false,
|
|
2527
|
+
description: 'Primary language ISO 639-1 code for the persona',
|
|
2528
|
+
valueKind: 'string',
|
|
2529
|
+
enumValues: [
|
|
2530
|
+
'EN',
|
|
2531
|
+
'ES',
|
|
2532
|
+
'DE',
|
|
2533
|
+
'HI',
|
|
2534
|
+
'FR',
|
|
2535
|
+
'NL',
|
|
2536
|
+
'AR',
|
|
2537
|
+
'EL',
|
|
2538
|
+
'IT',
|
|
2539
|
+
'ID',
|
|
2540
|
+
'TH',
|
|
2541
|
+
'JA',
|
|
2542
|
+
'TL',
|
|
2543
|
+
'MS',
|
|
2544
|
+
'ZH',
|
|
2545
|
+
'TR',
|
|
2546
|
+
'PT',
|
|
2547
|
+
'HE',
|
|
2548
|
+
],
|
|
2549
|
+
repeatable: false,
|
|
2550
|
+
},
|
|
2551
|
+
{
|
|
2552
|
+
name: 'secondary-language',
|
|
2553
|
+
path: ['secondaryLanguage'],
|
|
2554
|
+
location: 'body',
|
|
2555
|
+
required: false,
|
|
2556
|
+
description: 'Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)',
|
|
2557
|
+
valueKind: 'string',
|
|
2558
|
+
enumValues: ['EN'],
|
|
2559
|
+
repeatable: false,
|
|
2560
|
+
},
|
|
2561
|
+
{
|
|
2562
|
+
name: 'understood-languages',
|
|
2563
|
+
path: ['understoodLanguages'],
|
|
2564
|
+
location: 'body',
|
|
2565
|
+
required: false,
|
|
2566
|
+
description: 'Languages the persona can understand. Multilingual combinations are limited by multilingual speech recognition support.',
|
|
2567
|
+
valueKind: 'array',
|
|
2568
|
+
enumValues: [
|
|
2569
|
+
'EN',
|
|
2570
|
+
'ES',
|
|
2571
|
+
'DE',
|
|
2572
|
+
'HI',
|
|
2573
|
+
'FR',
|
|
2574
|
+
'NL',
|
|
2575
|
+
'AR',
|
|
2576
|
+
'EL',
|
|
2577
|
+
'IT',
|
|
2578
|
+
'ID',
|
|
2579
|
+
'TH',
|
|
2580
|
+
'JA',
|
|
2581
|
+
'TL',
|
|
2582
|
+
'MS',
|
|
2583
|
+
'ZH',
|
|
2584
|
+
'TR',
|
|
2585
|
+
'PT',
|
|
2586
|
+
'HE',
|
|
2587
|
+
],
|
|
2588
|
+
repeatable: true,
|
|
2589
|
+
},
|
|
2590
|
+
{
|
|
2591
|
+
name: 'accent',
|
|
2592
|
+
path: ['accent'],
|
|
2593
|
+
location: 'body',
|
|
2594
|
+
required: false,
|
|
2595
|
+
description: 'Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with optional variants',
|
|
2596
|
+
valueKind: 'string',
|
|
2597
|
+
enumValues: [
|
|
2598
|
+
'US',
|
|
2599
|
+
'US_X_SOUTH',
|
|
2600
|
+
'GB',
|
|
2601
|
+
'ES',
|
|
2602
|
+
'DE',
|
|
2603
|
+
'IN',
|
|
2604
|
+
'FR',
|
|
2605
|
+
'NL',
|
|
2606
|
+
'SA',
|
|
2607
|
+
'GR',
|
|
2608
|
+
'AU',
|
|
2609
|
+
'IT',
|
|
2610
|
+
'ID',
|
|
2611
|
+
'TH',
|
|
2612
|
+
'JP',
|
|
2613
|
+
'NZ',
|
|
2614
|
+
'PH',
|
|
2615
|
+
'SG',
|
|
2616
|
+
'MY',
|
|
2617
|
+
'HK',
|
|
2618
|
+
'TR',
|
|
2619
|
+
'PT',
|
|
2620
|
+
'IL',
|
|
2621
|
+
],
|
|
2622
|
+
repeatable: false,
|
|
2623
|
+
},
|
|
2624
|
+
{
|
|
2625
|
+
name: 'gender',
|
|
2626
|
+
path: ['gender'],
|
|
2627
|
+
location: 'body',
|
|
2628
|
+
required: false,
|
|
2629
|
+
description: 'Gender of the persona',
|
|
2630
|
+
valueKind: 'string',
|
|
2631
|
+
enumValues: ['MALE', 'FEMALE'],
|
|
2632
|
+
repeatable: false,
|
|
2633
|
+
},
|
|
2634
|
+
{
|
|
2635
|
+
name: 'background-noise',
|
|
2636
|
+
path: ['backgroundNoise'],
|
|
2637
|
+
location: 'body',
|
|
2638
|
+
required: false,
|
|
2639
|
+
description: 'Background noise setting',
|
|
2640
|
+
valueKind: 'string',
|
|
2641
|
+
enumValues: [
|
|
2642
|
+
'NONE',
|
|
2643
|
+
'AIRPORT',
|
|
2644
|
+
'CHILDREN_PLAYING',
|
|
2645
|
+
'CITY',
|
|
2646
|
+
'COFFEE_SHOP',
|
|
2647
|
+
'DRIVING',
|
|
2648
|
+
'OFFICE',
|
|
2649
|
+
'THUNDERSTORM',
|
|
2650
|
+
],
|
|
2651
|
+
repeatable: false,
|
|
2652
|
+
},
|
|
2653
|
+
{
|
|
2654
|
+
name: 'speech-pace',
|
|
2655
|
+
path: ['speechPace'],
|
|
2656
|
+
location: 'body',
|
|
2657
|
+
required: false,
|
|
2658
|
+
description: 'Speech pace of the persona',
|
|
2659
|
+
valueKind: 'string',
|
|
2660
|
+
enumValues: ['SUPER_SLOW', 'SLOW', 'NORMAL', 'FAST', 'SUPER_FAST'],
|
|
2661
|
+
repeatable: false,
|
|
2662
|
+
},
|
|
2663
|
+
{
|
|
2664
|
+
name: 'speech-clarity',
|
|
2665
|
+
path: ['speechClarity'],
|
|
2666
|
+
location: 'body',
|
|
2667
|
+
required: false,
|
|
2668
|
+
description: 'Speech clarity of the persona',
|
|
2669
|
+
valueKind: 'string',
|
|
2670
|
+
enumValues: ['CLEAR', 'VAGUE', 'RAMBLING'],
|
|
2671
|
+
repeatable: false,
|
|
2672
|
+
},
|
|
2673
|
+
{
|
|
2674
|
+
name: 'has-disfluencies',
|
|
2675
|
+
path: ['hasDisfluencies'],
|
|
2676
|
+
location: 'body',
|
|
2677
|
+
required: false,
|
|
2678
|
+
description: 'Whether the persona uses filler words like "um" and "uh"',
|
|
2679
|
+
valueKind: 'boolean',
|
|
2680
|
+
repeatable: false,
|
|
2681
|
+
},
|
|
2682
|
+
{
|
|
2683
|
+
name: 'base-emotion',
|
|
2684
|
+
path: ['baseEmotion'],
|
|
2685
|
+
location: 'body',
|
|
2686
|
+
required: false,
|
|
2687
|
+
description: 'Base emotional state of the persona',
|
|
2688
|
+
valueKind: 'string',
|
|
2689
|
+
enumValues: ['NEUTRAL', 'CHEERFUL', 'CONFUSED', 'FRUSTRATED', 'SKEPTICAL', 'RUSHED', 'DISTRACTED'],
|
|
2690
|
+
repeatable: false,
|
|
2691
|
+
},
|
|
2692
|
+
{
|
|
2693
|
+
name: 'intent-clarity',
|
|
2694
|
+
path: ['intentClarity'],
|
|
2695
|
+
location: 'body',
|
|
2696
|
+
required: false,
|
|
2697
|
+
description: 'How clearly the persona expresses their intentions',
|
|
2698
|
+
valueKind: 'string',
|
|
2699
|
+
enumValues: ['CLEAR', 'INDIRECT', 'VAGUE'],
|
|
2700
|
+
repeatable: false,
|
|
2701
|
+
},
|
|
2702
|
+
{
|
|
2703
|
+
name: 'confirmation-style',
|
|
2704
|
+
path: ['confirmationStyle'],
|
|
2705
|
+
location: 'body',
|
|
2706
|
+
required: false,
|
|
2707
|
+
description: 'How the persona confirms information',
|
|
2708
|
+
valueKind: 'string',
|
|
2709
|
+
enumValues: ['EXPLICIT', 'VAGUE'],
|
|
2710
|
+
repeatable: false,
|
|
2711
|
+
},
|
|
2712
|
+
{
|
|
2713
|
+
name: 'memory-reliability',
|
|
2714
|
+
path: ['memoryReliability'],
|
|
2715
|
+
location: 'body',
|
|
2716
|
+
required: false,
|
|
2717
|
+
description: "How reliable the persona's memory is",
|
|
2718
|
+
valueKind: 'string',
|
|
2719
|
+
enumValues: ['HIGH', 'LOW'],
|
|
2720
|
+
repeatable: false,
|
|
2721
|
+
},
|
|
2722
|
+
{
|
|
2723
|
+
name: 'response-timing',
|
|
2724
|
+
path: ['responseTiming'],
|
|
2725
|
+
location: 'body',
|
|
2726
|
+
required: false,
|
|
2727
|
+
description: 'Controls how quickly the persona responds to pauses in conversation (QUICK, NORMAL, RELAXED)',
|
|
2728
|
+
valueKind: 'string',
|
|
2729
|
+
enumValues: ['RELAXED', 'NORMAL', 'QUICK'],
|
|
2730
|
+
repeatable: false,
|
|
2731
|
+
},
|
|
2732
|
+
{
|
|
2733
|
+
name: 'backstory-prompt',
|
|
2734
|
+
path: ['backstoryPrompt'],
|
|
2735
|
+
location: 'body',
|
|
2736
|
+
required: false,
|
|
2737
|
+
description: 'Background story and behavioral patterns for the persona',
|
|
2738
|
+
valueKind: 'string',
|
|
2739
|
+
repeatable: false,
|
|
2740
|
+
},
|
|
2741
|
+
{
|
|
2742
|
+
name: 'idle-messages',
|
|
2743
|
+
path: ['idleMessages'],
|
|
2744
|
+
location: 'body',
|
|
2745
|
+
required: false,
|
|
2746
|
+
description: 'Messages the persona will say when the agent goes silent during a call. null = "Automatic": language-appropriate defaults are used at call time.',
|
|
2747
|
+
valueKind: 'array',
|
|
2748
|
+
repeatable: true,
|
|
2749
|
+
},
|
|
2750
|
+
{
|
|
2751
|
+
name: 'idle-timeout-seconds',
|
|
2752
|
+
path: ['idleTimeoutSeconds'],
|
|
2753
|
+
location: 'body',
|
|
2754
|
+
required: false,
|
|
2755
|
+
description: 'Seconds of silence before the persona sends an idle message',
|
|
2756
|
+
valueKind: 'integer',
|
|
2757
|
+
repeatable: false,
|
|
2758
|
+
},
|
|
2759
|
+
{
|
|
2760
|
+
name: 'idle-message-max-spoken-count',
|
|
2761
|
+
path: ['idleMessageMaxSpokenCount'],
|
|
2762
|
+
location: 'body',
|
|
2763
|
+
required: false,
|
|
2764
|
+
description: 'Maximum number of idle messages the persona will send before giving up',
|
|
2765
|
+
valueKind: 'integer',
|
|
2766
|
+
repeatable: false,
|
|
2767
|
+
},
|
|
2768
|
+
{
|
|
2769
|
+
name: 'idle-message-reset-count-on-user-speech-enabled',
|
|
2770
|
+
path: ['idleMessageResetCountOnUserSpeechEnabled'],
|
|
2771
|
+
location: 'body',
|
|
2772
|
+
required: false,
|
|
2773
|
+
description: 'Whether the idle message counter resets when the agent speaks',
|
|
2774
|
+
valueKind: 'boolean',
|
|
2775
|
+
repeatable: false,
|
|
2776
|
+
},
|
|
2777
|
+
{
|
|
2778
|
+
name: 'properties',
|
|
2779
|
+
path: ['properties'],
|
|
2780
|
+
location: 'body',
|
|
2781
|
+
required: false,
|
|
2782
|
+
description: 'Additional custom properties about the persona',
|
|
2783
|
+
valueKind: 'object',
|
|
2784
|
+
repeatable: false,
|
|
2785
|
+
},
|
|
2786
|
+
],
|
|
2787
|
+
hasParams: true,
|
|
2788
|
+
paramsAllOptional: true,
|
|
2789
|
+
bodyOpaque: false,
|
|
2790
|
+
bodyVariants: [],
|
|
2791
|
+
acceptsBody: true,
|
|
2792
|
+
requiresAuth: true,
|
|
2793
|
+
},
|
|
2794
|
+
{
|
|
2795
|
+
commandPath: ['simulation', 'plan', 'create'],
|
|
2796
|
+
clientProperty: 'simulationRunPlan',
|
|
2797
|
+
methodName: 'create',
|
|
2798
|
+
httpMethod: 'post',
|
|
2799
|
+
httpPath: '/v1/simulation/plan',
|
|
2800
|
+
summary: 'Create a run plan',
|
|
2801
|
+
description: 'Creates a new simulation run plan. To run a simulation, use POST /v1/simulation/run instead: it starts a run from a plan or from an inline configuration, and takes runtime variables. Create a plan here when you want a reusable, named one to run later.',
|
|
2802
|
+
positionals: [],
|
|
2803
|
+
flags: [
|
|
2804
|
+
{
|
|
2805
|
+
name: 'name',
|
|
2806
|
+
path: ['name'],
|
|
2807
|
+
location: 'body',
|
|
2808
|
+
required: true,
|
|
2809
|
+
description: 'Name of the run plan',
|
|
2810
|
+
valueKind: 'string',
|
|
2811
|
+
repeatable: false,
|
|
2812
|
+
},
|
|
2813
|
+
{
|
|
2814
|
+
name: 'description',
|
|
2815
|
+
path: ['description'],
|
|
2816
|
+
location: 'body',
|
|
2817
|
+
required: false,
|
|
2818
|
+
description: 'Description of the run plan',
|
|
2819
|
+
valueKind: 'string',
|
|
2820
|
+
repeatable: false,
|
|
2821
|
+
},
|
|
2822
|
+
{
|
|
2823
|
+
name: 'direction',
|
|
2824
|
+
path: ['direction'],
|
|
2825
|
+
location: 'body',
|
|
2826
|
+
required: true,
|
|
2827
|
+
description: 'Direction of the simulation (INBOUND or OUTBOUND)',
|
|
2828
|
+
valueKind: 'string',
|
|
2829
|
+
enumValues: ['INBOUND', 'OUTBOUND'],
|
|
2830
|
+
repeatable: false,
|
|
2831
|
+
},
|
|
2832
|
+
{
|
|
2833
|
+
name: 'iteration-count',
|
|
2834
|
+
path: ['iterationCount'],
|
|
2835
|
+
location: 'body',
|
|
2836
|
+
required: false,
|
|
2837
|
+
description: 'Number of iterations to run for each test case (1-10000)',
|
|
2838
|
+
valueKind: 'integer',
|
|
2839
|
+
repeatable: false,
|
|
2840
|
+
},
|
|
2841
|
+
{
|
|
2842
|
+
name: 'max-concurrent-jobs',
|
|
2843
|
+
path: ['maxConcurrentJobs'],
|
|
2844
|
+
location: 'body',
|
|
2845
|
+
required: false,
|
|
2846
|
+
description: 'Maximum number of concurrent simulation jobs',
|
|
2847
|
+
valueKind: 'integer',
|
|
2848
|
+
repeatable: false,
|
|
2849
|
+
},
|
|
2850
|
+
{
|
|
2851
|
+
name: 'max-simulation-duration-seconds',
|
|
2852
|
+
path: ['maxSimulationDurationSeconds'],
|
|
2853
|
+
location: 'body',
|
|
2854
|
+
required: true,
|
|
2855
|
+
description: 'Maximum duration in seconds for each simulation',
|
|
2856
|
+
valueKind: 'integer',
|
|
2857
|
+
repeatable: false,
|
|
2858
|
+
},
|
|
2859
|
+
{
|
|
2860
|
+
name: 'silence-timeout-seconds',
|
|
2861
|
+
path: ['silenceTimeoutSeconds'],
|
|
2862
|
+
location: 'body',
|
|
2863
|
+
required: false,
|
|
2864
|
+
description: 'Timeout in seconds for silence detection',
|
|
2865
|
+
valueKind: 'integer',
|
|
2866
|
+
repeatable: false,
|
|
2867
|
+
},
|
|
2868
|
+
{
|
|
2869
|
+
name: 'end-call-phrases',
|
|
2870
|
+
path: ['endCallPhrases'],
|
|
2871
|
+
location: 'body',
|
|
2872
|
+
required: false,
|
|
2873
|
+
description: 'Phrases that trigger end of call. Empty array disables the feature.',
|
|
2874
|
+
valueKind: 'array',
|
|
2875
|
+
repeatable: true,
|
|
2876
|
+
},
|
|
2877
|
+
{
|
|
2878
|
+
name: 'end-call-reasons',
|
|
2879
|
+
path: ['endCallReasons'],
|
|
2880
|
+
location: 'body',
|
|
2881
|
+
required: false,
|
|
2882
|
+
description: 'Semantic conditions that trigger end of call. The LLM evaluates the conversation against these conditions. Empty array disables the feature.',
|
|
2883
|
+
valueKind: 'array',
|
|
2884
|
+
repeatable: true,
|
|
2885
|
+
},
|
|
2886
|
+
{
|
|
2887
|
+
name: 'execution-mode',
|
|
2888
|
+
path: ['executionMode'],
|
|
2889
|
+
location: 'body',
|
|
2890
|
+
required: false,
|
|
2891
|
+
description: 'Execution mode (PARALLEL or SEQUENTIAL)',
|
|
2892
|
+
valueKind: 'string',
|
|
2893
|
+
enumValues: ['PARALLEL', 'SEQUENTIAL_SAME_RUN_PLAN', 'SEQUENTIAL_PROJECT'],
|
|
2894
|
+
repeatable: false,
|
|
2895
|
+
},
|
|
2896
|
+
{
|
|
2897
|
+
name: 'scenarios',
|
|
2898
|
+
path: ['scenarios'],
|
|
2899
|
+
location: 'body',
|
|
2900
|
+
required: false,
|
|
2901
|
+
description: 'Deprecated: use `flows` instead. Scenarios to include in this run plan. The same scenario ID can appear multiple times with different variables.',
|
|
2902
|
+
valueKind: 'array',
|
|
2903
|
+
repeatable: false,
|
|
2904
|
+
},
|
|
2905
|
+
{
|
|
2906
|
+
name: 'flows',
|
|
2907
|
+
path: ['flows'],
|
|
2908
|
+
location: 'body',
|
|
2909
|
+
required: false,
|
|
2910
|
+
description: 'Customer flows to include in this run plan. The same flow can appear more than once with a different persona override or different variables.',
|
|
2911
|
+
valueKind: 'array',
|
|
2912
|
+
repeatable: false,
|
|
2913
|
+
},
|
|
2914
|
+
{
|
|
2915
|
+
name: 'personas',
|
|
2916
|
+
path: ['personas'],
|
|
2917
|
+
location: 'body',
|
|
2918
|
+
required: false,
|
|
2919
|
+
description: 'Personas to include in this run plan. Required with `scenarios`; ignored with `flows`, where each variant carries its own persona.',
|
|
2920
|
+
valueKind: 'array',
|
|
2921
|
+
repeatable: false,
|
|
2922
|
+
},
|
|
2923
|
+
{
|
|
2924
|
+
name: 'agent-endpoints',
|
|
2925
|
+
path: ['agentEndpoints'],
|
|
2926
|
+
location: 'body',
|
|
2927
|
+
required: true,
|
|
2928
|
+
description: 'Agent endpoints to include in this run plan',
|
|
2929
|
+
valueKind: 'array',
|
|
2930
|
+
repeatable: false,
|
|
2931
|
+
},
|
|
2932
|
+
{
|
|
2933
|
+
name: 'metrics',
|
|
2934
|
+
path: ['metrics'],
|
|
2935
|
+
location: 'body',
|
|
2936
|
+
required: true,
|
|
2937
|
+
description: 'Metric definitions to include in this run plan. Reference each by `id` (UUID) or `slug`.',
|
|
2938
|
+
valueKind: 'array',
|
|
2939
|
+
repeatable: false,
|
|
2940
|
+
},
|
|
2941
|
+
{
|
|
2942
|
+
name: 'auto-run',
|
|
2943
|
+
path: ['autoRun'],
|
|
2944
|
+
location: 'body',
|
|
2945
|
+
required: false,
|
|
2946
|
+
description: 'Deprecated: use POST /v1/simulation/run, which starts a run and accepts runtime `variables` as well. This flag runs the plan with only the values pinned on it.',
|
|
2947
|
+
valueKind: 'boolean',
|
|
2948
|
+
repeatable: false,
|
|
2949
|
+
},
|
|
2950
|
+
],
|
|
2951
|
+
hasParams: true,
|
|
2952
|
+
paramsAllOptional: false,
|
|
2953
|
+
bodyOpaque: false,
|
|
2954
|
+
bodyVariants: [],
|
|
2955
|
+
acceptsBody: true,
|
|
2956
|
+
requiresAuth: true,
|
|
2957
|
+
},
|
|
2958
|
+
{
|
|
2959
|
+
commandPath: ['simulation', 'plan', 'delete'],
|
|
2960
|
+
clientProperty: 'simulationRunPlan',
|
|
2961
|
+
methodName: 'delete',
|
|
2962
|
+
httpMethod: 'delete',
|
|
2963
|
+
httpPath: '/v1/simulation/plan/{planId}',
|
|
2964
|
+
summary: 'Delete a run plan',
|
|
2965
|
+
description: 'Soft-deletes a simulation run plan by its ID.',
|
|
2966
|
+
positionals: [
|
|
2967
|
+
{
|
|
2968
|
+
name: 'plan-id',
|
|
2969
|
+
paramKey: 'planId',
|
|
2970
|
+
description: 'The ID of the run plan to delete',
|
|
2971
|
+
},
|
|
2972
|
+
],
|
|
2973
|
+
flags: [],
|
|
2974
|
+
hasParams: false,
|
|
2975
|
+
paramsAllOptional: true,
|
|
2976
|
+
bodyOpaque: false,
|
|
2977
|
+
bodyVariants: [],
|
|
2978
|
+
acceptsBody: false,
|
|
2979
|
+
requiresAuth: true,
|
|
2980
|
+
},
|
|
2981
|
+
{
|
|
2982
|
+
commandPath: ['simulation', 'plan', 'get'],
|
|
2983
|
+
clientProperty: 'simulationRunPlan',
|
|
2984
|
+
methodName: 'getByID',
|
|
2985
|
+
httpMethod: 'get',
|
|
2986
|
+
httpPath: '/v1/simulation/plan/{planId}',
|
|
2987
|
+
summary: 'Get run plan by ID',
|
|
2988
|
+
description: 'Returns a specific simulation run plan by its ID.',
|
|
2989
|
+
positionals: [
|
|
2990
|
+
{
|
|
2991
|
+
name: 'plan-id',
|
|
2992
|
+
paramKey: 'planId',
|
|
2993
|
+
description: 'The ID of the run plan to retrieve',
|
|
2994
|
+
},
|
|
2995
|
+
],
|
|
2996
|
+
flags: [],
|
|
2997
|
+
hasParams: false,
|
|
2998
|
+
paramsAllOptional: true,
|
|
2999
|
+
bodyOpaque: false,
|
|
3000
|
+
bodyVariants: [],
|
|
3001
|
+
acceptsBody: false,
|
|
3002
|
+
requiresAuth: true,
|
|
3003
|
+
},
|
|
3004
|
+
{
|
|
3005
|
+
commandPath: ['simulation', 'plan', 'job', 'get'],
|
|
3006
|
+
clientProperty: 'simulationRunPlanJob',
|
|
3007
|
+
methodName: 'getByID',
|
|
3008
|
+
httpMethod: 'get',
|
|
3009
|
+
httpPath: '/v1/simulation/plan/job/{jobId}',
|
|
3010
|
+
summary: 'Get simulation plan job',
|
|
3011
|
+
description: 'Retrieve details of a simulation plan job including all associated simulation jobs (calls)',
|
|
3012
|
+
positionals: [
|
|
3013
|
+
{
|
|
3014
|
+
name: 'job-id',
|
|
3015
|
+
paramKey: 'jobId',
|
|
3016
|
+
description: 'Simulation run plan job ID',
|
|
3017
|
+
},
|
|
3018
|
+
],
|
|
3019
|
+
flags: [],
|
|
3020
|
+
hasParams: false,
|
|
3021
|
+
paramsAllOptional: true,
|
|
3022
|
+
bodyOpaque: false,
|
|
3023
|
+
bodyVariants: [],
|
|
3024
|
+
acceptsBody: false,
|
|
3025
|
+
requiresAuth: true,
|
|
3026
|
+
},
|
|
3027
|
+
{
|
|
3028
|
+
commandPath: ['simulation', 'plan', 'job', 'list'],
|
|
3029
|
+
clientProperty: 'simulationRunPlanJob',
|
|
3030
|
+
methodName: 'list',
|
|
3031
|
+
httpMethod: 'get',
|
|
3032
|
+
httpPath: '/v1/simulation/plan/jobs',
|
|
3033
|
+
summary: 'List simulation plan jobs',
|
|
3034
|
+
description: 'Returns a paginated list of simulation run plan jobs. Filter by status, plan ID, or label to find specific simulation batches.',
|
|
3035
|
+
positionals: [],
|
|
3036
|
+
flags: [
|
|
3037
|
+
{
|
|
3038
|
+
name: 'limit',
|
|
3039
|
+
path: ['limit'],
|
|
3040
|
+
location: 'query',
|
|
3041
|
+
required: false,
|
|
3042
|
+
description: 'Maximum number of plan jobs to return (default: 20, max: 50)',
|
|
3043
|
+
valueKind: 'integer',
|
|
3044
|
+
repeatable: false,
|
|
3045
|
+
},
|
|
3046
|
+
{
|
|
3047
|
+
name: 'after',
|
|
3048
|
+
path: ['after'],
|
|
3049
|
+
location: 'query',
|
|
3050
|
+
required: false,
|
|
3051
|
+
description: 'Cursor for pagination - use the nextCursor value from a previous response',
|
|
3052
|
+
valueKind: 'string',
|
|
3053
|
+
repeatable: false,
|
|
3054
|
+
},
|
|
3055
|
+
{
|
|
3056
|
+
name: 'status',
|
|
3057
|
+
path: ['status'],
|
|
3058
|
+
location: 'query',
|
|
3059
|
+
required: false,
|
|
3060
|
+
description: 'Filter by plan job status (PENDING, QUEUED, CREATING_SNAPSHOTS, CREATING_SIMULATIONS, PREPARING_CAPACITY, RUNNING_SIMULATIONS, COMPLETED, FAILED, TIMED_OUT, CANCELLED, CANCELLING, ENDING_SIMULATIONS)',
|
|
3061
|
+
valueKind: 'string',
|
|
3062
|
+
enumValues: [
|
|
3063
|
+
'PENDING',
|
|
3064
|
+
'QUEUED',
|
|
3065
|
+
'CREATING_SNAPSHOTS',
|
|
3066
|
+
'CREATING_SIMULATIONS',
|
|
3067
|
+
'PREPARING_CAPACITY',
|
|
3068
|
+
'RUNNING_SIMULATIONS',
|
|
3069
|
+
'COMPLETED',
|
|
3070
|
+
'FAILED',
|
|
3071
|
+
'TIMED_OUT',
|
|
3072
|
+
'CANCELLED',
|
|
3073
|
+
'CANCELLING',
|
|
3074
|
+
'ENDING_SIMULATIONS',
|
|
3075
|
+
],
|
|
3076
|
+
repeatable: false,
|
|
3077
|
+
},
|
|
3078
|
+
{
|
|
3079
|
+
name: 'simulation-run-plan-id',
|
|
3080
|
+
path: ['simulationRunPlanId'],
|
|
3081
|
+
location: 'query',
|
|
3082
|
+
required: false,
|
|
3083
|
+
description: 'Filter by simulation run plan ID',
|
|
3084
|
+
valueKind: 'string',
|
|
3085
|
+
repeatable: false,
|
|
3086
|
+
},
|
|
3087
|
+
{
|
|
3088
|
+
name: 'label-id',
|
|
3089
|
+
path: ['labelId'],
|
|
3090
|
+
location: 'query',
|
|
3091
|
+
required: false,
|
|
3092
|
+
description: 'Filter by label ID attached to the plan job. Use this if you know the label ID.',
|
|
3093
|
+
valueKind: 'string',
|
|
3094
|
+
repeatable: false,
|
|
3095
|
+
},
|
|
3096
|
+
{
|
|
3097
|
+
name: 'label-name',
|
|
3098
|
+
path: ['labelName'],
|
|
3099
|
+
location: 'query',
|
|
3100
|
+
required: false,
|
|
3101
|
+
description: 'Filter by label name attached to the plan job. More user-friendly alternative to labelId. Case-insensitive.',
|
|
3102
|
+
valueKind: 'string',
|
|
3103
|
+
repeatable: false,
|
|
3104
|
+
},
|
|
3105
|
+
],
|
|
3106
|
+
hasParams: true,
|
|
3107
|
+
paramsAllOptional: true,
|
|
3108
|
+
bodyOpaque: false,
|
|
3109
|
+
bodyVariants: [],
|
|
3110
|
+
acceptsBody: false,
|
|
3111
|
+
requiresAuth: true,
|
|
3112
|
+
},
|
|
3113
|
+
{
|
|
3114
|
+
commandPath: ['simulation', 'plan', 'job', 'start'],
|
|
3115
|
+
clientProperty: 'simulationRunPlanJob',
|
|
3116
|
+
methodName: 'start',
|
|
3117
|
+
httpMethod: 'post',
|
|
3118
|
+
httpPath: '/v1/simulation/plan/{planId}/job',
|
|
3119
|
+
summary: 'Run a simulation plan',
|
|
3120
|
+
description: 'Deprecated: use POST /v1/simulation/run, which does the same thing and can also take the plan configuration inline, so a one-off run does not have to create a plan first. Creates and executes a job for an existing simulation run plan. Optionally provide runtime variables to override plan-defined variables.',
|
|
3121
|
+
positionals: [
|
|
3122
|
+
{
|
|
3123
|
+
name: 'plan-id',
|
|
3124
|
+
paramKey: 'planId',
|
|
3125
|
+
description: 'Simulation run plan ID',
|
|
3126
|
+
},
|
|
3127
|
+
],
|
|
3128
|
+
flags: [
|
|
3129
|
+
{
|
|
3130
|
+
name: 'variables',
|
|
3131
|
+
path: ['variables'],
|
|
3132
|
+
location: 'body',
|
|
3133
|
+
required: false,
|
|
3134
|
+
description: 'Values for the {{variables}} the run resolves, overriding whatever the plan has pinned. An object applies them to the whole run: { "orderNumber": "12345", "tier": "gold" } An array applies them per flow, or to just its happy path or one of its edge cases, when a single set will not do. Each entry carries what it applies to: [ { "flowId": "550e8400-...", "variables": { "orderNumber": "12345" } }, { "flowId": "550e8400-...", "happyPath": true, "variables": { "orderNumber": "55555" } }, { "flowId": "550e8400-...", "edgeCaseId": "7a3d2e1f-...", "variables": { "orderNumber": "67890" } } ] An entry that narrows to neither covers everything that flow resolves. A flow this plan does not attach, or an edge case that does not belong to the flow, is rejected rather than ignored. A plan built on scenarios rather than customer flows targets them the same way, with `scenarioId` in place of `flowId`. That form is deprecated alongside scenarios themselves, and still accepted so runs against those plans keep working.',
|
|
3135
|
+
valueKind: 'string',
|
|
3136
|
+
repeatable: false,
|
|
3137
|
+
},
|
|
3138
|
+
],
|
|
3139
|
+
hasParams: true,
|
|
3140
|
+
paramsAllOptional: true,
|
|
3141
|
+
bodyOpaque: false,
|
|
3142
|
+
bodyVariants: [],
|
|
3143
|
+
acceptsBody: true,
|
|
3144
|
+
requiresAuth: true,
|
|
3145
|
+
},
|
|
3146
|
+
{
|
|
3147
|
+
commandPath: ['simulation', 'plan', 'list'],
|
|
3148
|
+
clientProperty: 'simulationRunPlan',
|
|
3149
|
+
methodName: 'list',
|
|
3150
|
+
httpMethod: 'get',
|
|
3151
|
+
httpPath: '/v1/simulation/plan',
|
|
3152
|
+
summary: 'List run plans',
|
|
3153
|
+
description: 'Returns a paginated list of simulation run plans. Optionally filter by search text or agent ID.',
|
|
3154
|
+
positionals: [],
|
|
3155
|
+
flags: [
|
|
3156
|
+
{
|
|
3157
|
+
name: 'limit',
|
|
3158
|
+
path: ['limit'],
|
|
3159
|
+
location: 'query',
|
|
3160
|
+
required: false,
|
|
3161
|
+
description: 'Maximum number of run plans to return (default: 20, max: 50)',
|
|
3162
|
+
valueKind: 'integer',
|
|
3163
|
+
repeatable: false,
|
|
3164
|
+
},
|
|
3165
|
+
{
|
|
3166
|
+
name: 'after',
|
|
3167
|
+
path: ['after'],
|
|
3168
|
+
location: 'query',
|
|
3169
|
+
required: false,
|
|
3170
|
+
description: 'Cursor for pagination - use the nextCursor value from a previous response',
|
|
3171
|
+
valueKind: 'string',
|
|
3172
|
+
repeatable: false,
|
|
3173
|
+
},
|
|
3174
|
+
{
|
|
3175
|
+
name: 'search-text',
|
|
3176
|
+
path: ['searchText'],
|
|
3177
|
+
location: 'query',
|
|
3178
|
+
required: false,
|
|
3179
|
+
description: 'Search text to filter run plans by name',
|
|
3180
|
+
valueKind: 'string',
|
|
3181
|
+
repeatable: false,
|
|
3182
|
+
},
|
|
3183
|
+
{
|
|
3184
|
+
name: 'agent-id',
|
|
3185
|
+
path: ['agentId'],
|
|
3186
|
+
location: 'query',
|
|
3187
|
+
required: false,
|
|
3188
|
+
description: 'Filter run plans by agent ID',
|
|
3189
|
+
valueKind: 'string',
|
|
3190
|
+
repeatable: false,
|
|
3191
|
+
},
|
|
3192
|
+
],
|
|
3193
|
+
hasParams: true,
|
|
3194
|
+
paramsAllOptional: true,
|
|
3195
|
+
bodyOpaque: false,
|
|
3196
|
+
bodyVariants: [],
|
|
3197
|
+
acceptsBody: false,
|
|
3198
|
+
requiresAuth: true,
|
|
3199
|
+
},
|
|
3200
|
+
{
|
|
3201
|
+
commandPath: ['simulation', 'plan', 'update'],
|
|
3202
|
+
clientProperty: 'simulationRunPlan',
|
|
3203
|
+
methodName: 'update',
|
|
3204
|
+
httpMethod: 'put',
|
|
3205
|
+
httpPath: '/v1/simulation/plan/{planId}',
|
|
3206
|
+
summary: 'Update a run plan',
|
|
3207
|
+
description: 'Updates an existing simulation run plan by its ID.',
|
|
3208
|
+
positionals: [
|
|
3209
|
+
{
|
|
3210
|
+
name: 'plan-id',
|
|
3211
|
+
paramKey: 'planId',
|
|
3212
|
+
description: 'The ID of the run plan to update',
|
|
3213
|
+
},
|
|
3214
|
+
],
|
|
3215
|
+
flags: [
|
|
3216
|
+
{
|
|
3217
|
+
name: 'is-hidden',
|
|
3218
|
+
path: ['isHidden'],
|
|
3219
|
+
location: 'body',
|
|
3220
|
+
required: false,
|
|
3221
|
+
description: 'Whether this plan is hidden from GET /v1/simulation/plan. A run started without `saveAsPlan` creates a hidden plan to carry it. Send `{ "name": "...", "isHidden": false }` to keep that configuration as a reusable plan, which is what the app does when you save a one-off run.',
|
|
3222
|
+
valueKind: 'boolean',
|
|
3223
|
+
repeatable: false,
|
|
3224
|
+
},
|
|
3225
|
+
{
|
|
3226
|
+
name: 'name',
|
|
3227
|
+
path: ['name'],
|
|
3228
|
+
location: 'body',
|
|
3229
|
+
required: false,
|
|
3230
|
+
description: 'Name of the run plan',
|
|
3231
|
+
valueKind: 'string',
|
|
3232
|
+
repeatable: false,
|
|
3233
|
+
},
|
|
3234
|
+
{
|
|
3235
|
+
name: 'description',
|
|
3236
|
+
path: ['description'],
|
|
3237
|
+
location: 'body',
|
|
3238
|
+
required: false,
|
|
3239
|
+
description: 'Description of the run plan',
|
|
3240
|
+
valueKind: 'string',
|
|
3241
|
+
repeatable: false,
|
|
3242
|
+
},
|
|
3243
|
+
{
|
|
3244
|
+
name: 'direction',
|
|
3245
|
+
path: ['direction'],
|
|
3246
|
+
location: 'body',
|
|
3247
|
+
required: false,
|
|
3248
|
+
description: 'Direction of the simulation (INBOUND or OUTBOUND)',
|
|
3249
|
+
valueKind: 'string',
|
|
3250
|
+
enumValues: ['INBOUND', 'OUTBOUND'],
|
|
3251
|
+
repeatable: false,
|
|
3252
|
+
},
|
|
3253
|
+
{
|
|
3254
|
+
name: 'iteration-count',
|
|
3255
|
+
path: ['iterationCount'],
|
|
3256
|
+
location: 'body',
|
|
3257
|
+
required: false,
|
|
3258
|
+
description: 'Number of iterations to run for each test case (1-10000)',
|
|
3259
|
+
valueKind: 'integer',
|
|
3260
|
+
repeatable: false,
|
|
3261
|
+
},
|
|
3262
|
+
{
|
|
3263
|
+
name: 'max-concurrent-jobs',
|
|
3264
|
+
path: ['maxConcurrentJobs'],
|
|
3265
|
+
location: 'body',
|
|
3266
|
+
required: false,
|
|
3267
|
+
description: 'Maximum number of concurrent simulation jobs',
|
|
3268
|
+
valueKind: 'integer',
|
|
3269
|
+
repeatable: false,
|
|
3270
|
+
},
|
|
3271
|
+
{
|
|
3272
|
+
name: 'max-simulation-duration-seconds',
|
|
3273
|
+
path: ['maxSimulationDurationSeconds'],
|
|
3274
|
+
location: 'body',
|
|
3275
|
+
required: false,
|
|
3276
|
+
description: 'Maximum duration in seconds for each simulation',
|
|
3277
|
+
valueKind: 'integer',
|
|
3278
|
+
repeatable: false,
|
|
3279
|
+
},
|
|
3280
|
+
{
|
|
3281
|
+
name: 'silence-timeout-seconds',
|
|
3282
|
+
path: ['silenceTimeoutSeconds'],
|
|
3283
|
+
location: 'body',
|
|
3284
|
+
required: false,
|
|
3285
|
+
description: 'Timeout in seconds for silence detection',
|
|
3286
|
+
valueKind: 'integer',
|
|
3287
|
+
repeatable: false,
|
|
3288
|
+
},
|
|
3289
|
+
{
|
|
3290
|
+
name: 'end-call-phrases',
|
|
3291
|
+
path: ['endCallPhrases'],
|
|
3292
|
+
location: 'body',
|
|
3293
|
+
required: false,
|
|
3294
|
+
description: 'Phrases that trigger end of call. Empty array disables the feature.',
|
|
3295
|
+
valueKind: 'array',
|
|
3296
|
+
repeatable: true,
|
|
3297
|
+
},
|
|
3298
|
+
{
|
|
3299
|
+
name: 'end-call-reasons',
|
|
3300
|
+
path: ['endCallReasons'],
|
|
3301
|
+
location: 'body',
|
|
3302
|
+
required: false,
|
|
3303
|
+
description: 'Semantic conditions that trigger end of call. The LLM evaluates the conversation against these conditions. Empty array disables the feature.',
|
|
3304
|
+
valueKind: 'array',
|
|
3305
|
+
repeatable: true,
|
|
3306
|
+
},
|
|
3307
|
+
{
|
|
3308
|
+
name: 'execution-mode',
|
|
3309
|
+
path: ['executionMode'],
|
|
3310
|
+
location: 'body',
|
|
3311
|
+
required: false,
|
|
3312
|
+
description: 'Execution mode (PARALLEL or SEQUENTIAL)',
|
|
3313
|
+
valueKind: 'string',
|
|
3314
|
+
enumValues: ['PARALLEL', 'SEQUENTIAL_SAME_RUN_PLAN', 'SEQUENTIAL_PROJECT'],
|
|
3315
|
+
repeatable: false,
|
|
3316
|
+
},
|
|
3317
|
+
{
|
|
3318
|
+
name: 'scenarios',
|
|
3319
|
+
path: ['scenarios'],
|
|
3320
|
+
location: 'body',
|
|
3321
|
+
required: false,
|
|
3322
|
+
description: 'Deprecated: use `flows` instead. Replaces the scenarios on this run plan. Omit to leave them unchanged; send an empty array to detach them all, which is how a scenario-based plan is moved over to flows.',
|
|
3323
|
+
valueKind: 'array',
|
|
3324
|
+
repeatable: false,
|
|
3325
|
+
},
|
|
3326
|
+
{
|
|
3327
|
+
name: 'flows',
|
|
3328
|
+
path: ['flows'],
|
|
3329
|
+
location: 'body',
|
|
3330
|
+
required: false,
|
|
3331
|
+
description: 'Replaces the customer flows attached to this run plan. Omit to leave them unchanged; send an empty array to detach them all.',
|
|
3332
|
+
valueKind: 'array',
|
|
3333
|
+
repeatable: false,
|
|
3334
|
+
},
|
|
3335
|
+
{
|
|
3336
|
+
name: 'personas',
|
|
3337
|
+
path: ['personas'],
|
|
3338
|
+
location: 'body',
|
|
3339
|
+
required: false,
|
|
3340
|
+
description: 'Personas to include in this run plan',
|
|
3341
|
+
valueKind: 'array',
|
|
3342
|
+
repeatable: false,
|
|
3343
|
+
},
|
|
3344
|
+
{
|
|
3345
|
+
name: 'agent-endpoints',
|
|
3346
|
+
path: ['agentEndpoints'],
|
|
3347
|
+
location: 'body',
|
|
3348
|
+
required: false,
|
|
3349
|
+
description: 'Agent endpoints to include in this run plan',
|
|
3350
|
+
valueKind: 'array',
|
|
3351
|
+
repeatable: false,
|
|
3352
|
+
},
|
|
3353
|
+
{
|
|
3354
|
+
name: 'metrics',
|
|
3355
|
+
path: ['metrics'],
|
|
3356
|
+
location: 'body',
|
|
3357
|
+
required: false,
|
|
3358
|
+
description: 'Metric definitions to include in this run plan. Reference each by `id` (UUID) or `slug`.',
|
|
3359
|
+
valueKind: 'array',
|
|
3360
|
+
repeatable: false,
|
|
3361
|
+
},
|
|
3362
|
+
],
|
|
3363
|
+
hasParams: true,
|
|
3364
|
+
paramsAllOptional: true,
|
|
3365
|
+
bodyOpaque: false,
|
|
3366
|
+
bodyVariants: [],
|
|
3367
|
+
acceptsBody: true,
|
|
3368
|
+
requiresAuth: true,
|
|
3369
|
+
},
|
|
3370
|
+
{
|
|
3371
|
+
commandPath: ['simulation', 'run'],
|
|
3372
|
+
clientProperty: 'simulation',
|
|
3373
|
+
methodName: 'run',
|
|
3374
|
+
httpMethod: 'post',
|
|
3375
|
+
httpPath: '/v1/simulation/run',
|
|
3376
|
+
summary: 'Run a simulation',
|
|
3377
|
+
description: 'Starts a simulation and returns the run. Send `plan` to describe a simulation and run it once. Add `saveAsPlan` to keep that configuration as a reusable run plan. Send `planId` instead to run a plan you already have.',
|
|
3378
|
+
positionals: [],
|
|
3379
|
+
flags: [],
|
|
3380
|
+
hasParams: true,
|
|
3381
|
+
paramsAllOptional: false,
|
|
3382
|
+
bodyOpaque: true,
|
|
3383
|
+
bodyVariants: [
|
|
3384
|
+
{
|
|
3385
|
+
name: 'RunSimulationFromConfig',
|
|
3386
|
+
required: ['plan'],
|
|
3387
|
+
},
|
|
3388
|
+
{
|
|
3389
|
+
name: 'RunSimulationFromPlanId',
|
|
3390
|
+
required: ['planId'],
|
|
3391
|
+
},
|
|
3392
|
+
],
|
|
3393
|
+
acceptsBody: true,
|
|
3394
|
+
requiresAuth: true,
|
|
3395
|
+
},
|
|
3396
|
+
{
|
|
3397
|
+
commandPath: ['webhook', 'create'],
|
|
3398
|
+
clientProperty: 'webhook',
|
|
3399
|
+
methodName: 'create',
|
|
3400
|
+
httpMethod: 'post',
|
|
3401
|
+
httpPath: '/v1/webhook',
|
|
3402
|
+
summary: 'Create webhook',
|
|
3403
|
+
description: 'Creates a new webhook with event subscriptions. The signing secret is only returned in this response.',
|
|
3404
|
+
positionals: [],
|
|
3405
|
+
flags: [
|
|
3406
|
+
{
|
|
3407
|
+
name: 'url',
|
|
3408
|
+
path: ['url'],
|
|
3409
|
+
location: 'body',
|
|
3410
|
+
required: true,
|
|
3411
|
+
description: 'Webhook URL',
|
|
3412
|
+
valueKind: 'string',
|
|
3413
|
+
repeatable: false,
|
|
3414
|
+
},
|
|
3415
|
+
{
|
|
3416
|
+
name: 'description',
|
|
3417
|
+
path: ['description'],
|
|
3418
|
+
location: 'body',
|
|
3419
|
+
required: false,
|
|
3420
|
+
description: 'Webhook description',
|
|
3421
|
+
valueKind: 'string',
|
|
3422
|
+
repeatable: false,
|
|
3423
|
+
},
|
|
3424
|
+
{
|
|
3425
|
+
name: 'headers',
|
|
3426
|
+
path: ['headers'],
|
|
3427
|
+
location: 'body',
|
|
3428
|
+
required: false,
|
|
3429
|
+
description: 'Request headers (e.g. authorization tokens)',
|
|
3430
|
+
valueKind: 'object',
|
|
3431
|
+
repeatable: false,
|
|
3432
|
+
},
|
|
3433
|
+
{
|
|
3434
|
+
name: 'events',
|
|
3435
|
+
path: ['events'],
|
|
3436
|
+
location: 'body',
|
|
3437
|
+
required: true,
|
|
3438
|
+
description: 'Event types to subscribe to (at least one required)',
|
|
3439
|
+
valueKind: 'array',
|
|
3440
|
+
enumValues: [
|
|
3441
|
+
'CALL_ANALYSIS_COMPLETED',
|
|
3442
|
+
'CALL_ANALYSIS_FAILED',
|
|
3443
|
+
'CALL_ANALYSIS_CANCELLED',
|
|
3444
|
+
'CALL_EVALUATION_COMPLETED',
|
|
3445
|
+
'CALL_EVALUATION_FAILED',
|
|
3446
|
+
'SIMULATION_RUN_PLAN_JOB_STARTED',
|
|
3447
|
+
'SIMULATION_RUN_PLAN_JOB_COMPLETED',
|
|
3448
|
+
'SIMULATION_RUN_PLAN_JOB_FAILED',
|
|
3449
|
+
'SIMULATION_RUN_PLAN_JOB_CANCELLED',
|
|
3450
|
+
'SIMULATION_JOB_STARTED',
|
|
3451
|
+
'SIMULATION_JOB_COMPLETED',
|
|
3452
|
+
'SIMULATION_JOB_FAILED',
|
|
3453
|
+
'SIMULATION_JOB_CANCELLED',
|
|
3454
|
+
'METRIC_COLLECTION_JOB_COMPLETED',
|
|
3455
|
+
'METRIC_COLLECTION_JOB_FAILED',
|
|
3456
|
+
'CHAT_ANALYSIS_COMPLETED',
|
|
3457
|
+
'CHAT_ANALYSIS_FAILED',
|
|
3458
|
+
'ISSUE_OPENED',
|
|
3459
|
+
'ISSUE_RESOLVED',
|
|
3460
|
+
],
|
|
3461
|
+
repeatable: true,
|
|
3462
|
+
},
|
|
3463
|
+
],
|
|
3464
|
+
hasParams: true,
|
|
3465
|
+
paramsAllOptional: false,
|
|
3466
|
+
bodyOpaque: false,
|
|
3467
|
+
bodyVariants: [],
|
|
3468
|
+
acceptsBody: true,
|
|
3469
|
+
requiresAuth: true,
|
|
3470
|
+
},
|
|
3471
|
+
{
|
|
3472
|
+
commandPath: ['webhook', 'delete'],
|
|
3473
|
+
clientProperty: 'webhook',
|
|
3474
|
+
methodName: 'delete',
|
|
3475
|
+
httpMethod: 'delete',
|
|
3476
|
+
httpPath: '/v1/webhook/{webhookId}',
|
|
3477
|
+
summary: 'Delete webhook',
|
|
3478
|
+
description: 'Deletes a webhook and all its event subscriptions.',
|
|
3479
|
+
positionals: [
|
|
3480
|
+
{
|
|
3481
|
+
name: 'webhook-id',
|
|
3482
|
+
paramKey: 'webhookId',
|
|
3483
|
+
description: 'The ID of the webhook to delete',
|
|
3484
|
+
},
|
|
3485
|
+
],
|
|
3486
|
+
flags: [],
|
|
3487
|
+
hasParams: false,
|
|
3488
|
+
paramsAllOptional: true,
|
|
3489
|
+
bodyOpaque: false,
|
|
3490
|
+
bodyVariants: [],
|
|
3491
|
+
acceptsBody: false,
|
|
3492
|
+
requiresAuth: true,
|
|
3493
|
+
},
|
|
3494
|
+
{
|
|
3495
|
+
commandPath: ['webhook', 'get'],
|
|
3496
|
+
clientProperty: 'webhook',
|
|
3497
|
+
methodName: 'getByID',
|
|
3498
|
+
httpMethod: 'get',
|
|
3499
|
+
httpPath: '/v1/webhook/{webhookId}',
|
|
3500
|
+
summary: 'Get webhook by ID',
|
|
3501
|
+
description: 'Returns a specific webhook with its event subscriptions.',
|
|
3502
|
+
positionals: [
|
|
3503
|
+
{
|
|
3504
|
+
name: 'webhook-id',
|
|
3505
|
+
paramKey: 'webhookId',
|
|
3506
|
+
description: 'The ID of the webhook to retrieve',
|
|
3507
|
+
},
|
|
3508
|
+
],
|
|
3509
|
+
flags: [],
|
|
3510
|
+
hasParams: false,
|
|
3511
|
+
paramsAllOptional: true,
|
|
3512
|
+
bodyOpaque: false,
|
|
3513
|
+
bodyVariants: [],
|
|
3514
|
+
acceptsBody: false,
|
|
3515
|
+
requiresAuth: true,
|
|
3516
|
+
},
|
|
3517
|
+
{
|
|
3518
|
+
commandPath: ['webhook', 'list'],
|
|
3519
|
+
clientProperty: 'webhook',
|
|
3520
|
+
methodName: 'list',
|
|
3521
|
+
httpMethod: 'get',
|
|
3522
|
+
httpPath: '/v1/webhook',
|
|
3523
|
+
summary: 'List webhooks',
|
|
3524
|
+
description: 'Returns a paginated list of webhooks with their event subscriptions.',
|
|
3525
|
+
positionals: [],
|
|
3526
|
+
flags: [
|
|
3527
|
+
{
|
|
3528
|
+
name: 'limit',
|
|
3529
|
+
path: ['limit'],
|
|
3530
|
+
location: 'query',
|
|
3531
|
+
required: false,
|
|
3532
|
+
description: 'Maximum number of webhooks to return (default: 20, max: 50)',
|
|
3533
|
+
valueKind: 'integer',
|
|
3534
|
+
repeatable: false,
|
|
3535
|
+
},
|
|
3536
|
+
{
|
|
3537
|
+
name: 'after',
|
|
3538
|
+
path: ['after'],
|
|
3539
|
+
location: 'query',
|
|
3540
|
+
required: false,
|
|
3541
|
+
description: 'Cursor for pagination - webhook ID to start after',
|
|
3542
|
+
valueKind: 'string',
|
|
3543
|
+
repeatable: false,
|
|
3544
|
+
},
|
|
3545
|
+
],
|
|
3546
|
+
hasParams: true,
|
|
3547
|
+
paramsAllOptional: true,
|
|
3548
|
+
bodyOpaque: false,
|
|
3549
|
+
bodyVariants: [],
|
|
3550
|
+
acceptsBody: false,
|
|
3551
|
+
requiresAuth: true,
|
|
3552
|
+
},
|
|
3553
|
+
];
|