freeclimb 4.0.4 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (125) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +91 -9
  3. data/Gemfile.lock +1 -1
  4. data/README.md +25 -4
  5. data/docs/AccountResult.md +2 -2
  6. data/docs/AccountResultAllOf.md +2 -2
  7. data/docs/AccountStatus.md +18 -0
  8. data/docs/AccountType.md +17 -0
  9. data/docs/AnsweredBy.md +17 -0
  10. data/docs/CallDirection.md +18 -0
  11. data/docs/CallResult.md +3 -3
  12. data/docs/CallResultAllOf.md +3 -3
  13. data/docs/CallStatus.md +23 -0
  14. data/docs/ConferenceResult.md +2 -2
  15. data/docs/ConferenceResultAllOf.md +2 -2
  16. data/docs/ConferenceStatus.md +19 -0
  17. data/docs/CreateConference.md +2 -2
  18. data/docs/CreateConferenceAllOf.md +2 -2
  19. data/docs/CreateConferenceRequest.md +1 -1
  20. data/docs/DefaultApi.md +5 -5
  21. data/docs/Dequeue.md +1 -1
  22. data/docs/GetSpeech.md +3 -3
  23. data/docs/GetSpeechAllOf.md +3 -3
  24. data/docs/GetSpeechReason.md +21 -0
  25. data/docs/GrammarFileBuiltIn.md +30 -0
  26. data/docs/GrammarType.md +17 -0
  27. data/docs/IfMachine.md +17 -0
  28. data/docs/Language.md +41 -0
  29. data/docs/LogLevel.md +18 -0
  30. data/docs/LogResult.md +1 -1
  31. data/docs/MachineType.md +17 -0
  32. data/docs/MessageDirection.md +17 -0
  33. data/docs/MessageResult.md +1 -1
  34. data/docs/MessageResultAllOf.md +1 -1
  35. data/docs/MessageStatus.md +26 -0
  36. data/docs/OutDial.md +1 -1
  37. data/docs/OutDialAllOf.md +1 -1
  38. data/docs/PlayBeep.md +19 -0
  39. data/docs/QueueResultStatus.md +19 -0
  40. data/docs/RecordUtteranceTermReason.md +19 -0
  41. data/docs/RequestType.md +38 -0
  42. data/docs/StartRecordCall.md +1 -1
  43. data/docs/Unpark.md +1 -1
  44. data/docs/UpdateCallRequest.md +1 -1
  45. data/docs/UpdateCallRequestStatus.md +17 -0
  46. data/docs/UpdateConferenceRequest.md +2 -2
  47. data/docs/UpdateConferenceRequestStatus.md +17 -0
  48. data/lib/freeclimb/api/default_api.rb +4 -8
  49. data/lib/freeclimb/models/account_result.rb +2 -52
  50. data/lib/freeclimb/models/account_result_all_of.rb +2 -52
  51. data/lib/freeclimb/models/account_status.rb +38 -0
  52. data/lib/freeclimb/models/account_type.rb +37 -0
  53. data/lib/freeclimb/models/answered_by.rb +37 -0
  54. data/lib/freeclimb/models/call_direction.rb +38 -0
  55. data/lib/freeclimb/models/call_result.rb +3 -43
  56. data/lib/freeclimb/models/call_result_all_of.rb +3 -43
  57. data/lib/freeclimb/models/call_status.rb +43 -0
  58. data/lib/freeclimb/models/conference_result.rb +4 -52
  59. data/lib/freeclimb/models/conference_result_all_of.rb +4 -52
  60. data/lib/freeclimb/models/conference_status.rb +39 -0
  61. data/lib/freeclimb/models/create_conference.rb +4 -3
  62. data/lib/freeclimb/models/create_conference_all_of.rb +4 -3
  63. data/lib/freeclimb/models/create_conference_request.rb +1 -36
  64. data/lib/freeclimb/models/get_speech.rb +3 -4
  65. data/lib/freeclimb/models/get_speech_all_of.rb +3 -4
  66. data/lib/freeclimb/models/get_speech_reason.rb +41 -0
  67. data/lib/freeclimb/models/grammar_file_built_in.rb +50 -0
  68. data/lib/freeclimb/models/grammar_type.rb +37 -0
  69. data/lib/freeclimb/models/if_machine.rb +37 -0
  70. data/lib/freeclimb/models/language.rb +61 -0
  71. data/lib/freeclimb/models/log_level.rb +38 -0
  72. data/lib/freeclimb/models/log_result.rb +1 -37
  73. data/lib/freeclimb/models/machine_type.rb +37 -0
  74. data/lib/freeclimb/models/message_direction.rb +37 -0
  75. data/lib/freeclimb/models/message_result.rb +1 -37
  76. data/lib/freeclimb/models/message_result_all_of.rb +1 -37
  77. data/lib/freeclimb/models/message_status.rb +46 -0
  78. data/lib/freeclimb/models/out_dial.rb +1 -2
  79. data/lib/freeclimb/models/out_dial_all_of.rb +1 -2
  80. data/lib/freeclimb/models/play_beep.rb +39 -0
  81. data/lib/freeclimb/models/queue_result_status.rb +39 -0
  82. data/lib/freeclimb/models/record_utterance_term_reason.rb +39 -0
  83. data/lib/freeclimb/models/request_type.rb +58 -0
  84. data/lib/freeclimb/models/update_call_request.rb +1 -36
  85. data/lib/freeclimb/models/update_call_request_status.rb +37 -0
  86. data/lib/freeclimb/models/update_conference_request.rb +2 -50
  87. data/lib/freeclimb/models/update_conference_request_status.rb +37 -0
  88. data/lib/freeclimb/version.rb +1 -1
  89. data/lib/freeclimb.rb +21 -0
  90. data/openapi.json +4220 -0
  91. data/spec/api/default_api_spec.rb +532 -700
  92. data/spec/configuration_spec.rb +2 -1
  93. data/spec/models/account_result_spec.rb +0 -8
  94. data/spec/models/account_status_spec.rb +43 -0
  95. data/spec/models/account_type_spec.rb +38 -0
  96. data/spec/models/answered_by_spec.rb +38 -0
  97. data/spec/models/available_number_spec.rb +6 -0
  98. data/spec/models/call_direction_spec.rb +43 -0
  99. data/spec/models/call_result_spec.rb +0 -4
  100. data/spec/models/call_status_spec.rb +68 -0
  101. data/spec/models/conference_result_spec.rb +0 -8
  102. data/spec/models/conference_status_spec.rb +48 -0
  103. data/spec/models/create_conference_request_spec.rb +0 -4
  104. data/spec/models/get_speech_reason_spec.rb +58 -0
  105. data/spec/models/grammar_file_built_in_spec.rb +103 -0
  106. data/spec/models/grammar_type_spec.rb +38 -0
  107. data/spec/models/if_machine_spec.rb +38 -0
  108. data/spec/models/incoming_number_result_spec.rb +12 -0
  109. data/spec/models/language_spec.rb +158 -0
  110. data/spec/models/log_level_spec.rb +43 -0
  111. data/spec/models/log_result_spec.rb +0 -4
  112. data/spec/models/machine_type_spec.rb +38 -0
  113. data/spec/models/message_direction_spec.rb +38 -0
  114. data/spec/models/message_result_spec.rb +0 -4
  115. data/spec/models/message_status_spec.rb +83 -0
  116. data/spec/models/play_beep_spec.rb +48 -0
  117. data/spec/models/queue_result_spec.rb +1 -1
  118. data/spec/models/queue_result_status_spec.rb +48 -0
  119. data/spec/models/record_utterance_term_reason_spec.rb +48 -0
  120. data/spec/models/request_type_spec.rb +143 -0
  121. data/spec/models/update_call_request_spec.rb +0 -4
  122. data/spec/models/update_call_request_status_spec.rb +38 -0
  123. data/spec/models/update_conference_request_spec.rb +0 -4
  124. data/spec/models/update_conference_request_status_spec.rb +38 -0
  125. metadata +138 -53
data/openapi.json ADDED
@@ -0,0 +1,4220 @@
1
+ {
2
+ "openapi": "3.0.0",
3
+ "info": {
4
+ "title": "FreeClimb API",
5
+ "version": "1.0.0",
6
+ "description": "FreeClimb is a cloud-based application programming interface (API) that puts the power of the Vail platform in your hands. FreeClimb simplifies the process of creating applications that can use a full range of telephony features without requiring specialized or on-site telephony equipment. Using the FreeClimb REST API to write applications is easy! You have the option to use the language of your choice or hit the API directly. Your application can execute a command by issuing a RESTful request to the FreeClimb API. The base URL to send HTTP requests to the FreeClimb REST API is: /apiserver. FreeClimb authenticates and processes your request.",
7
+ "contact": {
8
+ "name": "FreeClimb API Support",
9
+ "url": "https://www.freeclimb.com/support/",
10
+ "email": "support@freeclimb.com"
11
+ }
12
+ },
13
+ "servers": [
14
+ {
15
+ "url": "https://www.freeclimb.com/apiserver"
16
+ }
17
+ ],
18
+ "components": {
19
+ "parameters": {
20
+ "AccountId": {
21
+ "name": "accountId",
22
+ "in": "path",
23
+ "description": "ID of the account",
24
+ "required": true,
25
+ "x-account-id": true,
26
+ "schema": {
27
+ "type": "string"
28
+ }
29
+ },
30
+ "Capabilities.Voice": {
31
+ "name": "capabilities.voice",
32
+ "in": "query",
33
+ "description": "",
34
+ "required": false,
35
+ "schema": {
36
+ "type": "boolean"
37
+ }
38
+ },
39
+ "Capabilities.Sms": {
40
+ "name": "capabilities.sms",
41
+ "in": "query",
42
+ "description": "",
43
+ "required": false,
44
+ "schema": {
45
+ "type": "boolean"
46
+ }
47
+ },
48
+ "Capabilities.TollFree": {
49
+ "name": "capabilities.tollFree",
50
+ "in": "query",
51
+ "description": "",
52
+ "required": false,
53
+ "schema": {
54
+ "type": "boolean"
55
+ }
56
+ },
57
+ "Capabilities.TenDLC": {
58
+ "name": "capabilities.tenDLC",
59
+ "in": "query",
60
+ "description": "",
61
+ "required": false,
62
+ "schema": {
63
+ "type": "boolean"
64
+ }
65
+ },
66
+ "Capabilities.ShortCode": {
67
+ "name": "capabilities.shortCode",
68
+ "in": "query",
69
+ "description": "",
70
+ "required": false,
71
+ "schema": {
72
+ "type": "boolean"
73
+ }
74
+ }
75
+ },
76
+ "securitySchemes": {
77
+ "fc": {
78
+ "scheme": "basic",
79
+ "type": "http",
80
+ "description": "HTTP requests to the FreeClimb REST API are protected with HTTP Basic authentication --- you use your FreeClimb-generated account ID and API key to authenticate each HTTP request. You can view your credentials under the API Keys section in your Dashboard."
81
+ }
82
+ },
83
+ "schemas": {
84
+ "AccountStatus": {
85
+ "type": "string",
86
+ "enum": ["closed", "suspended", "active"],
87
+ "x-enum-varnames": ["CLOSED", "SUSPENDED", "ACTIVE"],
88
+ "description": "The status of this account. It is one of: active, suspended, or closed."
89
+ },
90
+ "AccountType": {
91
+ "type": "string",
92
+ "description": "The type of this account. It is one of: trial or full.",
93
+ "enum": ["trial", "full"],
94
+ "x-enum-varnames": ["TRIAL", "FULL"]
95
+ },
96
+ "AnsweredBy": {
97
+ "type": "string",
98
+ "enum": ["human", "machine"],
99
+ "x-enum-varnames": ["HUMAN", "MACHINE"],
100
+ "description": "If this Call was initiated with answering machine detection, either `human` or `machine`. Empty otherwise."
101
+ },
102
+ "CallDirection": {
103
+ "type": "string",
104
+ "enum": ["inbound", "outboundAPI", "outboundDial"],
105
+ "x-enum-varnames": ["INBOUND", "OUTBOUND_API", "OUTBOUND_DIAL"],
106
+ "description": "Direction of the Call. `inbound` for Calls into FreeClimb, `outboundAPI` for Calls initiated via the REST API, `outboundDial` for Calls initiated by the `OutDial` PerCL command."
107
+ },
108
+ "CallStatus": {
109
+ "type": "string",
110
+ "enum": [
111
+ "queued",
112
+ "ringing",
113
+ "inProgress",
114
+ "canceled",
115
+ "completed",
116
+ "failed",
117
+ "busy",
118
+ "noAnswer"
119
+ ],
120
+ "x-enum-varnames": [
121
+ "QUEUED",
122
+ "RINGING",
123
+ "IN_PROGRESS",
124
+ "CANCELED",
125
+ "COMPLETED",
126
+ "FAILED",
127
+ "BUSY",
128
+ "NO_ANSWER"
129
+ ],
130
+ "description": "* `queued` – Call is ready and waiting in line before going out. * `ringing` – Call is currently ringing. * `inProgress` – Call was answered and is currently in progress. * `canceled` – Call was hung up while it was queued or ringing. * `completed` – Call was answered and has ended normally. * `busy` – Caller received a busy signal. * `failed` – Call could not be completed as dialed, most likely because the phone number was non-existent. * `noAnswer` – Call ended without being answered."
131
+ },
132
+ "ConferenceStatus": {
133
+ "type": "string",
134
+ "enum": ["empty", "populated", "inProgress", "terminated"],
135
+ "x-enum-varnames": ["EMPTY", "POPULATED", "IN_PROGRESS", "TERMINATED"],
136
+ "description": "The status of the Conference. One of: creating, empty, populated, inProgress, or terminated."
137
+ },
138
+ "GetSpeechReason": {
139
+ "type": "string",
140
+ "enum": [
141
+ "error",
142
+ "hangup",
143
+ "digit",
144
+ "noInput",
145
+ "noMatch",
146
+ "recognition"
147
+ ],
148
+ "x-enum-varnames": [
149
+ "ERROR",
150
+ "HANGUP",
151
+ "DIGIT",
152
+ "NO_INPUT",
153
+ "NO_MATCH",
154
+ "RECOGNITION"
155
+ ]
156
+ },
157
+ "GrammarFileBuiltIn": {
158
+ "type": "string",
159
+ "enum": [
160
+ "ALPHNUM6",
161
+ "ANY_DIG",
162
+ "DIG1",
163
+ "DIG2",
164
+ "DIG3",
165
+ "DIG4",
166
+ "DIG5",
167
+ "DIG6",
168
+ "DIG7",
169
+ "DIG8",
170
+ "DIG9",
171
+ "DIG10",
172
+ "DIG11",
173
+ "UP_TO_20_DIGIT_SEQUENCE",
174
+ "VERSAY_YESNO"
175
+ ],
176
+ "x-enum-varnames": [
177
+ "ALPHNUM6",
178
+ "ANY_DIG",
179
+ "DIG1",
180
+ "DIG2",
181
+ "DIG3",
182
+ "DIG4",
183
+ "DIG5",
184
+ "DIG6",
185
+ "DIG7",
186
+ "DIG8",
187
+ "DIG9",
188
+ "DIG10",
189
+ "DIG11",
190
+ "UP_TO_20_DIGIT_SEQUENCE",
191
+ "VERSAY_YESNO"
192
+ ]
193
+ },
194
+ "GrammarType": {
195
+ "type": "string",
196
+ "enum": ["URL", "BUILTIN"],
197
+ "x-enum-varnames": ["URL", "BUILT_IN"],
198
+ "description": "The grammar file type to use for speech recognition. A value of 'URL' indicates the grammarFile attribute specifies a URL that points to the grammar file. A value of `BUILTIN` indicates the grammarFile attribute specifies the name of one of the platform built-in grammar files."
199
+ },
200
+ "IfMachine": {
201
+ "type": "string",
202
+ "enum": ["redirect", "hangup"],
203
+ "x-enum-varnames": ["REDIRECT", "HANGUP"],
204
+ "description": "Specifies how FreeClimb should handle this OutDial if an answering machine answers the Call. Valid values: `redirect` invokes the ifMachineUrl for instructions. `hangup` hangs up the Call. The ifMachineUrl will not be invoked."
205
+ },
206
+ "Language": {
207
+ "type": "string",
208
+ "enum": [
209
+ "ca-ES",
210
+ "da-DK",
211
+ "de-DE",
212
+ "en-AU",
213
+ "en-CA",
214
+ "en-GB",
215
+ "en-IN",
216
+ "en-US",
217
+ "es-ES",
218
+ "es-MX",
219
+ "fi-FI",
220
+ "fr-CA",
221
+ "fr-FR",
222
+ "it-IT",
223
+ "ja-JP",
224
+ "ko-KR",
225
+ "nb-NO",
226
+ "nl-NL",
227
+ "pl-PL",
228
+ "pt-BR",
229
+ "pt-PT",
230
+ "ru-RU",
231
+ "sv-SE",
232
+ "zh-CN",
233
+ "zh-HK",
234
+ "zh-TW"
235
+ ],
236
+ "x-enum-varnames": [
237
+ "CATALAN",
238
+ "DANISH",
239
+ "GERMAN",
240
+ "ENGLISH_AU",
241
+ "ENGLISH_CA",
242
+ "ENGLISH_UK",
243
+ "ENGLISH_IN",
244
+ "ENGLISH_US",
245
+ "ENGLISH_ES",
246
+ "ENGLISH_MX",
247
+ "FINNISH",
248
+ "FRENCH_CA",
249
+ "FRENCH_FR",
250
+ "ITALIAN",
251
+ "JAPANESE",
252
+ "KOREAN",
253
+ "NORWEGIAN",
254
+ "DUTCH",
255
+ "POLISH",
256
+ "PORTUGESE_BR",
257
+ "PORTUGESE_PT",
258
+ "RUSSIAN",
259
+ "SWEDISH",
260
+ "CHINESE_CN",
261
+ "CHINESE_HK",
262
+ "CHINESE_TW"
263
+ ]
264
+ },
265
+ "LogLevel": {
266
+ "type": "string",
267
+ "enum": ["info", "warning", "error"],
268
+ "x-enum-varnames": ["INFO", "WARNING", "ERROR"],
269
+ "description": "Level of the log. Possible values are info, warning, and error."
270
+ },
271
+ "MachineType": {
272
+ "type": "string",
273
+ "enum": ["answeringMachine", "faxMachine"],
274
+ "x-enum-varnames": ["ANSWERING_MACHINE", "FAX_MACHINE"]
275
+ },
276
+ "MessageDirection": {
277
+ "type": "string",
278
+ "enum": ["inbound", "outbound"],
279
+ "x-enum-varnames": ["INBOUND", "OUTBOUND"]
280
+ },
281
+ "MessageStatus": {
282
+ "type": "string",
283
+ "description": "Indicates the state of the message through the message lifecycle including: new, queued, rejected, sending, sent, failed, received, undelivered, expired, deleted, and unknown",
284
+ "enum": [
285
+ "new",
286
+ "queued",
287
+ "rejected",
288
+ "sending",
289
+ "sent",
290
+ "failed",
291
+ "received",
292
+ "undelivered",
293
+ "expired",
294
+ "deleted",
295
+ "unknown"
296
+ ],
297
+ "x-enum-varnames": [
298
+ "NEW",
299
+ "QUEUED",
300
+ "REJECTED",
301
+ "SENDING",
302
+ "SENT",
303
+ "FAILED",
304
+ "RECEIVED",
305
+ "UNDELIVERED",
306
+ "EXPIRED",
307
+ "DELETED",
308
+ "UNKNOWN"
309
+ ]
310
+ },
311
+ "PlayBeep": {
312
+ "type": "string",
313
+ "enum": ["always", "never", "entryOnly", "exitOnly"],
314
+ "x-enum-varnames": ["ALWAYS", "NEVER", "ENTRY_ONLY", "EXIT_ONLY"],
315
+ "description": "Controls when a beep is played. Valid values: `always`, `never`, `entryOnly`, `exitOnly`.",
316
+ "default": "always",
317
+ "x-enum-default-attr": "ALWAYS"
318
+ },
319
+ "QueueResultStatus": {
320
+ "type": "string",
321
+ "enum": ["queueFull", "dequeued", "hangup", "systemError"],
322
+ "x-enum-varnames": ["QUEUE_FULL", "DEQUEUED", "HANGUP", "SYSTEM_ERROR"]
323
+ },
324
+ "RecordUtteranceTermReason": {
325
+ "type": "string",
326
+ "enum": ["finishKey", "timeout", "hangup", "maxLength"],
327
+ "x-enum-varnames": ["FINISH_KEY", "TIMEOUT", "HANGUP", "MAX_LENGTH"]
328
+ },
329
+ "RequestType": {
330
+ "type": "string",
331
+ "enum": [
332
+ "inboundCall",
333
+ "record",
334
+ "getDigits",
335
+ "getSpeech",
336
+ "redirect",
337
+ "pause",
338
+ "outDialStart",
339
+ "outDialConnect",
340
+ "outDialApiConnect",
341
+ "machineDetected",
342
+ "dequeue",
343
+ "queueWait",
344
+ "addToQueueNotification",
345
+ "removeFromQueueNotification",
346
+ "callStatus",
347
+ "createConference",
348
+ "conferenceStatus",
349
+ "leaveConference",
350
+ "addToConferenceNotification",
351
+ "conferenceRecordingStatus",
352
+ "conferenceCallControl",
353
+ "messageDelivery",
354
+ "messageStatus"
355
+ ],
356
+ "x-enum-varnames": [
357
+ "INBOUND_CALL",
358
+ "RECORD",
359
+ "GET_DIGITS",
360
+ "GET_SPEECH",
361
+ "REDIRECT",
362
+ "PAUSE",
363
+ "OUT_DIAL_START",
364
+ "OUT_DIAL_CONNECT",
365
+ "OUT_DIAL_API_CONNECT",
366
+ "MACHINE_DETECTED",
367
+ "DEQUEUE",
368
+ "QUEUE_WAIT",
369
+ "ADD_TO_QUEUE_NOTIFICATION",
370
+ "REMOVE_FROM_QUEUE_NOTIFICATION",
371
+ "CALL_STATUS",
372
+ "CREATE_CONFERENCE",
373
+ "CONFERENCE_STATUS",
374
+ "LEAVE_CONFERENCE",
375
+ "ADD_TO_CONFERENCE_NOTIFICATION",
376
+ "CONFERENCE_RECORDING_STATUS",
377
+ "CONFERENCE_CALL_CONTROL",
378
+ "MESSAGE_DELIVERY",
379
+ "MESSAGE_STATUS"
380
+ ]
381
+ },
382
+ "UpdateCallRequestStatus": {
383
+ "type": "string",
384
+ "enum": ["canceled", "completed"],
385
+ "x-enum-varnames": ["CANCELED", "COMPLETED"],
386
+ "description": "Either `canceled` or `completed`. Specifying `canceled` attempts to hang up calls that are queued without affecting calls already in progress. Specifying `completed` attempts to hang up a call already in progress."
387
+ },
388
+ "UpdateConferenceRequestStatus": {
389
+ "type": "string",
390
+ "enum": ["empty", "terminated"],
391
+ "x-enum-varnames": ["EMPTY", "TERMINATED"],
392
+ "description": "New status of the conference. Valid values: `empty` or `terminated`. For more information, see **Status Parameter** below.**"
393
+ },
394
+ "PerclScript": {
395
+ "type": "object",
396
+ "description": "A PerCL script to be returned to the FreeClimb servers in FreeClimb applications",
397
+ "x-percl-script": true,
398
+ "properties": {
399
+ "commands": {
400
+ "type": "array",
401
+ "description": "A JSON array of PerCL commands",
402
+ "items": {
403
+ "$ref": "#/components/schemas/PerclCommand"
404
+ }
405
+ }
406
+ }
407
+ },
408
+ "PerclCommand": {
409
+ "type": "object",
410
+ "description": "An individual command used in a PerCLScript.",
411
+ "x-percl-command-base": true,
412
+ "discriminator": {
413
+ "propertyName": "command",
414
+ "mapping": {
415
+ "AddToConference": "#/components/schemas/AddToConference",
416
+ "CreateConference": "#/components/schemas/CreateConference",
417
+ "Dequeue": "#/components/schemas/Dequeue",
418
+ "Enqueue": "#/components/schemas/Enqueue",
419
+ "GetDigits": "#/components/schemas/GetDigits",
420
+ "GetSpeech": "#/components/schemas/GetSpeech",
421
+ "Hangup": "#/components/schemas/Hangup",
422
+ "OutDial": "#/components/schemas/OutDial",
423
+ "Pause": "#/components/schemas/Pause",
424
+ "Park": "#/components/schemas/Park",
425
+ "Play": "#/components/schemas/Play",
426
+ "PlayEarlyMedia": "#/components/schemas/PlayEarlyMedia",
427
+ "RecordUtterance": "#/components/schemas/RecordUtterance",
428
+ "Redirect": "#/components/schemas/Redirect",
429
+ "Reject": "#/components/schemas/Reject",
430
+ "RemoveFromConference": "#/components/schemas/RemoveFromConference",
431
+ "Say": "#/components/schemas/Say",
432
+ "SendDigits": "#/components/schemas/SendDigits",
433
+ "SetListen": "#/components/schemas/SetListen",
434
+ "SetTalk": "#/components/schemas/SetTalk",
435
+ "Sms": "#/components/schemas/Sms",
436
+ "StartRecordCall": "#/components/schemas/StartRecordCall",
437
+ "TerminateConference": "#/components/schemas/TerminateConference",
438
+ "Unpark": "#/components/schemas/Unpark"
439
+ }
440
+ },
441
+ "properties": {
442
+ "command": {
443
+ "type": "string",
444
+ "description": "Name of PerCL Command (this is automatically derived from mapping configuration and should not be manually supplied in any arguments)"
445
+ }
446
+ }
447
+ },
448
+ "AddToConference": {
449
+ "description": "The `AddToConference` command adds a Participant to a Conference. If this Participant currently is in another Conference, the Participant is first removed from that Conference. Two Call legs can be bridged together by creating a Conference and adding both Call legs to it via `AddToConference`.",
450
+ "x-percl-command": true,
451
+ "allOf": [
452
+ {
453
+ "$ref": "#/components/schemas/PerclCommand"
454
+ },
455
+ {
456
+ "type": "object",
457
+ "required": ["conferenceId"],
458
+ "properties": {
459
+ "allowCallControl": {
460
+ "description": "If `true`, Call control will be enabled for this Participant's Call leg.",
461
+ "type": "boolean"
462
+ },
463
+ "callControlSequence": {
464
+ "description": "Defines a sequence of digits that, when entered by this caller, invokes the `callControlUrl`. Only digits plus '*', and '#' may be used.",
465
+ "type": "string"
466
+ },
467
+ "callControlUrl": {
468
+ "description": "URL to be invoked when this Participant enters the digit sequence defined in the `callControlSequence` attribute.",
469
+ "type": "string"
470
+ },
471
+ "conferenceId": {
472
+ "description": "ID of the Conference to which to add the Participant (Call leg). Conference must exist or an error will result.",
473
+ "type": "string"
474
+ },
475
+ "callId": {
476
+ "description": "ID of the Call that will be added to the specified Conference. The Call must be in progress or an error will result. If the Call is part of an existing Conference, it is first removed from that Conference and is then moved to the new one.",
477
+ "type": "boolean"
478
+ },
479
+ "leaveConferenceUrl": {
480
+ "description": "URL to be invoked when the Participant leaves the Conference. ",
481
+ "type": "string"
482
+ },
483
+ "listen": {
484
+ "description": "If `true`, the Participant joins the Conference with listen privileges. This may be modified later via the REST API or `SetListen` PerCL command.",
485
+ "type": "boolean"
486
+ },
487
+ "notificationUrl": {
488
+ "description": "When the Participant enters the Conference, this URL will be invoked using an HTTP POST request with the standard request parameters.",
489
+ "type": "string"
490
+ },
491
+ "startConfOnEnter": {
492
+ "description": "Flag that indicates whether a Conference starts upon entry of this particular Participant. This is usually set to `true` for moderators and `false` for all other Participants.",
493
+ "type": "boolean"
494
+ },
495
+ "talk": {
496
+ "description": "If `true`, the Participant joins the Conference with talk privileges. This may be modified later via the REST API or `SetTalk` PerCL command. ",
497
+ "type": "boolean"
498
+ }
499
+ }
500
+ }
501
+ ]
502
+ },
503
+ "CreateConference": {
504
+ "description": "The `CreateConference` command does exactly what its name implies — it creates an unpopulated Conference (one without any Participants). Once created, a Conference remains in FreeClimb until explicitly terminated by a customer. Once a Conference has been terminated, it can no longer be used.",
505
+ "x-percl-command": true,
506
+ "allOf": [
507
+ {
508
+ "$ref": "#/components/schemas/PerclCommand"
509
+ },
510
+ {
511
+ "type": "object",
512
+ "required": ["actionUrl"],
513
+ "properties": {
514
+ "actionUrl": {
515
+ "description": " This URL is invoked once the Conference is successfully created. Actions on the Conference, such as adding Participants, can be performed via the PerCL script returned in the response. ",
516
+ "type": "string"
517
+ },
518
+ "alias": {
519
+ "description": "Descriptive name for the Conference. ",
520
+ "type": "boolean"
521
+ },
522
+ "playBeep": {
523
+ "description": "Indicates whether to play a beep when a Participant enters or leaves the Conference. either `always`, `never`, `entryOnly`, or `exitOnly`. Leaving this unset will make conference default to `always` ",
524
+ "$ref": "#/components/schemas/PlayBeep"
525
+ },
526
+ "record": {
527
+ "description": "When set to `true`, the entire Conference is recorded. The `statusCallbackUrl` of the Conference will receive a `conferenceRecordingEnded` Webhook when the Conference transitions from the `inProgress` to empty state.",
528
+ "type": "boolean"
529
+ },
530
+ "statusCallbackUrl": {
531
+ "description": "This URL is invoked when the status of the Conference changes or when a recording of the Conference has become available.",
532
+ "type": "string"
533
+ },
534
+ "waitUrl": {
535
+ "description": "If specified, this URL provides the custom hold music for the Conference when it is in the populated state. This attribute is always fetched using HTTP GET and is fetched just once – when the Conference is created. The URL must be an audio file that is reachable and readable by FreeClimb.",
536
+ "type": "string"
537
+ }
538
+ }
539
+ }
540
+ ]
541
+ },
542
+ "Dequeue": {
543
+ "description": "The `Dequeue` command transfers control of a Call that is in a Queue so that the waiting caller exits the Queue. Execution continues with the first command in the PerCL script returned by the `actionUrl` specified in the `Enqueue` command.",
544
+ "x-percl-command": true,
545
+ "allOf": [
546
+ {
547
+ "$ref": "#/components/schemas/PerclCommand"
548
+ },
549
+ {
550
+ "type": "object"
551
+ }
552
+ ]
553
+ },
554
+ "Enqueue": {
555
+ "description": "The `Enqueue` command adds the current Call to a call Queue. If the specified Queue does not exist, it is created and then the Call is added to it. The default maximum length of the queue is 100. This can be modified using the REST API.",
556
+ "x-percl-command": true,
557
+ "allOf": [
558
+ {
559
+ "$ref": "#/components/schemas/PerclCommand"
560
+ },
561
+ {
562
+ "type": "object",
563
+ "required": ["queueId", "waitUrl", "actionUrl"],
564
+ "properties": {
565
+ "actionUrl": {
566
+ "description": "A request is made to this URL when the Call leaves the Queue, which can occur if enqueue of the Call fails or when the call is dequeued via the `Dequeue` command, the REST API (POST to Queue Member resource), or the caller hangs up.",
567
+ "type": "string"
568
+ },
569
+ "notificationUrl": {
570
+ "description": "URL to be invoked when the call enters the queue. The request to the URL contains the standard request parameters.This is a notification only; any PerCL returned will be ignored.",
571
+ "type": "string"
572
+ },
573
+ "queueId": {
574
+ "description": "ID of the Queue to which to add the Call. If the Queue does not exist, it will be created. The ID must start with QU followed by 40 hex characters.",
575
+ "type": "string"
576
+ },
577
+ "waitUrl": {
578
+ "description": "A request is made to this URL when the Call leaves the Queue, which can occur if enqueue of the Call fails or when the call is dequeued via the `Dequeue` command, the REST API (POST to Queue Member resource), or the caller hangs up.",
579
+ "type": "string"
580
+ }
581
+ }
582
+ }
583
+ ]
584
+ },
585
+ "GetDigits": {
586
+ "description": "The `GetDigits` command collects DTMF inputs from the caller. It is only supported only when there is a single party on the Call. `GetDigits` is a Terminal Command — any actions following it are never executed. When the Caller is done entering the digits, FreeClimb submits that data to the provided `actionUrl` using an HTTP POST request. Your server will be required to respond to the FreeClimb Webhook with PerCL to continue handling the call.",
587
+ "x-percl-command": true,
588
+ "allOf": [
589
+ {
590
+ "$ref": "#/components/schemas/PerclCommand"
591
+ },
592
+ {
593
+ "type": "object",
594
+ "required": ["actionUrl"],
595
+ "properties": {
596
+ "actionUrl": {
597
+ "description": "When the Caller has finished entering digits, FreeClimb will make an HTTP POST request to this URL. A PerCL response is expected to continue handling the Call. Make sure to keep “http://“ in the URL.",
598
+ "type": "string"
599
+ },
600
+ "digitTimeoutMs": {
601
+ "description": " Maximum time in milliseconds that FreeClimb will wait for the Caller to press any digit after the last digit entered, before making a determination that a `timeout` has occurred and moving on to make the request to the actionUrl to submit the results of the `GetDigits` command. This timeout interval begins and resets after each digit entered.",
602
+ "type": "integer"
603
+ },
604
+ "finishOnKey": {
605
+ "description": "Digit that causes the input sequence to be deemed complete. This attribute defers to the `timeout` attribute – so, if a `timeout` occurs, then the command terminates regardless of the value of `finishOnKey`.",
606
+ "type": "string"
607
+ },
608
+ "flushBuffer": {
609
+ "description": "If set to true, the FreeClimb platform starts with an empty DTMF buffer to store the digits entered by the caller. If set to false, FreeClimb will append the user inputs to the end of the existing digits buffer and will return digits from the start of the digits buffer.",
610
+ "type": "boolean"
611
+ },
612
+ "initialTimeoutMs": {
613
+ "description": "Maximum time in milliseconds that FreeClimb will wait for the Caller to press the first digit before making a determination that a `timeout` has occurred and moving on to make the request to the `actionUrl` to submit the results of the `GetDigits` command. This timeout interval begins when all nested commands have been fully executed.",
614
+ "type": "string"
615
+ },
616
+ "maxDigits": {
617
+ "description": "Maximum number of digits expected in the input. If the terminating digit is not entered and the caller has entered the maximum number of digits allowed, the `GetDigits` command terminates regardless of the value of `finishOnKey`.",
618
+ "type": "integer"
619
+ },
620
+ "minDigits": {
621
+ "description": "Minimum number of digits expected in the input. If specified, FreeClimb will return the collected digits only if the Caller has entered at least that many digits.",
622
+ "type": "integer"
623
+ },
624
+ "prompts": {
625
+ "description": "JSON array of PerCL commands to nest within the `GetDigits` command. The `Say`, `Play`, and `Pause` commands can be used. The nested actions are executed while FreeClimb is waiting for input from the Caller.",
626
+ "type": "array",
627
+ "items": {
628
+ "$ref": "#/components/schemas/PerclCommand"
629
+ }
630
+ },
631
+ "privacyMode": {
632
+ "description": "Parameter `privacyMode` will not log the `text` as required by PCI compliance.",
633
+ "type": "boolean"
634
+ }
635
+ }
636
+ }
637
+ ]
638
+ },
639
+ "GetSpeech": {
640
+ "description": "The `GetSpeech` command enables the Caller to respond to the application using a supported language. Unlike DTMF entry, which implicitly restricts the user to using the available buttons on the phone key pad, speech input allows for flexible audio inputs based on grammar. FreeClimb supports grammars written using GRXML compatible with the Microsoft Speech Platform. `GetSpeech` is only supported on a single call leg. It is not supported when there are two or more call legs connected (as in within a Conference).",
641
+ "x-percl-command": true,
642
+ "allOf": [
643
+ {
644
+ "$ref": "#/components/schemas/PerclCommand"
645
+ },
646
+ {
647
+ "type": "object",
648
+ "required": ["actionUrl", "grammarFile"],
649
+ "properties": {
650
+ "actionUrl": {
651
+ "description": "When the caller has finished speaking or the command has timed out, FreeClimb will make a POST request to this URL. A PerCL response is expected to continue handling the call.",
652
+ "type": "string",
653
+ "format": "uri"
654
+ },
655
+ "grammarType": {
656
+ "$ref": "#/components/schemas/GrammarType",
657
+ "nullable": true
658
+ },
659
+ "grammarFile": {
660
+ "description": "The grammar file to use for speech recognition. If grammarType is set to URL, this attribute is specified as a download URL.",
661
+ "type": "string"
662
+ },
663
+ "grammarRule": {
664
+ "description": "The grammar rule within the specified grammar file to use for speech recognition. This attribute is optional if `grammarType` is `URL` and ignored if `grammarType` is `BUILTIN`.",
665
+ "type": "string"
666
+ },
667
+ "playBeep": {
668
+ "description": "Indicates whether a beep should be played just before speech recognition is initiated so that the speaker can start to speak.",
669
+ "type": "boolean"
670
+ },
671
+ "prompts": {
672
+ "description": "The JSON array of PerCL commands to nest within the `GetSpeech` command. The `Say`, `Play`, and `Pause` commands can be used. The nested actions are executed while FreeClimb is waiting for input from the caller. This allows for playing menu options to the caller and to prompt for the expected input. These commands stop executing when the caller begins to input speech.",
673
+ "type": "array",
674
+ "items": {
675
+ "$ref": "#/components/schemas/PerclCommand"
676
+ }
677
+ },
678
+ "noInputTimeoutMs": {
679
+ "description": "When recognition is started and there is no speech detected for `noInputTimeoutMs` milliseconds, the recognizer will terminate the recognition operation.",
680
+ "type": "integer"
681
+ },
682
+ "recognitionTimeoutMs": {
683
+ "description": "When playback of prompts ends and there is no match for `recognitionTimeoutMs` milliseconds, the recognizer will terminate the recognition operation.",
684
+ "type": "integer"
685
+ },
686
+ "confidenceThreshold": {
687
+ "description": "When a recognition resource recognizes a spoken phrase, it associates a confidence level with that match. Parameter `confidenceThreshold` specifies what confidence level is considered a successful match. Values are between 0.0 and 1.0.",
688
+ "type": "number"
689
+ },
690
+ "sensitivityLevel": {
691
+ "description": "The speech recognizer supports a variable level of sound sensitivity. The sensitivityLevel attribute allows for filtering out background noise, so it is not mistaken for speech. Values are between 0.0 and 1.0 ",
692
+ "type": "number"
693
+ },
694
+ "speechCompleteTimeoutMs": {
695
+ "description": "Parameter `speechCompleteTimeoutMs` specifies the length of silence required following user speech before the speech recognizer finalizes a result. This timeout applies when the recognizer currently has a complete match against an active grammar. Reasonable speech complete timeout values are typically in the range of 0.3 seconds to 1.0 seconds.",
696
+ "type": "integer"
697
+ },
698
+ "speechIncompleteTimeoutMs": {
699
+ "description": "Parameter `speechIncompleteTimeoutMs` specifies the length of silence following user speech after which a recognizer finalizes a result. This timeout applies when the speech prior to the silence is an incomplete match of all active grammars. Timeout `speechIncompleteTimeoutMs` is usually longer than `speechCompleteTimeoutMs` to allow users to pause mid-utterance.",
700
+ "type": "integer"
701
+ },
702
+ "privacyMode": {
703
+ "description": "Parameter privacyMode will not log the `text` as required by PCI compliance.",
704
+ "type": "boolean"
705
+ }
706
+ }
707
+ }
708
+ ]
709
+ },
710
+ "Hangup": {
711
+ "description": "The `Hangup` command terminates a Call. If `Hangup` is used as the first action in a PerCL response, it does not prevent FreeClimb from answering the Call and billing your account. See the `Reject` command to hang up at no charge.",
712
+ "x-percl-command": true,
713
+ "allOf": [
714
+ {
715
+ "$ref": "#/components/schemas/PerclCommand"
716
+ },
717
+ {
718
+ "type": "object",
719
+ "properties": {
720
+ "reason": {
721
+ "description": "The user defined reason for the hangup. In general, applications should use a set of enumerated values that are predefined to cover all exit points of the Call flows for the given application.",
722
+ "type": "string"
723
+ }
724
+ }
725
+ }
726
+ ]
727
+ },
728
+ "OutDial": {
729
+ "description": "The OutDial command is used to call a phone number",
730
+ "x-percl-command": true,
731
+ "allOf": [
732
+ {
733
+ "$ref": "#/components/schemas/PerclCommand"
734
+ },
735
+ {
736
+ "required": [
737
+ "actionUrl",
738
+ "callConnectUrl",
739
+ "callingNumber",
740
+ "destination"
741
+ ],
742
+ "type": "object",
743
+ "properties": {
744
+ "actionUrl": {
745
+ "description": "URL to which FreeClimb sends an HTTP POST request. ",
746
+ "type": "string"
747
+ },
748
+ "callConnectUrl": {
749
+ "description": "URL to which FreeClimb makes an HTTP POST request informing the result of the OutDial.",
750
+ "type": "string"
751
+ },
752
+ "callingNumber": {
753
+ "description": "he caller ID to show to the called party when FreeClimb calls. This can be one of the following: The To or From number provided in the first Webhook to your webserver. Any phone number you have purchased from FreeClimb.",
754
+ "type": "number"
755
+ },
756
+ "destination": {
757
+ "description": "E.164 representation of the phone number to Call. ",
758
+ "type": "number"
759
+ },
760
+ "ifMachine": {
761
+ "$ref": "#/components/schemas/IfMachine"
762
+ },
763
+ "ifMachineUrl": {
764
+ "description": "When the `ifMachine` flag is set to `redirect`, this attribute specifies a URL to which FreeClimb makes a POST request when an answering machine or a fax machine is detected. This URL is required if the `ifMachine` flag is set to `redirect`. Otherwise, it should not be included.",
765
+ "type": "string"
766
+ },
767
+ "sendDigits": {
768
+ "description": "DTMF tones to play to the outdialed Call. This is typically used to dial a number and then dial an extension.",
769
+ "type": "string"
770
+ },
771
+ "statusCallbackUrl": {
772
+ "description": "When the outdialed Call leg terminates, FreeClimb sends a `callStatus` Webhook to the `statusCallbackUrl`. This is a notification only; any PerCL command returned is ignored.",
773
+ "type": "string"
774
+ },
775
+ "timeout": {
776
+ "description": "Maximum time in seconds the `OutDial` command waits for the called party to answer the Call. When a timeout occurs, FreeClimb invokes the `callConnectUrl` Webhook to report that the out-dialed Call has ended with a status of `noAnswer`.",
777
+ "type": "integer"
778
+ },
779
+ "privacyMode": {
780
+ "description": "Parameter `privacyMode` will not log the `text` as required by PCI compliance.",
781
+ "type": "boolean"
782
+ }
783
+ }
784
+ }
785
+ ]
786
+ },
787
+ "Park": {
788
+ "description": "The `Park` command allows a caller to be put on hold. You can provide hold music,messages,etc until ready to resume the call. Park is a terminal command. Actions performed on the Call while on hold are provided in a PerCL script in response to the waitUrl property. Actions performed on the Call after it has been unparked (resumed) will be provided in a PerCL script in response to the actionUrl provided. A Call can be resumed in two ways -- REST API invocation or the Unpark percl command. No actions can be nested within Park and Park cannot be nested in any other actions. ",
789
+ "x-percl-command": true,
790
+ "allOf": [
791
+ {
792
+ "$ref": "#/components/schemas/PerclCommand"
793
+ },
794
+ {
795
+ "type": "object",
796
+ "required": ["waitUrl", "actionUrl"],
797
+ "properties": {
798
+ "waitUrl": {
799
+ "description": "Specifies a URL pointing to a PerCL script containing actions to be executed while the caller is Parked. Once the script returned by the waitUrl runs out of commands to execute, FreeClimb will re-request the waitUrl and start over, essentially looping the script requests indefinitely.",
800
+ "type": "string"
801
+ },
802
+ "actionUrl": {
803
+ "description": "A request is made to this URL when the Call is resumed, which can occur if the Call is resumed via the Unpark command, the REST API (POST to Call resource), or the caller hangs up. The PerCL script returned in response to the actionUrl will be executed on the resumed call.",
804
+ "type": "string"
805
+ },
806
+ "notificationUrl": {
807
+ "description": "URL to be invoked when the Call is parked. The request to the URL contains the standard request parameters.",
808
+ "type": "string"
809
+ }
810
+ }
811
+ }
812
+ ]
813
+ },
814
+ "Pause": {
815
+ "description": "The `Pause` command halts execution of the current PerCL script for a specified number of milliseconds. If `Pause` is the first command in a PerCL document, FreeClimb will wait for the specified time to elapse before picking up the call.",
816
+ "x-percl-command": true,
817
+ "allOf": [
818
+ {
819
+ "$ref": "#/components/schemas/PerclCommand"
820
+ },
821
+ {
822
+ "type": "object",
823
+ "required": ["length"],
824
+ "properties": {
825
+ "length": {
826
+ "description": "Length in milliseconds. FreeClimb will wait silently before continuing on.",
827
+ "type": "integer"
828
+ }
829
+ }
830
+ }
831
+ ]
832
+ },
833
+ "Play": {
834
+ "description": "The `Play` command plays an audio file back to the caller. The audio file may be located at any location accessible via a URL. `Play` can exist as a stand-alone command or as a nested command. It does not allow barge-in unless nested within a `GetSpeech` command. The file will always be played to completion unless nested.",
835
+ "x-percl-command": true,
836
+ "allOf": [
837
+ {
838
+ "$ref": "#/components/schemas/PerclCommand"
839
+ },
840
+ {
841
+ "required": ["file"],
842
+ "type": "object",
843
+ "properties": {
844
+ "file": {
845
+ "description": "RL of the audio file to be played to the caller. The URL can be the `recordingUrl` generated from the `RecordUtterance` or `StartRecordCall` PerCL commands. ",
846
+ "type": "string"
847
+ },
848
+ "loop": {
849
+ "description": "Number of times the audio file is played. Specifying '0' causes the Play action to loop until the Call is hung up.",
850
+ "type": "integer"
851
+ },
852
+ "conferenceId": {
853
+ "description": "ID of the Conference the audio should be rendered to. If this is not specified, the audio is by default rendered to the caller associated with the call leg that corresponds to the current PerCL execution context. The call leg associated with this command must be in the specified Conference or the command will return an error.",
854
+ "type": "string"
855
+ },
856
+ "privacyMode": {
857
+ "description": "Parameter `privacyMode` will not log the `text` as required by PCI compliance.",
858
+ "type": "boolean"
859
+ }
860
+ }
861
+ }
862
+ ]
863
+ },
864
+ "PlayEarlyMedia": {
865
+ "description": "`PlayEarlyMedia` is relevant only when present as the very first command in the PerCL script returned for an incoming Call. In such cases, the command is executed before FreeClimb attempts to connect the call. The audio file it uses can be stored in any location that is accessible via URL.",
866
+ "x-percl-command": true,
867
+ "allOf": [
868
+ {
869
+ "$ref": "#/components/schemas/PerclCommand"
870
+ },
871
+ {
872
+ "required": ["file"],
873
+ "type": "object",
874
+ "properties": {
875
+ "file": {
876
+ "description": "RL of the audio file to be played to the caller. The URL can be the `recordingUrl` generated from the `RecordUtterance` or `StartRecordCall` PerCL commands or any accessible URL. FreeClimb will respect Cache-Control headers for this file. Use these to limit repeated requests for unchanged audio. If no Cache-Control header is provided, the file will be cached for seven days by default.",
877
+ "type": "string"
878
+ }
879
+ }
880
+ }
881
+ ]
882
+ },
883
+ "RecordUtterance": {
884
+ "description": "The `RecordUtterance` command records the caller's voice and returns the URL of a file containing the audio recording. `RecordUtterance` is blocking and is a terminal command. As such, the `actionUrl` property is required, and control of the Call picks up using the PerCL returned in response to the `actionUrl`. Recording information is returned in the `actionUrl` request.",
885
+ "x-percl-command": true,
886
+ "allOf": [
887
+ {
888
+ "$ref": "#/components/schemas/PerclCommand"
889
+ },
890
+ {
891
+ "required": ["actionUrl"],
892
+ "type": "object",
893
+ "properties": {
894
+ "actionUrl": {
895
+ "description": "URL to which information on the completed recording is submitted. The PerCL received in response is then used to continue with Call processing.",
896
+ "type": "string"
897
+ },
898
+ "silenceTimeoutMs": {
899
+ "description": "Interval of silence that should elapse before ending the recording.",
900
+ "type": "integer"
901
+ },
902
+ "finishOnKey": {
903
+ "description": "Key that triggers the end of the recording. any digit, '#', or '*'",
904
+ "type": "string"
905
+ },
906
+ "maxLengthSec": {
907
+ "description": "Maximum length for the command execution in seconds.",
908
+ "type": "integer"
909
+ },
910
+ "playBeep": {
911
+ "description": "Indicates whether to play a beep sound before the start of the recording. If set to `false`, no beep is played.",
912
+ "type": "boolean"
913
+ },
914
+ "autoStart": {
915
+ "description": "If `false`, recording begins immediately after the RecordUtterance command is processed. If `true`, recording begins when audio is present and if audio begins before the `maxLengthSec` timeout. If no audio begins before `maxLengthSec`, no recording is generated.",
916
+ "type": "boolean"
917
+ },
918
+ "privacyMode": {
919
+ "description": "Parameter `privacyMode` will not log the `text` as required by PCI compliance.",
920
+ "type": "boolean"
921
+ }
922
+ }
923
+ }
924
+ ]
925
+ },
926
+ "Redirect": {
927
+ "description": "The `Redirect` command transfers control of a Call to the PerCL at a different URL. `Redirect` is a terminal command, so any actions following it are never executed. The maximum number of redirections allowed during the life time of a Call is 256. This is intended to prevent a Call from possibly looping infinitely due to errors in PerCL being generated.",
928
+ "x-percl-command": true,
929
+ "allOf": [
930
+ {
931
+ "$ref": "#/components/schemas/PerclCommand"
932
+ },
933
+ {
934
+ "required": ["actionUrl"],
935
+ "type": "object",
936
+ "properties": {
937
+ "actionUrl": {
938
+ "description": "URL to request a new PerCL script to continue with the current Call's processing. When `Redirect` invokes the `actionUrl`, an `inbound` Webhook is sent. This request therefore looks identical to the initial request (made to the `voiceUrl` of the number that was called) for an inbound Call.",
939
+ "type": "string"
940
+ }
941
+ }
942
+ }
943
+ ]
944
+ },
945
+ "Reject": {
946
+ "description": "The `Reject` command blocks an incoming Call. Using `Reject` is the only way to prevent FreeClimb from answering a Call. Any other response will result in an answered Call and your account will be billed.",
947
+ "x-percl-command": true,
948
+ "allOf": [
949
+ {
950
+ "$ref": "#/components/schemas/PerclCommand"
951
+ },
952
+ {
953
+ "type": "object",
954
+ "properties": {
955
+ "reason": {
956
+ "description": "Reason for the rejection. This can be any string value. In general, applications should use a set of enumerated values that are predefined to cover all exit points of the call flows for the given application.",
957
+ "type": "string"
958
+ }
959
+ }
960
+ }
961
+ ]
962
+ },
963
+ "RemoveFromConference": {
964
+ "description": "The `RemoveFromConference` command removes a Participant from a Conference but does not hang up. Instead, the Call is simply unbridged and what happens next with the Call is determined by the PerCL returned in response to the `leaveConferenceUrl` attribute.",
965
+ "x-percl-command": true,
966
+ "allOf": [
967
+ {
968
+ "$ref": "#/components/schemas/PerclCommand"
969
+ },
970
+ {
971
+ "required": ["callId"],
972
+ "type": "object",
973
+ "properties": {
974
+ "callId": {
975
+ "description": "ID of the Call leg to be removed from the Conference. The Call must be in a Conference or an error will be triggered.",
976
+ "type": "string"
977
+ }
978
+ }
979
+ }
980
+ ]
981
+ },
982
+ "Say": {
983
+ "description": "The `Say` command provides Text-To-Speech (TTS) support. It converts text to speech and then renders it in a female voice back to the caller. `Say` is useful in cases where it's difficult to pre-record a prompt for any reason. `Say` does not allow barge-in unless nested within a `GetSpeech` command. The file will always be played to completion unless nested.",
984
+ "x-percl-command": true,
985
+ "allOf": [
986
+ {
987
+ "$ref": "#/components/schemas/PerclCommand"
988
+ },
989
+ {
990
+ "required": ["text"],
991
+ "type": "object",
992
+ "properties": {
993
+ "text": {
994
+ "description": "The message to be played to the caller using TTS. The size of the string is limited to 4 KB (or 4,096 bytes). An empty string will cause the command to be skipped.",
995
+ "type": "string"
996
+ },
997
+ "language": {
998
+ "description": "Language and (by implication) the locale to use. This implies the accent and pronunciations to be usde for the TTS. The complete list of valid values for the language attribute is shown below.",
999
+ "type": "string"
1000
+ },
1001
+ "loop": {
1002
+ "description": "Number of times the text is said. Specifying '0' causes the `Say` action to loop until the Call is hung up.",
1003
+ "type": "integer",
1004
+ "default": 1
1005
+ },
1006
+ "conferenceId": {
1007
+ "description": "D of the Conference the speech should be rendered to. If this is not specified, the speech is by default rendered to the Caller associated with the call leg that corresponds to the current PerCL execution context. The call leg associated with this command must be in the specified Conference or the command will return an error.",
1008
+ "type": "string"
1009
+ },
1010
+ "privacyMode": {
1011
+ "description": "Parameter `privacyMode` will not log the `text` as required by PCI compliance.",
1012
+ "type": "boolean"
1013
+ }
1014
+ }
1015
+ }
1016
+ ]
1017
+ },
1018
+ "SendDigits": {
1019
+ "description": "The `SendDigits` command plays DTMF tones on a live Call. This is useful for navigating through IVR menus or dialing extensions.",
1020
+ "x-percl-command": true,
1021
+ "allOf": [
1022
+ {
1023
+ "$ref": "#/components/schemas/PerclCommand"
1024
+ },
1025
+ {
1026
+ "required": ["digits"],
1027
+ "type": "object",
1028
+ "properties": {
1029
+ "digits": {
1030
+ "description": "String containing the digits to be played. The string cannot be empty and can include any digit, plus `#`, or `*`, and allows embedding specification for delay or pause between the output of individual digits.",
1031
+ "type": "string"
1032
+ },
1033
+ "pauseMs": {
1034
+ "description": "Pause between digits in milliseconds. Valid values are 100-1000 milliseconds and will be adjusted by FreeClimb to satisfy the constraint.",
1035
+ "type": "integer"
1036
+ },
1037
+ "privacyMode": {
1038
+ "description": "Parameter `privacyMode` will not log the `text` as required by PCI compliance.",
1039
+ "type": "boolean"
1040
+ }
1041
+ }
1042
+ }
1043
+ ]
1044
+ },
1045
+ "SetListen": {
1046
+ "description": "The `SetListen` command enables or disables the listen privilege for a Conference Participant provided both calls are in the same conference. The Participant can hear what the other participants are saying only if this privilege is enabled.",
1047
+ "x-percl-command": true,
1048
+ "allOf": [
1049
+ {
1050
+ "$ref": "#/components/schemas/PerclCommand"
1051
+ },
1052
+ {
1053
+ "required": ["callId"],
1054
+ "type": "object",
1055
+ "properties": {
1056
+ "callId": {
1057
+ "description": "ID of the call leg that is to be assigned the listen privilege. The Call must be in a Conference or an error will be triggered.",
1058
+ "type": "string"
1059
+ },
1060
+ "listen": {
1061
+ "description": "Specifying `false` will silence the Conference for this Participant.",
1062
+ "type": "boolean"
1063
+ }
1064
+ }
1065
+ }
1066
+ ]
1067
+ },
1068
+ "SetTalk": {
1069
+ "description": "The `SetTalk` command enables or disables the talk privilege for a Participant in a Conference provided both calls are in the same conference. If 'true', no audio from that Participant is shared with the other Participants of the Conference.",
1070
+ "x-percl-command": true,
1071
+ "allOf": [
1072
+ {
1073
+ "$ref": "#/components/schemas/PerclCommand"
1074
+ },
1075
+ {
1076
+ "required": ["callId"],
1077
+ "type": "object",
1078
+ "properties": {
1079
+ "callId": {
1080
+ "description": "ID of the call leg that is to be muted or unmuted. The Call must be in a Conference or an error will be triggered.",
1081
+ "type": "string"
1082
+ },
1083
+ "talk": {
1084
+ "description": "Specifying `false` mutes the Participant.",
1085
+ "type": "boolean"
1086
+ }
1087
+ }
1088
+ }
1089
+ ]
1090
+ },
1091
+ "Sms": {
1092
+ "description": "The `Sms` command can be used to send an SMS message to a phone number during a phone call. International SMS is disabled by default.",
1093
+ "x-percl-command": true,
1094
+ "allOf": [
1095
+ {
1096
+ "$ref": "#/components/schemas/PerclCommand"
1097
+ },
1098
+ {
1099
+ "required": ["to", "from", "text"],
1100
+ "type": "object",
1101
+ "properties": {
1102
+ "to": {
1103
+ "description": "E.164 representation of the phone number to which the message will be sent. Must be within FreeClimb's service area and E.164 formatting (e.g., +18003608245).",
1104
+ "type": "string"
1105
+ },
1106
+ "from": {
1107
+ "description": "E.164 representation of the phone number to use as the sender. This must be an incoming phone number you have purchased from FreeClimb.",
1108
+ "type": "string"
1109
+ },
1110
+ "text": {
1111
+ "description": "Text contained in the message (maximum 160 characters).",
1112
+ "type": "string"
1113
+ },
1114
+ "notificationUrl": {
1115
+ "description": "When the message changes status, this URL will be invoked using HTTP POST with the messageStatus parameters. This is a notification only; any PerCL returned will be ignored.",
1116
+ "type": "string"
1117
+ }
1118
+ }
1119
+ }
1120
+ ]
1121
+ },
1122
+ "StartRecordCall": {
1123
+ "description": "The `StartRecordCall` command records the current call and returns the URL of a file containing the audio recording when recording completes. `StartRecordCall` is non-blocking. After recording of the current call begins, control of the call moves to the PerCL command that follows `StartRecordCall` in the current PerCL script.",
1124
+ "x-percl-command": true,
1125
+ "allOf": [
1126
+ {
1127
+ "$ref": "#/components/schemas/PerclCommand"
1128
+ },
1129
+ {
1130
+ "type": "object"
1131
+ }
1132
+ ]
1133
+ },
1134
+ "TerminateConference": {
1135
+ "description": "The `TerminateConference` command terminates an existing Conference. Any active participants are hung up on by FreeClimb. If this is not the desired behavior, use the `RemoveFromConference` command to unbridge Calls that should not be hung up. Note: The Call requesting TerminateConference must be on the same Conference for this command to execute.",
1136
+ "x-percl-command": true,
1137
+ "allOf": [
1138
+ {
1139
+ "$ref": "#/components/schemas/PerclCommand"
1140
+ },
1141
+ {
1142
+ "required": ["conferenceId"],
1143
+ "type": "object",
1144
+ "properties": {
1145
+ "conferenceId": {
1146
+ "description": "ID of the conference to terminate.",
1147
+ "type": "string"
1148
+ }
1149
+ }
1150
+ }
1151
+ ]
1152
+ },
1153
+ "Unpark": {
1154
+ "description": "The `Unpark` command resumes a parked call. Execution continues with the first command in the PerCL scripted returned by the actionUrl specified in the Park command as long as the call is still in progress. If the call is no longer in progress, any returned PerCL will not be executed. Unpark is a terminal command -- any commands following it in the same script are not executed.",
1155
+ "x-percl-command": true,
1156
+ "allOf": [
1157
+ {
1158
+ "$ref": "#/components/schemas/PerclCommand"
1159
+ },
1160
+ {
1161
+ "type": "object"
1162
+ }
1163
+ ]
1164
+ },
1165
+ "MutableResourceModel": {
1166
+ "type": "object",
1167
+ "properties": {
1168
+ "uri": {
1169
+ "type": "string",
1170
+ "description": "The URI for this resource, relative to /apiserver."
1171
+ },
1172
+ "dateCreated": {
1173
+ "type": "string",
1174
+ "description": "The date that this resource was created (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT)."
1175
+ },
1176
+ "dateUpdated": {
1177
+ "type": "string",
1178
+ "description": "The date that this resource was last updated (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT)."
1179
+ },
1180
+ "revision": {
1181
+ "type": "integer",
1182
+ "description": "Revision count for the resource. This count is set to 1 on creation and is incremented every time it is updated."
1183
+ }
1184
+ }
1185
+ },
1186
+ "PaginationModel": {
1187
+ "type": "object",
1188
+ "properties": {
1189
+ "total": {
1190
+ "type": "integer",
1191
+ "description": "Total amount of requested resource.",
1192
+ "nullable": true
1193
+ },
1194
+ "start": {
1195
+ "type": "integer",
1196
+ "description": "Resource index at start of current page",
1197
+ "nullable": true
1198
+ },
1199
+ "end": {
1200
+ "type": "integer",
1201
+ "description": "Resource index at end of current page",
1202
+ "nullable": true
1203
+ },
1204
+ "page": {
1205
+ "type": "integer",
1206
+ "description": "Current page",
1207
+ "nullable": true
1208
+ },
1209
+ "numPages": {
1210
+ "type": "integer",
1211
+ "description": "Total number of pages",
1212
+ "nullable": true
1213
+ },
1214
+ "pageSize": {
1215
+ "type": "integer",
1216
+ "description": "Number of items per page",
1217
+ "nullable": true
1218
+ },
1219
+ "nextPageUri": {
1220
+ "type": "string",
1221
+ "description": "Uri to retrieve the next page of items",
1222
+ "nullable": true
1223
+ }
1224
+ }
1225
+ },
1226
+ "Capabilities": {
1227
+ "description": "Details for which features this number may be used.",
1228
+ "type": "object",
1229
+ "required": ["voice", "sms", "tollFree", "tenDLC", "shortCode"],
1230
+ "properties": {
1231
+ "voice": {
1232
+ "description": "Indicates whether a number can be used for voice calls. Replaces voiceEnabled.",
1233
+ "type": "boolean",
1234
+ "nullable": true
1235
+ },
1236
+ "sms": {
1237
+ "description": "Indicates whether a number can be used SMS messaging. Replaces smsEnabled.",
1238
+ "type": "boolean",
1239
+ "nullable": true
1240
+ },
1241
+ "tollFree": {
1242
+ "description": "Indicates that a number is toll-free and will make toll-free calls, and when enabled, toll-free messages.",
1243
+ "type": "boolean",
1244
+ "nullable": true
1245
+ },
1246
+ "tenDLC": {
1247
+ "description": "Indicates that a number, if sms is true, will be used for 10DLC messaging",
1248
+ "type": "boolean",
1249
+ "nullable": true
1250
+ },
1251
+ "shortCode": {
1252
+ "description": "Indicates that a number is a short code and can be used for short code messaging",
1253
+ "type": "boolean",
1254
+ "nullable": true
1255
+ }
1256
+ }
1257
+ },
1258
+ "AccountRequest": {
1259
+ "type": "object",
1260
+ "properties": {
1261
+ "alias": {
1262
+ "type": "string",
1263
+ "description": "Description for this account."
1264
+ },
1265
+ "label": {
1266
+ "type": "string",
1267
+ "description": "Group to which this account belongs."
1268
+ }
1269
+ }
1270
+ },
1271
+ "AccountResult": {
1272
+ "allOf": [
1273
+ {
1274
+ "$ref": "#/components/schemas/MutableResourceModel"
1275
+ },
1276
+ {
1277
+ "type": "object",
1278
+ "properties": {
1279
+ "accountId": {
1280
+ "type": "string",
1281
+ "description": "String that uniquely identifies this account resource.",
1282
+ "nullable": true
1283
+ },
1284
+ "apiKey": {
1285
+ "type": "string",
1286
+ "description": "The API key assigned to this account. This key must be kept a secret by the customer.",
1287
+ "nullable": true
1288
+ },
1289
+ "alias": {
1290
+ "type": "string",
1291
+ "description": "A description for this account.",
1292
+ "nullable": true
1293
+ },
1294
+ "label": {
1295
+ "type": "string",
1296
+ "description": "A string that identifies a category or group to which the account belongs.",
1297
+ "nullable": true
1298
+ },
1299
+ "type": {
1300
+ "$ref": "#/components/schemas/AccountType",
1301
+ "nullable": true
1302
+ },
1303
+ "status": {
1304
+ "$ref": "#/components/schemas/AccountStatus",
1305
+ "nullable": true
1306
+ },
1307
+ "subresourceUris": {
1308
+ "type": "object",
1309
+ "description": "The list of subresources for this account.",
1310
+ "nullable": true
1311
+ }
1312
+ }
1313
+ }
1314
+ ]
1315
+ },
1316
+ "ApplicationResult": {
1317
+ "allOf": [
1318
+ {
1319
+ "$ref": "#/components/schemas/MutableResourceModel"
1320
+ },
1321
+ {
1322
+ "type": "object",
1323
+ "properties": {
1324
+ "accountId": {
1325
+ "type": "string",
1326
+ "description": "ID of the account that owns this phone number.",
1327
+ "nullable": true
1328
+ },
1329
+ "applicationId": {
1330
+ "type": "string",
1331
+ "description": "ID of the Application that FreeClimb should contact if a Call or SMS arrives for this phone number or a Call from this number is placed. An incoming phone number is not useful until associated with an applicationId.",
1332
+ "nullable": true
1333
+ },
1334
+ "alias": {
1335
+ "type": "string",
1336
+ "description": "Description for this phone number. Typically the conventionally-formatted version of the phone number.",
1337
+ "nullable": true
1338
+ },
1339
+ "voiceUrl": {
1340
+ "type": "string",
1341
+ "description": "The URL FreeClimb will request when a phone number assigned to this Application receives a Call. Used for inbound calls only.",
1342
+ "nullable": true
1343
+ },
1344
+ "voiceFallbackUrl": {
1345
+ "type": "string",
1346
+ "description": "The URL that FreeClimb will request if it times out waiting for a response from the voiceUrl. Used for inbound calls only.",
1347
+ "nullable": true
1348
+ },
1349
+ "callConnectUrl": {
1350
+ "type": "string",
1351
+ "description": "The URL to which FreeClimb will make a POST request informing the result of the outbound Call request. The status property of the request message specifies if the Call was connected or not.",
1352
+ "nullable": true
1353
+ },
1354
+ "statusCallbackUrl": {
1355
+ "type": "string",
1356
+ "description": "A URL to which FreeClimb will make a POST request when the Call ends to notify this app.",
1357
+ "nullable": true
1358
+ },
1359
+ "smsUrl": {
1360
+ "type": "string",
1361
+ "description": "The URL FreeClimb will request when a phone number assigned to this Application receives an incoming SMS message. Used for inbound SMS only.",
1362
+ "nullable": true
1363
+ },
1364
+ "smsFallbackUrl": {
1365
+ "type": "string",
1366
+ "description": "The URL that FreeClimb will request if it times out waiting for a response from the smsUrl. Used for inbound SMS only.",
1367
+ "nullable": true
1368
+ }
1369
+ }
1370
+ }
1371
+ ]
1372
+ },
1373
+ "ApplicationRequest": {
1374
+ "type": "object",
1375
+ "properties": {
1376
+ "alias": {
1377
+ "type": "string",
1378
+ "description": "A human readable description of the application, with maximum length 64 characters."
1379
+ },
1380
+ "voiceUrl": {
1381
+ "type": "string",
1382
+ "description": "The URL that FreeClimb will request when an inbound call arrives on a phone number assigned to this application. Used only for inbound calls."
1383
+ },
1384
+ "voiceFallbackUrl": {
1385
+ "type": "string",
1386
+ "description": "The URL that FreeClimb will request if it times out waiting for a response from the voiceUrl. Used for inbound calls only. Note: A PerCL response is expected to control the inbound call."
1387
+ },
1388
+ "callConnectUrl": {
1389
+ "type": "string",
1390
+ "description": "The URL that FreeClimb will request when an outbound call request is complete. Used for outbound calls only. Note: A PerCL response is expected if the outbound call is connected (status=InProgress) to control the call."
1391
+ },
1392
+ "statusCallbackUrl": {
1393
+ "type": "string",
1394
+ "description": "The URL that FreeClimb will request to pass call status (such as call ended) to the application. Note: This is a notification only; any PerCL returned will be ignored."
1395
+ },
1396
+ "smsUrl": {
1397
+ "type": "string",
1398
+ "description": "The URL that FreeClimb will request when a phone number assigned to this application receives an incoming SMS message. Used for inbound SMS only. Note: Any PerCL returned will be ignored."
1399
+ },
1400
+ "smsFallbackUrl": {
1401
+ "type": "string",
1402
+ "description": "The URL that FreeClimb will request if it times out waiting for a response from the smsUrl. Used for inbound SMS only. Note: Any PerCL returned will be ignored."
1403
+ }
1404
+ }
1405
+ },
1406
+ "ApplicationList": {
1407
+ "allOf": [
1408
+ {
1409
+ "$ref": "#/components/schemas/PaginationModel"
1410
+ },
1411
+ {
1412
+ "type": "object",
1413
+ "properties": {
1414
+ "applications": {
1415
+ "type": "array",
1416
+ "items": {
1417
+ "$ref": "#/components/schemas/ApplicationResult"
1418
+ },
1419
+ "nullable": true
1420
+ }
1421
+ }
1422
+ }
1423
+ ]
1424
+ },
1425
+ "AvailableNumber": {
1426
+ "type": "object",
1427
+ "properties": {
1428
+ "capabilities": {
1429
+ "$ref": "#/components/schemas/Capabilities"
1430
+ },
1431
+ "campaignId": {
1432
+ "type": "string",
1433
+ "description": "The campaign ID generated by the campaign registry",
1434
+ "nullable": true
1435
+ },
1436
+ "phoneNumber": {
1437
+ "type": "string",
1438
+ "description": "The phone number, in E.164 format (+ country code and phone number: +18003608245).",
1439
+ "nullable": true
1440
+ },
1441
+ "voiceEnabled": {
1442
+ "type": "boolean",
1443
+ "description": "Typically set to true for all numbers.",
1444
+ "deprecated": true,
1445
+ "nullable": true
1446
+ },
1447
+ "smsEnabled": {
1448
+ "type": "boolean",
1449
+ "description": "Indicates whether the phone number can send and receive SMS messages.",
1450
+ "deprecated": true,
1451
+ "nullable": true
1452
+ },
1453
+ "region": {
1454
+ "type": "string",
1455
+ "description": "The state or province of this phone number.",
1456
+ "nullable": true
1457
+ },
1458
+ "country": {
1459
+ "type": "string",
1460
+ "description": "The country of this phone number.",
1461
+ "nullable": true
1462
+ }
1463
+ }
1464
+ },
1465
+ "AvailableNumberList": {
1466
+ "allOf": [
1467
+ {
1468
+ "$ref": "#/components/schemas/PaginationModel"
1469
+ },
1470
+ {
1471
+ "type": "object",
1472
+ "properties": {
1473
+ "availablePhoneNumbers": {
1474
+ "type": "array",
1475
+ "items": {
1476
+ "$ref": "#/components/schemas/AvailableNumber"
1477
+ },
1478
+ "nullable": true
1479
+ }
1480
+ }
1481
+ }
1482
+ ]
1483
+ },
1484
+ "IncomingNumberResult": {
1485
+ "allOf": [
1486
+ {
1487
+ "$ref": "#/components/schemas/MutableResourceModel"
1488
+ },
1489
+ {
1490
+ "type": "object",
1491
+ "properties": {
1492
+ "capabilities": {
1493
+ "$ref": "#/components/schemas/Capabilities"
1494
+ },
1495
+ "campaignId": {
1496
+ "type": "string",
1497
+ "description": "The campaign ID generated by the campaign registry",
1498
+ "nullable": true
1499
+ },
1500
+ "phoneNumberId": {
1501
+ "type": "string",
1502
+ "description": "String that uniquely identifies this phone number resource.",
1503
+ "nullable": true
1504
+ },
1505
+ "accountId": {
1506
+ "type": "string",
1507
+ "description": "ID of the account that owns this phone number.",
1508
+ "nullable": true
1509
+ },
1510
+ "applicationId": {
1511
+ "type": "string",
1512
+ "description": "ID of the Application that FreeClimb should contact if a Call or SMS arrives for this phone number or a Call from this number is placed. An incoming phone number is not useful until associated with an applicationId.",
1513
+ "nullable": true
1514
+ },
1515
+ "phoneNumber": {
1516
+ "type": "string",
1517
+ "description": "Phone number in E.164 format.",
1518
+ "nullable": true
1519
+ },
1520
+ "alias": {
1521
+ "type": "string",
1522
+ "description": "Description for this phone number. Typically the conventionally-formatted version of the phone number.",
1523
+ "nullable": true
1524
+ },
1525
+ "region": {
1526
+ "type": "string",
1527
+ "description": "State or province of this phone number.",
1528
+ "nullable": true
1529
+ },
1530
+ "country": {
1531
+ "type": "string",
1532
+ "description": "Country of this phone number.",
1533
+ "nullable": true
1534
+ },
1535
+ "voiceEnabled": {
1536
+ "type": "boolean",
1537
+ "description": "Indicates whether the phone number can handle Calls. Typically set to true for all numbers.",
1538
+ "deprecated": true,
1539
+ "nullable": true
1540
+ },
1541
+ "smsEnabled": {
1542
+ "type": "boolean",
1543
+ "description": "Indication of whether the phone number can handle sending and receiving SMS messages. Typically set to true for all numbers.",
1544
+ "deprecated": true,
1545
+ "nullable": true
1546
+ },
1547
+ "offnet": {
1548
+ "type": "boolean",
1549
+ "description": "The offnet field is a boolean representing whether the number is offnet registered or not. This field will be rendered only for requests to the IncomingPhone number resource.",
1550
+ "nullable": true
1551
+ }
1552
+ }
1553
+ }
1554
+ ]
1555
+ },
1556
+ "IncomingNumberRequest": {
1557
+ "type": "object",
1558
+ "properties": {
1559
+ "applicationId": {
1560
+ "type": "string",
1561
+ "description": "ID of the Application that should handle calls to this number."
1562
+ },
1563
+ "alias": {
1564
+ "type": "string",
1565
+ "description": "Description for this phone number."
1566
+ }
1567
+ }
1568
+ },
1569
+ "IncomingNumberList": {
1570
+ "allOf": [
1571
+ {
1572
+ "$ref": "#/components/schemas/PaginationModel"
1573
+ },
1574
+ {
1575
+ "type": "object",
1576
+ "properties": {
1577
+ "incomingPhoneNumbers": {
1578
+ "type": "array",
1579
+ "items": {
1580
+ "$ref": "#/components/schemas/IncomingNumberResult"
1581
+ },
1582
+ "nullable": true
1583
+ }
1584
+ }
1585
+ }
1586
+ ]
1587
+ },
1588
+ "BuyIncomingNumberRequest": {
1589
+ "type": "object",
1590
+ "required": ["phoneNumber"],
1591
+ "properties": {
1592
+ "phoneNumber": {
1593
+ "type": "string",
1594
+ "description": "Phone number to purchase in E.164 format (as returned in the list of Available Phone Numbers)."
1595
+ },
1596
+ "alias": {
1597
+ "type": "string",
1598
+ "description": "Description for this new incoming phone number (max 64 characters)."
1599
+ },
1600
+ "applicationId": {
1601
+ "type": "string",
1602
+ "description": "ID of the application that should handle phone calls to the number."
1603
+ }
1604
+ }
1605
+ },
1606
+ "CallResult": {
1607
+ "allOf": [
1608
+ {
1609
+ "$ref": "#/components/schemas/MutableResourceModel"
1610
+ },
1611
+ {
1612
+ "type": "object",
1613
+ "properties": {
1614
+ "callId": {
1615
+ "type": "string",
1616
+ "description": "String that uniquely identifies this Call resource.",
1617
+ "nullable": true
1618
+ },
1619
+ "parentCallId": {
1620
+ "type": "string",
1621
+ "description": "ID of the Call that created this leg (child Call).",
1622
+ "nullable": true
1623
+ },
1624
+ "accountId": {
1625
+ "type": "string",
1626
+ "description": "ID of the account that owns this Call.",
1627
+ "nullable": true
1628
+ },
1629
+ "from": {
1630
+ "type": "string",
1631
+ "description": "Phone number that initiated this Call.",
1632
+ "nullable": true
1633
+ },
1634
+ "to": {
1635
+ "type": "string",
1636
+ "description": "Phone number that received this Call.",
1637
+ "nullable": true
1638
+ },
1639
+ "phoneNumberId": {
1640
+ "type": "string",
1641
+ "description": "If the Call was inbound, this is the ID of the IncomingPhoneNumber that received the Call (DNIS). If the Call was outbound, this is the ID of the phone number from which the Call was placed (ANI).",
1642
+ "nullable": true
1643
+ },
1644
+ "status": {
1645
+ "$ref": "#/components/schemas/CallStatus",
1646
+ "nullable": true
1647
+ },
1648
+ "startTime": {
1649
+ "type": "string",
1650
+ "description": "Start time of the Call (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). Empty if the Call has not yet been dialed.",
1651
+ "nullable": true
1652
+ },
1653
+ "connectTime": {
1654
+ "type": "string",
1655
+ "description": "Time the Call was answered (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). Empty if the Call has not yet been dialed.",
1656
+ "nullable": true
1657
+ },
1658
+ "endTime": {
1659
+ "type": "string",
1660
+ "description": "End time of the Call (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). Empty if the Call did not complete successfully.",
1661
+ "nullable": true
1662
+ },
1663
+ "duration": {
1664
+ "type": "integer",
1665
+ "description": "Total length of the Call in seconds. Measures time between startTime and endTime. This value is empty for busy, failed, unanswered or ongoing Calls.",
1666
+ "nullable": true
1667
+ },
1668
+ "connectDuration": {
1669
+ "type": "integer",
1670
+ "description": "Length of time that the Call was connected in seconds. Measures time between connectTime and endTime. This value is empty for busy, failed, unanswered or ongoing Calls.",
1671
+ "nullable": true
1672
+ },
1673
+ "direction": {
1674
+ "$ref": "#/components/schemas/CallDirection",
1675
+ "nullable": true
1676
+ },
1677
+ "answeredBy": {
1678
+ "$ref": "#/components/schemas/AnsweredBy",
1679
+ "nullable": true
1680
+ },
1681
+ "subresourceUris": {
1682
+ "type": "object",
1683
+ "description": "The list of subresources for this Call. These include things like logs and recordings associated with the Call.",
1684
+ "nullable": true
1685
+ }
1686
+ }
1687
+ }
1688
+ ]
1689
+ },
1690
+ "UpdateCallRequest": {
1691
+ "type": "object",
1692
+ "required": ["status"],
1693
+ "properties": {
1694
+ "status": {
1695
+ "$ref": "#/components/schemas/UpdateCallRequestStatus"
1696
+ }
1697
+ }
1698
+ },
1699
+ "MakeCallRequest": {
1700
+ "type": "object",
1701
+ "required": ["from", "to"],
1702
+ "properties": {
1703
+ "from": {
1704
+ "type": "string",
1705
+ "description": "Phone number to use as the caller ID. This can be: (a) The To or From number provided in FreeClimb's initial request to your app or (b) Any incoming phone number you have purchased from FreeClimb."
1706
+ },
1707
+ "to": {
1708
+ "type": "string",
1709
+ "description": "Phone number to place the Call to."
1710
+ },
1711
+ "applicationId": {
1712
+ "type": "string",
1713
+ "description": "Required if no `parentCallId` or `callConnectUrl` has been provided. ID of the application FreeClimb should use to handle this phone call. FreeClimb will use the `callConnectUrl` and `statusCallbackUrl` set on the application unless the `callConnectUrl` attribute is also provided with the request. In this case, the URL specified in that `callConnectUrl` attribute will be used as a replacement of the `callConnectUrl` originally assigned in the application. If the `callConnectUrl` is not set as either an attribute of the request or as part of the specified application, an error will be provided. The application’s voiceUrl parameter is not used for outbound calls."
1714
+ },
1715
+ "sendDigits": {
1716
+ "type": "string",
1717
+ "description": "String of digits to dial after connecting to the number. It can include digits `0-9`, `*`, and `#`, and allows embedding a pause between the output of individual digits. The default pause is 500 milliseconds. So, a string such as *1234#* will be played in 2 seconds because of the 4 standard pauses implied within the string. A custom pause is specified by including a positive integer wrapped in curly braces: {n}. For more information, see **sendDigits examples** below."
1718
+ },
1719
+ "ifMachine": {
1720
+ "type": "string",
1721
+ "description": "Specifies how FreeClimb should handle this Call if an answering machine answers it."
1722
+ },
1723
+ "ifMachineUrl": {
1724
+ "type": "string",
1725
+ "description": "This attribute specifies a URL to which FreeClimb will make a POST request when an answering machine or a fax machine is detected. This URL is required if the ifMachine flag is set to redirect. When ifMachine is set to hangup, ifMachineUrl must not be included in the request. For more information, see **ifMachineUrl example** below."
1726
+ },
1727
+ "timeout": {
1728
+ "type": "integer",
1729
+ "description": "Number of seconds that FreeClimb should allow the phone to ring before assuming there is no answer. Default is 30 seconds. Maximum allowed ring-time is determined by the target phone's provider. Note that most providers limit ring-time to 120 seconds.",
1730
+ "default": 30,
1731
+ "format": "int32"
1732
+ },
1733
+ "parentCallId": {
1734
+ "type": "string",
1735
+ "description": "Required if no `applicationId` or `callConnectUrl` has been provided. The ID of the parent Call in the case that this new Call is meant to be treated as a child of an existing Call. This attribute should be included when possible to reduce latency when adding child calls to Conferences containing the parent Call. A call can only be used as a parent once the call is in progress or as an inbound call that is still ringing. An outbound call is considered to be in progress once the `outdialConnect` or `outdialApiConnect` webhook is invoked. An inbound call is ringing when the inbound webhook is invoked. If a `callConnectUrl` attribute is also included with the `parentCallId` in the request, this URL will be used as a replacement of the `callConnectUrl` originally assigned in the parent call."
1736
+ },
1737
+ "privacyMode": {
1738
+ "type": "boolean",
1739
+ "description": "Activate privacy mode in order to obscure log data that can potentially expose private information."
1740
+ },
1741
+ "callConnectUrl": {
1742
+ "type": "string",
1743
+ "description": "The URL that FreeClimb should use to handle this phone call. If an applicationId or parentCallId have already been provided, this callConnectUrl attribute will be used as a replacement of the callConnectUrl originally assigned in the application or parent call."
1744
+ }
1745
+ }
1746
+ },
1747
+ "CallList": {
1748
+ "allOf": [
1749
+ {
1750
+ "$ref": "#/components/schemas/PaginationModel"
1751
+ },
1752
+ {
1753
+ "type": "object",
1754
+ "properties": {
1755
+ "calls": {
1756
+ "type": "array",
1757
+ "items": {
1758
+ "$ref": "#/components/schemas/CallResult"
1759
+ },
1760
+ "nullable": true
1761
+ }
1762
+ }
1763
+ }
1764
+ ]
1765
+ },
1766
+ "RecordingResult": {
1767
+ "allOf": [
1768
+ {
1769
+ "$ref": "#/components/schemas/MutableResourceModel"
1770
+ },
1771
+ {
1772
+ "type": "object",
1773
+ "properties": {
1774
+ "recordingId": {
1775
+ "type": "string",
1776
+ "description": "String that uniquely identifies this recording resource.",
1777
+ "nullable": true
1778
+ },
1779
+ "accountId": {
1780
+ "type": "string",
1781
+ "description": "ID of the account that created this recording.",
1782
+ "nullable": true
1783
+ },
1784
+ "callId": {
1785
+ "type": "string",
1786
+ "description": "ID of the Call that was recorded. If a Conference was recorded, this value is empty and the conferenceId property is populated.",
1787
+ "nullable": true
1788
+ },
1789
+ "durationSec": {
1790
+ "type": "integer",
1791
+ "description": "Length of the recording in seconds.",
1792
+ "nullable": true
1793
+ },
1794
+ "conferenceId": {
1795
+ "type": "string",
1796
+ "description": "ID of the Conference that was recorded. If a Call was recorded, this value is empty and the callId property is populated.",
1797
+ "nullable": true
1798
+ }
1799
+ }
1800
+ }
1801
+ ]
1802
+ },
1803
+ "RecordingList": {
1804
+ "allOf": [
1805
+ {
1806
+ "$ref": "#/components/schemas/PaginationModel"
1807
+ },
1808
+ {
1809
+ "type": "object",
1810
+ "properties": {
1811
+ "recordings": {
1812
+ "type": "array",
1813
+ "items": {
1814
+ "$ref": "#/components/schemas/RecordingResult"
1815
+ },
1816
+ "nullable": true
1817
+ }
1818
+ }
1819
+ }
1820
+ ]
1821
+ },
1822
+ "LogResult": {
1823
+ "type": "object",
1824
+ "properties": {
1825
+ "timestamp": {
1826
+ "type": "integer",
1827
+ "description": "Time that the log was generated. The time is represented as microseconds since the Unix Epoch.",
1828
+ "nullable": true
1829
+ },
1830
+ "level": {
1831
+ "$ref": "#/components/schemas/LogLevel",
1832
+
1833
+ "nullable": true
1834
+ },
1835
+ "requestId": {
1836
+ "type": "string",
1837
+ "description": "ID of the request associated with the log. The requestId is propagated across all logs generated by FreeClimb when processing a request.",
1838
+ "nullable": true
1839
+ },
1840
+ "accountId": {
1841
+ "type": "string",
1842
+ "description": "ID of the account that this log was generated under.",
1843
+ "nullable": true
1844
+ },
1845
+ "callId": {
1846
+ "type": "string",
1847
+ "description": "ID of the Call associated with the log. Can be set to null if the log was generated without regard to a specific Call.",
1848
+ "nullable": true
1849
+ },
1850
+ "message": {
1851
+ "type": "string",
1852
+ "description": "A simple string describing the event being logged.",
1853
+ "nullable": true
1854
+ },
1855
+ "metadata": {
1856
+ "type": "object",
1857
+ "description": "JSON document containing metadata about the event. Some log messages may include request and response header content in this field.",
1858
+ "nullable": true
1859
+ }
1860
+ }
1861
+ },
1862
+ "LogList": {
1863
+ "allOf": [
1864
+ {
1865
+ "$ref": "#/components/schemas/PaginationModel"
1866
+ },
1867
+ {
1868
+ "type": "object",
1869
+ "properties": {
1870
+ "logs": {
1871
+ "type": "array",
1872
+ "items": {
1873
+ "$ref": "#/components/schemas/LogResult"
1874
+ },
1875
+ "nullable": true
1876
+ }
1877
+ }
1878
+ }
1879
+ ]
1880
+ },
1881
+ "ConferenceResult": {
1882
+ "allOf": [
1883
+ {
1884
+ "$ref": "#/components/schemas/MutableResourceModel"
1885
+ },
1886
+ {
1887
+ "type": "object",
1888
+ "properties": {
1889
+ "conferenceId": {
1890
+ "type": "string",
1891
+ "description": "A string that uniquely identifies this Conference resource.",
1892
+ "nullable": true
1893
+ },
1894
+ "accountId": {
1895
+ "type": "string",
1896
+ "description": "ID of the account that created this Conference.",
1897
+ "nullable": true
1898
+ },
1899
+ "alias": {
1900
+ "type": "string",
1901
+ "description": "A description for this Conference.",
1902
+ "nullable": true
1903
+ },
1904
+ "playBeep": {
1905
+ "$ref": "#/components/schemas/PlayBeep",
1906
+ "description": "Setting that controls when a beep is played. One of: always, never, entryOnly, exitOnly. Defaults to always.",
1907
+ "nullable": true
1908
+ },
1909
+ "record": {
1910
+ "type": "boolean",
1911
+ "description": "Flag indicating whether recording is enabled for this Conference.",
1912
+ "nullable": true
1913
+ },
1914
+ "status": {
1915
+ "$ref": "#/components/schemas/ConferenceStatus",
1916
+ "nullable": true
1917
+ },
1918
+ "waitUrl": {
1919
+ "type": "string",
1920
+ "description": "URL referencing the audio file to be used as default wait music for the Conference when it is in the populated state.",
1921
+ "nullable": true
1922
+ },
1923
+ "actionUrl": {
1924
+ "type": "string",
1925
+ "description": "URL invoked once the Conference is successfully created.",
1926
+ "nullable": true
1927
+ },
1928
+ "statusCallbackUrl": {
1929
+ "type": "string",
1930
+ "description": "URL to inform that the Conference status has changed.",
1931
+ "nullable": true
1932
+ },
1933
+ "subresourceUris": {
1934
+ "type": "object",
1935
+ "description": "The list of subresources for this Conference. This includes participants and/or recordings.",
1936
+ "nullable": true
1937
+ }
1938
+ }
1939
+ }
1940
+ ]
1941
+ },
1942
+ "MessagesList": {
1943
+ "allOf": [
1944
+ {
1945
+ "$ref": "#/components/schemas/PaginationModel"
1946
+ },
1947
+ {
1948
+ "type": "object",
1949
+ "properties": {
1950
+ "messages": {
1951
+ "type": "array",
1952
+ "description": "Array of messages",
1953
+ "items": {
1954
+ "$ref": "#/components/schemas/MessageResult"
1955
+ },
1956
+ "nullable": true
1957
+ }
1958
+ }
1959
+ }
1960
+ ]
1961
+ },
1962
+ "MessageRequest": {
1963
+ "allOf": [
1964
+ {
1965
+ "$ref": "#/components/schemas/MutableResourceModel"
1966
+ },
1967
+ {
1968
+ "type": "object",
1969
+ "required": ["from", "to", "text"],
1970
+ "properties": {
1971
+ "from": {
1972
+ "type": "string",
1973
+ "description": "Phone number to use as the sender. This must be an incoming phone number that you have purchased from FreeClimb."
1974
+ },
1975
+ "to": {
1976
+ "type": "string",
1977
+ "description": "Phone number to receive the message. Must be within FreeClimb's service area."
1978
+ },
1979
+ "text": {
1980
+ "type": "string",
1981
+ "description": "Text contained in the message (maximum 160 characters). **Note:** For text, only ASCII characters are supported."
1982
+ },
1983
+ "notificationUrl": {
1984
+ "type": "string",
1985
+ "description": "When the Message changes status, this URL is invoked using HTTP POST with the messageStatus parameters. **Note:** This is a notification only; any PerCL returned is ignored."
1986
+ },
1987
+ "accountId": {
1988
+ "type": "string",
1989
+ "description": "String that uniquely identifies this account resource."
1990
+ }
1991
+ }
1992
+ }
1993
+ ]
1994
+ },
1995
+ "ConferenceList": {
1996
+ "allOf": [
1997
+ {
1998
+ "$ref": "#/components/schemas/PaginationModel"
1999
+ },
2000
+ {
2001
+ "type": "object",
2002
+ "properties": {
2003
+ "conferences": {
2004
+ "type": "array",
2005
+ "items": {
2006
+ "$ref": "#/components/schemas/ConferenceResult"
2007
+ },
2008
+ "nullable": true
2009
+ }
2010
+ }
2011
+ }
2012
+ ]
2013
+ },
2014
+ "MessageResult": {
2015
+ "allOf": [
2016
+ {
2017
+ "$ref": "#/components/schemas/MutableResourceModel"
2018
+ },
2019
+ {
2020
+ "type": "object",
2021
+ "properties": {
2022
+ "accountId": {
2023
+ "type": "string",
2024
+ "description": "String that uniquely identifies this account resource.",
2025
+ "nullable": true
2026
+ },
2027
+ "messageId": {
2028
+ "type": "string",
2029
+ "description": "String that uniquely identifies this message resource",
2030
+ "nullable": true
2031
+ },
2032
+ "status": {
2033
+ "$ref": "#/components/schemas/MessageStatus",
2034
+ "nullable": true
2035
+ },
2036
+ "from": {
2037
+ "type": "string",
2038
+ "description": "Phone number in E.164 format that sent the message.",
2039
+ "nullable": true
2040
+ },
2041
+ "to": {
2042
+ "type": "string",
2043
+ "description": "Phone number in E.164 format that received the message.",
2044
+ "nullable": true
2045
+ },
2046
+ "text": {
2047
+ "type": "string",
2048
+ "description": "Message contents",
2049
+ "nullable": true
2050
+ },
2051
+ "direction": {
2052
+ "type": "string",
2053
+ "description": "Noting whether the message was inbound or outbound",
2054
+ "nullable": true
2055
+ },
2056
+ "notificationUrl": {
2057
+ "type": "string",
2058
+ "description": "URL invoked when message sent",
2059
+ "nullable": true
2060
+ }
2061
+ }
2062
+ }
2063
+ ]
2064
+ },
2065
+ "CreateConferenceRequest": {
2066
+ "type": "object",
2067
+ "properties": {
2068
+ "alias": {
2069
+ "type": "string",
2070
+ "description": "A description for this Conference. Maximum 64 characters."
2071
+ },
2072
+ "playBeep": {
2073
+ "$ref": "#/components/schemas/PlayBeep"
2074
+ },
2075
+ "record": {
2076
+ "type": "boolean",
2077
+ "description": "Setting to `true` records the entire Conference."
2078
+ },
2079
+ "waitUrl": {
2080
+ "type": "string",
2081
+ "description": "If specified, a URL for the audio file that provides custom hold music for the Conference when it is in the populated state. Otherwise, FreeClimb uses a system default audio file. This is always fetched using HTTP GET and is fetched just once — when the Conference is created."
2082
+ },
2083
+ "statusCallbackUrl": {
2084
+ "type": "string",
2085
+ "description": "This URL is invoked when the status of the Conference changes. For more information, see **statusCallbackUrl** (below)."
2086
+ }
2087
+ }
2088
+ },
2089
+ "UpdateConferenceRequest": {
2090
+ "type": "object",
2091
+ "properties": {
2092
+ "alias": {
2093
+ "type": "string",
2094
+ "description": "Description for this conference. Maximum 64 characters."
2095
+ },
2096
+ "playBeep": {
2097
+ "$ref": "#/components/schemas/PlayBeep"
2098
+ },
2099
+ "status": {
2100
+ "$ref": "#/components/schemas/UpdateConferenceRequestStatus"
2101
+ }
2102
+ }
2103
+ },
2104
+ "ConferenceParticipantResult": {
2105
+ "allOf": [
2106
+ {
2107
+ "$ref": "#/components/schemas/MutableResourceModel"
2108
+ },
2109
+ {
2110
+ "type": "object",
2111
+ "properties": {
2112
+ "accountId": {
2113
+ "type": "string",
2114
+ "description": "ID of the account that created this participant.",
2115
+ "nullable": true
2116
+ },
2117
+ "conferenceId": {
2118
+ "type": "string",
2119
+ "description": "ID of the conference this participant is in.",
2120
+ "nullable": true
2121
+ },
2122
+ "callId": {
2123
+ "type": "string",
2124
+ "description": "ID of the Call associated with this Participant.",
2125
+ "nullable": true
2126
+ },
2127
+ "talk": {
2128
+ "type": "boolean",
2129
+ "description": "True if this Participant has talk privileges in the Conference. False otherwise.",
2130
+ "nullable": true
2131
+ },
2132
+ "listen": {
2133
+ "type": "boolean",
2134
+ "description": "True if this Participant has listen privileges in the Conference. False otherwise.",
2135
+ "nullable": true
2136
+ },
2137
+ "startConfOnEnter": {
2138
+ "type": "boolean",
2139
+ "description": "True if this Participant joining the Conference caused the Conference to start (status = inProgress). False otherwise.",
2140
+ "nullable": true
2141
+ }
2142
+ }
2143
+ }
2144
+ ]
2145
+ },
2146
+ "UpdateConferenceParticipantRequest": {
2147
+ "type": "object",
2148
+ "properties": {
2149
+ "talk": {
2150
+ "type": "boolean",
2151
+ "description": "(Optional) Default is `true`. Setting to `false` mutes the Participant. FreeClimb returns an error and ignores any other value."
2152
+ },
2153
+ "listen": {
2154
+ "type": "boolean",
2155
+ "description": "(Optional) Default is `true`. Setting to `false` silences the Conference for this Participant. FreeClimb returns an error and ignores any other value."
2156
+ }
2157
+ }
2158
+ },
2159
+ "ConferenceParticipantList": {
2160
+ "allOf": [
2161
+ {
2162
+ "$ref": "#/components/schemas/PaginationModel"
2163
+ },
2164
+ {
2165
+ "type": "object",
2166
+ "properties": {
2167
+ "participants": {
2168
+ "type": "array",
2169
+ "items": {
2170
+ "$ref": "#/components/schemas/ConferenceParticipantResult"
2171
+ },
2172
+ "nullable": true
2173
+ }
2174
+ }
2175
+ }
2176
+ ]
2177
+ },
2178
+ "QueueResult": {
2179
+ "allOf": [
2180
+ {
2181
+ "$ref": "#/components/schemas/MutableResourceModel"
2182
+ },
2183
+ {
2184
+ "type": "object",
2185
+ "properties": {
2186
+ "accountId": {
2187
+ "type": "string",
2188
+ "description": "ID of the account that created this Queue.",
2189
+ "nullable": true
2190
+ },
2191
+ "queueId": {
2192
+ "type": "string",
2193
+ "description": "A string that uniquely identifies this Queue resource.",
2194
+ "nullable": true
2195
+ },
2196
+ "alias": {
2197
+ "type": "string",
2198
+ "description": "A description for this Queue.",
2199
+ "nullable": true
2200
+ },
2201
+ "maxSize": {
2202
+ "type": "integer",
2203
+ "description": "The maximum number of Calls permitted in the Queue. Default is 100. Maximum is 1000.",
2204
+ "nullable": true
2205
+ },
2206
+ "currentSize": {
2207
+ "type": "integer",
2208
+ "description": "Count of Calls currently in the Queue.",
2209
+ "nullable": true
2210
+ },
2211
+ "averageQueueRemovalTime": {
2212
+ "type": "integer",
2213
+ "description": "The average amount of time (in seconds) for a call to be removed from the queue.",
2214
+ "nullable": true
2215
+ },
2216
+ "subresourceUris": {
2217
+ "type": "object",
2218
+ "description": "List of subresources for this Queue (which includes Queue members).",
2219
+ "nullable": true
2220
+ }
2221
+ }
2222
+ }
2223
+ ]
2224
+ },
2225
+ "QueueRequest": {
2226
+ "type": "object",
2227
+ "properties": {
2228
+ "alias": {
2229
+ "type": "string",
2230
+ "description": "Description for this Queue. Max length is 64 characters."
2231
+ },
2232
+ "maxSize": {
2233
+ "type": "integer",
2234
+ "description": "Maximum number of calls this queue can hold. Default is 100. Maximum is 1000. **Note:** Reducing the maxSize of a Queue causes the Queue to reject incoming requests until it shrinks below the new value of maxSize.",
2235
+ "default": 100,
2236
+ "format": "int32"
2237
+ }
2238
+ }
2239
+ },
2240
+ "QueueList": {
2241
+ "allOf": [
2242
+ {
2243
+ "$ref": "#/components/schemas/PaginationModel"
2244
+ },
2245
+ {
2246
+ "type": "object",
2247
+ "properties": {
2248
+ "queues": {
2249
+ "type": "array",
2250
+ "items": {
2251
+ "$ref": "#/components/schemas/QueueResult"
2252
+ },
2253
+ "nullable": true
2254
+ }
2255
+ }
2256
+ }
2257
+ ]
2258
+ },
2259
+ "QueueMember": {
2260
+ "type": "object",
2261
+ "properties": {
2262
+ "uri": {
2263
+ "type": "string",
2264
+ "description": "URI for this Queue Member resource, relative to the API base URL.",
2265
+ "nullable": true
2266
+ },
2267
+ "callId": {
2268
+ "type": "string",
2269
+ "description": "ID of the Call associated with this Queue Member.",
2270
+ "nullable": true
2271
+ },
2272
+ "waitTime": {
2273
+ "type": "integer",
2274
+ "description": "Number of seconds the Member has been in the queue.",
2275
+ "nullable": true
2276
+ },
2277
+ "position": {
2278
+ "type": "integer",
2279
+ "description": "Member's current position in the Queue, 1 indexed.",
2280
+ "nullable": true
2281
+ },
2282
+ "dateEnqueued": {
2283
+ "type": "string",
2284
+ "description": "Date that the Member was enqueued (GMT), given in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT).",
2285
+ "nullable": true
2286
+ }
2287
+ }
2288
+ },
2289
+ "QueueMemberList": {
2290
+ "allOf": [
2291
+ {
2292
+ "$ref": "#/components/schemas/PaginationModel"
2293
+ },
2294
+ {
2295
+ "type": "object",
2296
+ "properties": {
2297
+ "queueMembers": {
2298
+ "type": "array",
2299
+ "items": {
2300
+ "$ref": "#/components/schemas/QueueMember"
2301
+ },
2302
+ "nullable": true
2303
+ }
2304
+ }
2305
+ }
2306
+ ]
2307
+ },
2308
+ "FilterLogsRequest": {
2309
+ "type": "object",
2310
+ "required": ["pql"],
2311
+ "properties": {
2312
+ "pql": {
2313
+ "type": "string",
2314
+ "description": "The filter query for retrieving logs. See **Performance Query Language** below."
2315
+ }
2316
+ }
2317
+ }
2318
+ }
2319
+ },
2320
+ "security": [
2321
+ {
2322
+ "fc": []
2323
+ }
2324
+ ],
2325
+ "paths": {
2326
+ "/Accounts/{accountId}": {
2327
+ "get": {
2328
+ "tags": [],
2329
+ "summary": "Get an Account",
2330
+ "operationId": "get-an-account",
2331
+ "parameters": [
2332
+ {
2333
+ "$ref": "#/components/parameters/AccountId"
2334
+ }
2335
+ ],
2336
+ "deprecated": false,
2337
+ "responses": {
2338
+ "200": {
2339
+ "description": "Account Details",
2340
+ "content": {
2341
+ "application/json": {
2342
+ "schema": {
2343
+ "$ref": "#/components/schemas/AccountResult"
2344
+ }
2345
+ }
2346
+ }
2347
+ }
2348
+ }
2349
+ },
2350
+ "post": {
2351
+ "tags": [],
2352
+ "summary": "Manage an account",
2353
+ "operationId": "update-an-account",
2354
+ "parameters": [
2355
+ {
2356
+ "$ref": "#/components/parameters/AccountId"
2357
+ }
2358
+ ],
2359
+ "requestBody": {
2360
+ "description": "Account details to update",
2361
+ "content": {
2362
+ "application/json": {
2363
+ "schema": {
2364
+ "$ref": "#/components/schemas/AccountRequest"
2365
+ }
2366
+ }
2367
+ }
2368
+ },
2369
+ "responses": {
2370
+ "204": {
2371
+ "description": "Successful Account update"
2372
+ }
2373
+ }
2374
+ }
2375
+ },
2376
+ "/Accounts/{accountId}/Applications/{applicationId}": {
2377
+ "get": {
2378
+ "tags": [],
2379
+ "summary": "Get an Application",
2380
+ "operationId": "get-an-application",
2381
+ "parameters": [
2382
+ {
2383
+ "$ref": "#/components/parameters/AccountId"
2384
+ },
2385
+ {
2386
+ "name": "applicationId",
2387
+ "in": "path",
2388
+ "description": "A string that uniquely identifies this application resource.",
2389
+ "required": true,
2390
+ "schema": {
2391
+ "type": "string"
2392
+ }
2393
+ }
2394
+ ],
2395
+ "deprecated": false,
2396
+ "responses": {
2397
+ "200": {
2398
+ "description": "Application Details",
2399
+ "content": {
2400
+ "application/json": {
2401
+ "schema": {
2402
+ "$ref": "#/components/schemas/ApplicationResult"
2403
+ }
2404
+ }
2405
+ }
2406
+ }
2407
+ }
2408
+ },
2409
+ "post": {
2410
+ "tags": [],
2411
+ "summary": "Update an application",
2412
+ "operationId": "update-an-application",
2413
+ "parameters": [
2414
+ {
2415
+ "$ref": "#/components/parameters/AccountId"
2416
+ },
2417
+ {
2418
+ "name": "applicationId",
2419
+ "in": "path",
2420
+ "description": "A string that uniquely identifies this application resource.",
2421
+ "required": true,
2422
+ "schema": {
2423
+ "type": "string"
2424
+ }
2425
+ }
2426
+ ],
2427
+ "requestBody": {
2428
+ "description": "Application details to update.",
2429
+ "content": {
2430
+ "application/json": {
2431
+ "schema": {
2432
+ "$ref": "#/components/schemas/ApplicationRequest"
2433
+ }
2434
+ }
2435
+ }
2436
+ },
2437
+ "deprecated": false,
2438
+ "responses": {
2439
+ "200": {
2440
+ "description": "Update Application",
2441
+ "content": {
2442
+ "application/json": {
2443
+ "schema": {
2444
+ "$ref": "#/components/schemas/ApplicationResult"
2445
+ }
2446
+ }
2447
+ }
2448
+ }
2449
+ }
2450
+ },
2451
+ "delete": {
2452
+ "tags": [],
2453
+ "summary": "Delete an application",
2454
+ "operationId": "delete-an-application",
2455
+ "parameters": [
2456
+ {
2457
+ "$ref": "#/components/parameters/AccountId"
2458
+ },
2459
+ {
2460
+ "name": "applicationId",
2461
+ "in": "path",
2462
+ "description": "String that uniquely identifies this application resource.",
2463
+ "required": true,
2464
+ "schema": {
2465
+ "type": "string"
2466
+ }
2467
+ }
2468
+ ],
2469
+ "deprecated": false,
2470
+ "responses": {
2471
+ "204": {
2472
+ "description": "Successful application deletion"
2473
+ }
2474
+ }
2475
+ }
2476
+ },
2477
+ "/Accounts/{accountId}/Applications": {
2478
+ "get": {
2479
+ "tags": [],
2480
+ "summary": "List applications",
2481
+ "operationId": "list-applications",
2482
+ "parameters": [
2483
+ {
2484
+ "name": "alias",
2485
+ "in": "query",
2486
+ "description": "Return only applications with aliases that exactly match this value.",
2487
+ "required": false,
2488
+ "schema": {
2489
+ "type": "string"
2490
+ }
2491
+ },
2492
+ {
2493
+ "$ref": "#/components/parameters/AccountId"
2494
+ }
2495
+ ],
2496
+ "deprecated": false,
2497
+ "responses": {
2498
+ "200": {
2499
+ "description": "List of Applications",
2500
+ "content": {
2501
+ "application/json": {
2502
+ "schema": {
2503
+ "$ref": "#/components/schemas/ApplicationList"
2504
+ }
2505
+ }
2506
+ }
2507
+ }
2508
+ }
2509
+ },
2510
+ "post": {
2511
+ "tags": [],
2512
+ "summary": "Create an application",
2513
+ "operationId": "create-an-application",
2514
+ "parameters": [
2515
+ {
2516
+ "$ref": "#/components/parameters/AccountId"
2517
+ }
2518
+ ],
2519
+ "requestBody": {
2520
+ "description": "Application Details",
2521
+ "content": {
2522
+ "application/json": {
2523
+ "schema": {
2524
+ "$ref": "#/components/schemas/ApplicationRequest"
2525
+ }
2526
+ }
2527
+ }
2528
+ },
2529
+ "deprecated": false,
2530
+ "responses": {
2531
+ "201": {
2532
+ "description": "Application successfuly created",
2533
+ "content": {
2534
+ "application/json": {
2535
+ "schema": {
2536
+ "$ref": "#/components/schemas/ApplicationResult"
2537
+ }
2538
+ }
2539
+ }
2540
+ }
2541
+ }
2542
+ }
2543
+ },
2544
+ "/AvailablePhoneNumbers": {
2545
+ "get": {
2546
+ "tags": [],
2547
+ "summary": "List available numbers",
2548
+ "operationId": "list-available-numbers",
2549
+ "parameters": [
2550
+ {
2551
+ "name": "phoneNumber",
2552
+ "in": "query",
2553
+ "description": "PCRE-compatible regular expression to filter against `phoneNumber` field, which is in E.164 format.",
2554
+ "required": false,
2555
+ "schema": {
2556
+ "type": "string"
2557
+ }
2558
+ },
2559
+ {
2560
+ "name": "region",
2561
+ "in": "query",
2562
+ "description": "State or province of this phone number.",
2563
+ "required": false,
2564
+ "schema": {
2565
+ "type": "string"
2566
+ }
2567
+ },
2568
+ {
2569
+ "name": "country",
2570
+ "in": "query",
2571
+ "description": "Country of this phone number.",
2572
+ "required": false,
2573
+ "schema": {
2574
+ "type": "string"
2575
+ }
2576
+ },
2577
+ {
2578
+ "name": "voiceEnabled",
2579
+ "in": "query",
2580
+ "description": "Indicates whether the phone number can handle Calls. Typically set to true for all numbers.",
2581
+ "required": false,
2582
+ "schema": {
2583
+ "type": "boolean",
2584
+ "default": true
2585
+ }
2586
+ },
2587
+ {
2588
+ "name": "smsEnabled",
2589
+ "in": "query",
2590
+ "description": "Indication of whether the phone number can handle sending and receiving SMS messages. Typically set to true for all numbers.",
2591
+ "required": false,
2592
+ "schema": {
2593
+ "type": "boolean",
2594
+ "default": true
2595
+ }
2596
+ },
2597
+ {
2598
+ "$ref": "#/components/parameters/Capabilities.Voice"
2599
+ },
2600
+ {
2601
+ "$ref": "#/components/parameters/Capabilities.Sms"
2602
+ },
2603
+ {
2604
+ "$ref": "#/components/parameters/Capabilities.TollFree"
2605
+ },
2606
+ {
2607
+ "$ref": "#/components/parameters/Capabilities.TenDLC"
2608
+ },
2609
+ {
2610
+ "$ref": "#/components/parameters/Capabilities.ShortCode"
2611
+ }
2612
+ ],
2613
+ "deprecated": false,
2614
+ "responses": {
2615
+ "200": {
2616
+ "description": "Available Numbers List",
2617
+ "content": {
2618
+ "application/json": {
2619
+ "schema": {
2620
+ "$ref": "#/components/schemas/AvailableNumberList"
2621
+ }
2622
+ }
2623
+ }
2624
+ }
2625
+ }
2626
+ }
2627
+ },
2628
+ "/Accounts/{accountId}/IncomingPhoneNumbers/{phoneNumberId}": {
2629
+ "get": {
2630
+ "tags": [],
2631
+ "summary": "Get an Incoming Number",
2632
+ "operationId": "get-an-incoming-number",
2633
+ "parameters": [
2634
+ {
2635
+ "$ref": "#/components/parameters/AccountId"
2636
+ },
2637
+ {
2638
+ "name": "phoneNumberId",
2639
+ "in": "path",
2640
+ "description": "String that uniquely identifies this phone number resource.",
2641
+ "required": true,
2642
+ "schema": {
2643
+ "type": "string"
2644
+ }
2645
+ }
2646
+ ],
2647
+ "deprecated": false,
2648
+ "responses": {
2649
+ "200": {
2650
+ "description": "Incoming Phone Number result.",
2651
+ "content": {
2652
+ "application/json": {
2653
+ "schema": {
2654
+ "$ref": "#/components/schemas/IncomingNumberResult"
2655
+ }
2656
+ }
2657
+ }
2658
+ }
2659
+ }
2660
+ },
2661
+ "post": {
2662
+ "tags": [],
2663
+ "summary": "Update an Incoming Number",
2664
+ "operationId": "update-an-incoming-number",
2665
+ "parameters": [
2666
+ {
2667
+ "$ref": "#/components/parameters/AccountId"
2668
+ },
2669
+ {
2670
+ "name": "phoneNumberId",
2671
+ "in": "path",
2672
+ "description": "String that uniquely identifies this phone number resource.",
2673
+ "required": true,
2674
+ "schema": {
2675
+ "type": "string"
2676
+ }
2677
+ }
2678
+ ],
2679
+ "requestBody": {
2680
+ "description": "Incoming Number details to update",
2681
+ "content": {
2682
+ "application/json": {
2683
+ "schema": {
2684
+ "$ref": "#/components/schemas/IncomingNumberRequest"
2685
+ }
2686
+ }
2687
+ }
2688
+ },
2689
+ "deprecated": false,
2690
+ "responses": {
2691
+ "200": {
2692
+ "description": "Updated Incoming Phone Number",
2693
+ "content": {
2694
+ "application/json": {
2695
+ "schema": {
2696
+ "$ref": "#/components/schemas/IncomingNumberResult"
2697
+ }
2698
+ }
2699
+ }
2700
+ }
2701
+ }
2702
+ },
2703
+ "delete": {
2704
+ "tags": [],
2705
+ "summary": "Delete an Incoming Number",
2706
+ "operationId": "delete-an-incoming-number",
2707
+ "parameters": [
2708
+ {
2709
+ "$ref": "#/components/parameters/AccountId"
2710
+ },
2711
+ {
2712
+ "name": "phoneNumberId",
2713
+ "in": "path",
2714
+ "description": "String that uniquely identifies this phone number resource.",
2715
+ "required": true,
2716
+ "schema": {
2717
+ "type": "string"
2718
+ }
2719
+ }
2720
+ ],
2721
+ "deprecated": false,
2722
+ "responses": {
2723
+ "204": {
2724
+ "description": "Successful Incoming Number deletion."
2725
+ }
2726
+ }
2727
+ }
2728
+ },
2729
+ "/Accounts/{accountId}/IncomingPhoneNumbers": {
2730
+ "get": {
2731
+ "tags": [],
2732
+ "summary": "List Incoming Numbers",
2733
+ "operationId": "list-incoming-numbers",
2734
+ "parameters": [
2735
+ {
2736
+ "$ref": "#/components/parameters/AccountId"
2737
+ },
2738
+ {
2739
+ "name": "phoneNumber",
2740
+ "in": "query",
2741
+ "description": "Only show incoming phone number resources that match this PCRE-compatible regular expression.",
2742
+ "required": false,
2743
+ "schema": {
2744
+ "type": "string"
2745
+ }
2746
+ },
2747
+ {
2748
+ "name": "alias",
2749
+ "in": "query",
2750
+ "description": "Only show incoming phone numbers with aliases that exactly match this value.",
2751
+ "required": false,
2752
+ "schema": {
2753
+ "type": "string"
2754
+ }
2755
+ },
2756
+ {
2757
+ "name": "region",
2758
+ "in": "query",
2759
+ "description": "State or province of this phone number.",
2760
+ "required": false,
2761
+ "schema": {
2762
+ "type": "string"
2763
+ }
2764
+ },
2765
+ {
2766
+ "name": "country",
2767
+ "in": "query",
2768
+ "description": "Country of this phone number.",
2769
+ "required": false,
2770
+ "schema": {
2771
+ "type": "string"
2772
+ }
2773
+ },
2774
+ {
2775
+ "name": "applicationId",
2776
+ "in": "query",
2777
+ "description": "ID of the Application that FreeClimb should contact if a Call or SMS arrives for this phone number or a Call from this number is placed. An incoming phone number is not useful until associated with an applicationId.",
2778
+ "required": false,
2779
+ "schema": {
2780
+ "type": "string"
2781
+ }
2782
+ },
2783
+ {
2784
+ "name": "hasApplication",
2785
+ "in": "query",
2786
+ "description": "Indication of whether the phone number has an application linked to it.",
2787
+ "required": false,
2788
+ "schema": {
2789
+ "type": "boolean",
2790
+ "default": false
2791
+ }
2792
+ },
2793
+ {
2794
+ "name": "voiceEnabled",
2795
+ "in": "query",
2796
+ "description": "Indicates whether the phone number can handle Calls. Typically set to true for all numbers.",
2797
+ "required": false,
2798
+ "schema": {
2799
+ "type": "boolean",
2800
+ "default": true
2801
+ },
2802
+ "deprecated": true
2803
+ },
2804
+ {
2805
+ "name": "smsEnabled",
2806
+ "in": "query",
2807
+ "description": "Indication of whether the phone number can handle sending and receiving SMS messages. Typically set to true for all numbers.",
2808
+ "required": false,
2809
+ "schema": {
2810
+ "type": "boolean",
2811
+ "default": true
2812
+ },
2813
+ "deprecated": true
2814
+ },
2815
+ {
2816
+ "$ref": "#/components/parameters/Capabilities.Voice"
2817
+ },
2818
+ {
2819
+ "$ref": "#/components/parameters/Capabilities.Sms"
2820
+ },
2821
+ {
2822
+ "$ref": "#/components/parameters/Capabilities.TollFree"
2823
+ },
2824
+ {
2825
+ "$ref": "#/components/parameters/Capabilities.TenDLC"
2826
+ },
2827
+ {
2828
+ "$ref": "#/components/parameters/Capabilities.ShortCode"
2829
+ },
2830
+ {
2831
+ "name": "offnet",
2832
+ "in": "query",
2833
+ "required": false,
2834
+ "description": "Indication of whether the phone number was registered as an offnet number. This field will be rendered only for requests to the IncomingPhone number resource.",
2835
+ "schema": {
2836
+ "type": "boolean",
2837
+ "nullable": true
2838
+ }
2839
+ }
2840
+ ],
2841
+ "deprecated": false,
2842
+ "responses": {
2843
+ "200": {
2844
+ "description": "List of Incoming Phone Numbers",
2845
+ "content": {
2846
+ "application/json": {
2847
+ "schema": {
2848
+ "$ref": "#/components/schemas/IncomingNumberList"
2849
+ }
2850
+ }
2851
+ }
2852
+ }
2853
+ }
2854
+ },
2855
+ "post": {
2856
+ "tags": [],
2857
+ "summary": "Buy a Phone Number",
2858
+ "operationId": "buy-a-phone-number",
2859
+ "parameters": [
2860
+ {
2861
+ "$ref": "#/components/parameters/AccountId"
2862
+ }
2863
+ ],
2864
+ "requestBody": {
2865
+ "description": "Incoming Number transaction details",
2866
+ "required": true,
2867
+ "content": {
2868
+ "application/json": {
2869
+ "schema": {
2870
+ "$ref": "#/components/schemas/BuyIncomingNumberRequest"
2871
+ }
2872
+ }
2873
+ }
2874
+ },
2875
+ "deprecated": false,
2876
+ "responses": {
2877
+ "200": {
2878
+ "description": "Successful Incoming Number transaction",
2879
+ "content": {
2880
+ "application/json": {
2881
+ "schema": {
2882
+ "$ref": "#/components/schemas/IncomingNumberResult"
2883
+ }
2884
+ }
2885
+ }
2886
+ }
2887
+ }
2888
+ }
2889
+ },
2890
+ "/Accounts/{accountId}/Calls/{callId}": {
2891
+ "get": {
2892
+ "tags": [],
2893
+ "summary": "Get a Call",
2894
+ "operationId": "get-a-call",
2895
+ "parameters": [
2896
+ {
2897
+ "$ref": "#/components/parameters/AccountId"
2898
+ },
2899
+ {
2900
+ "name": "callId",
2901
+ "in": "path",
2902
+ "description": "String that uniquely identifies this call resource.",
2903
+ "required": true,
2904
+ "schema": {
2905
+ "type": "string"
2906
+ }
2907
+ }
2908
+ ],
2909
+ "deprecated": false,
2910
+ "responses": {
2911
+ "200": {
2912
+ "description": "Call Resource",
2913
+ "content": {
2914
+ "application/json": {
2915
+ "schema": {
2916
+ "$ref": "#/components/schemas/CallResult"
2917
+ }
2918
+ }
2919
+ }
2920
+ }
2921
+ }
2922
+ },
2923
+ "post": {
2924
+ "tags": [],
2925
+ "summary": "Update a Live Call",
2926
+ "operationId": "update-a-live-call",
2927
+ "parameters": [
2928
+ {
2929
+ "$ref": "#/components/parameters/AccountId"
2930
+ },
2931
+ {
2932
+ "name": "callId",
2933
+ "in": "path",
2934
+ "description": "String that uniquely identifies this call resource.",
2935
+ "required": true,
2936
+ "schema": {
2937
+ "type": "string"
2938
+ }
2939
+ }
2940
+ ],
2941
+ "requestBody": {
2942
+ "description": "Call details to update",
2943
+ "required": true,
2944
+ "content": {
2945
+ "application/json": {
2946
+ "schema": {
2947
+ "$ref": "#/components/schemas/UpdateCallRequest"
2948
+ }
2949
+ }
2950
+ }
2951
+ },
2952
+ "deprecated": false,
2953
+ "responses": {
2954
+ "202": {
2955
+ "description": "Successfully queued call"
2956
+ }
2957
+ }
2958
+ }
2959
+ },
2960
+ "/Accounts/{accountId}/Calls": {
2961
+ "post": {
2962
+ "tags": [],
2963
+ "summary": "Make a Call",
2964
+ "operationId": "make-a-call",
2965
+ "parameters": [
2966
+ {
2967
+ "$ref": "#/components/parameters/AccountId"
2968
+ }
2969
+ ],
2970
+ "requestBody": {
2971
+ "description": "Call details for making a call",
2972
+ "content": {
2973
+ "application/json": {
2974
+ "schema": {
2975
+ "$ref": "#/components/schemas/MakeCallRequest"
2976
+ }
2977
+ }
2978
+ }
2979
+ },
2980
+ "deprecated": false,
2981
+ "responses": {
2982
+ "200": {
2983
+ "description": "Call that was created",
2984
+ "content": {
2985
+ "application/json": {
2986
+ "schema": {
2987
+ "$ref": "#/components/schemas/CallResult"
2988
+ }
2989
+ }
2990
+ }
2991
+ }
2992
+ }
2993
+ },
2994
+ "get": {
2995
+ "tags": [],
2996
+ "summary": "List Calls",
2997
+ "operationId": "list-calls",
2998
+ "parameters": [
2999
+ {
3000
+ "name": "active",
3001
+ "in": "query",
3002
+ "description": "If active is set to true then all calls of the nature queued, ringing, inProgress are returned in the query.",
3003
+ "required": false,
3004
+ "schema": {
3005
+ "type": "boolean",
3006
+ "default": false
3007
+ }
3008
+ },
3009
+ {
3010
+ "name": "to",
3011
+ "in": "query",
3012
+ "description": "Only show Calls to this phone number.",
3013
+ "required": false,
3014
+ "schema": {
3015
+ "type": "string"
3016
+ }
3017
+ },
3018
+ {
3019
+ "name": "from",
3020
+ "in": "query",
3021
+ "description": "Only show Calls from this phone number.",
3022
+ "required": false,
3023
+ "schema": {
3024
+ "type": "string"
3025
+ }
3026
+ },
3027
+ {
3028
+ "name": "status",
3029
+ "in": "query",
3030
+ "description": "Only show Calls currently in this status. May be `queued`, `ringing`, `inProgress`, `canceled`, `completed`, `failed`, `busy`, or `noAnswer`.",
3031
+ "required": false,
3032
+ "schema": {
3033
+ "$ref": "#/components/schemas/CallStatus"
3034
+ }
3035
+ },
3036
+ {
3037
+ "name": "startTime",
3038
+ "in": "query",
3039
+ "description": "Only show Calls that started at or after this time, given as YYYY-MM-DD hh:mm:ss.",
3040
+ "required": false,
3041
+ "schema": {
3042
+ "type": "string"
3043
+ }
3044
+ },
3045
+ {
3046
+ "name": "endTime",
3047
+ "in": "query",
3048
+ "description": "Only show Calls that ended at or before this time, given as YYYY-MM- DD hh:mm:ss.",
3049
+ "required": false,
3050
+ "schema": {
3051
+ "type": "string"
3052
+ }
3053
+ },
3054
+ {
3055
+ "name": "parentCallId",
3056
+ "in": "query",
3057
+ "description": "Only show Calls spawned by the call with this ID.",
3058
+ "required": false,
3059
+ "schema": {
3060
+ "type": "string"
3061
+ }
3062
+ },
3063
+ {
3064
+ "$ref": "#/components/parameters/AccountId"
3065
+ }
3066
+ ],
3067
+ "deprecated": false,
3068
+ "responses": {
3069
+ "200": {
3070
+ "description": "Successful retrieved call list",
3071
+ "content": {
3072
+ "application/json": {
3073
+ "schema": {
3074
+ "$ref": "#/components/schemas/CallList"
3075
+ }
3076
+ }
3077
+ }
3078
+ }
3079
+ }
3080
+ }
3081
+ },
3082
+ "/Accounts/{accountId}/Calls/{callId}/Recordings": {
3083
+ "get": {
3084
+ "tags": [],
3085
+ "summary": "List Call Recordings",
3086
+ "operationId": "list-call-recordings",
3087
+ "parameters": [
3088
+ {
3089
+ "name": "dateCreated",
3090
+ "in": "query",
3091
+ "description": "Only show recordings created on the specified date, in the form *YYYY-MM-DD*.",
3092
+ "required": false,
3093
+ "schema": {
3094
+ "type": "string"
3095
+ }
3096
+ },
3097
+ {
3098
+ "$ref": "#/components/parameters/AccountId"
3099
+ },
3100
+ {
3101
+ "name": "callId",
3102
+ "in": "path",
3103
+ "description": "String that uniquely identifies this call resource.",
3104
+ "required": true,
3105
+ "schema": {
3106
+ "type": "string"
3107
+ }
3108
+ }
3109
+ ],
3110
+ "deprecated": false,
3111
+ "responses": {
3112
+ "200": {
3113
+ "description": "List of recordings for a call",
3114
+ "content": {
3115
+ "application/json": {
3116
+ "schema": {
3117
+ "$ref": "#/components/schemas/RecordingList"
3118
+ }
3119
+ }
3120
+ }
3121
+ }
3122
+ }
3123
+ }
3124
+ },
3125
+ "/Accounts/{accountId}/Calls/{callId}/Logs": {
3126
+ "get": {
3127
+ "tags": [],
3128
+ "summary": "List Call Logs",
3129
+ "operationId": "list-call-logs",
3130
+ "parameters": [
3131
+ {
3132
+ "$ref": "#/components/parameters/AccountId"
3133
+ },
3134
+ {
3135
+ "name": "callId",
3136
+ "in": "path",
3137
+ "description": "String that uniquely identifies this call resource.",
3138
+ "required": true,
3139
+ "schema": {
3140
+ "type": "string"
3141
+ }
3142
+ }
3143
+ ],
3144
+ "deprecated": false,
3145
+ "responses": {
3146
+ "200": {
3147
+ "description": "Logs for this call",
3148
+ "content": {
3149
+ "application/json": {
3150
+ "schema": {
3151
+ "$ref": "#/components/schemas/LogList"
3152
+ }
3153
+ }
3154
+ }
3155
+ }
3156
+ }
3157
+ }
3158
+ },
3159
+ "/Accounts/{accountId}/Conferences": {
3160
+ "post": {
3161
+ "tags": [],
3162
+ "summary": "Create a Conference",
3163
+ "operationId": "create-a-conference",
3164
+ "parameters": [
3165
+ {
3166
+ "$ref": "#/components/parameters/AccountId"
3167
+ }
3168
+ ],
3169
+ "requestBody": {
3170
+ "description": "Conference to create",
3171
+ "content": {
3172
+ "application/json": {
3173
+ "schema": {
3174
+ "$ref": "#/components/schemas/CreateConferenceRequest"
3175
+ }
3176
+ }
3177
+ }
3178
+ },
3179
+ "deprecated": false,
3180
+ "responses": {
3181
+ "200": {
3182
+ "description": "Details of created conference",
3183
+ "content": {
3184
+ "application/json": {
3185
+ "schema": {
3186
+ "$ref": "#/components/schemas/ConferenceResult"
3187
+ }
3188
+ }
3189
+ }
3190
+ }
3191
+ }
3192
+ },
3193
+ "get": {
3194
+ "tags": [],
3195
+ "summary": "List Conferences",
3196
+ "operationId": "list-conferences",
3197
+ "parameters": [
3198
+ {
3199
+ "name": "status",
3200
+ "in": "query",
3201
+ "description": "Only show conferences that currently have the specified status. Valid values: `empty`, `populated`, `inProgress`, or `terminated`.",
3202
+ "required": false,
3203
+ "schema": {
3204
+ "type": "string"
3205
+ }
3206
+ },
3207
+ {
3208
+ "name": "alias",
3209
+ "in": "query",
3210
+ "description": "List Conferences whose alias exactly matches this string.",
3211
+ "required": false,
3212
+ "schema": {
3213
+ "type": "string"
3214
+ }
3215
+ },
3216
+ {
3217
+ "name": "dateCreated",
3218
+ "in": "query",
3219
+ "description": "Only show Conferences that were created on the specified date, in the form *YYYY-MM-DD*.",
3220
+ "required": false,
3221
+ "schema": {
3222
+ "type": "string"
3223
+ }
3224
+ },
3225
+ {
3226
+ "name": "dateUpdated",
3227
+ "in": "query",
3228
+ "description": "Only show Conferences that were last updated on the specified date, in the form *YYYY-MM-DD*.",
3229
+ "required": false,
3230
+ "schema": {
3231
+ "type": "string"
3232
+ }
3233
+ },
3234
+ {
3235
+ "$ref": "#/components/parameters/AccountId"
3236
+ }
3237
+ ],
3238
+ "deprecated": false,
3239
+ "responses": {
3240
+ "200": {
3241
+ "description": "List of Conferences",
3242
+ "content": {
3243
+ "application/json": {
3244
+ "schema": {
3245
+ "$ref": "#/components/schemas/ConferenceList"
3246
+ }
3247
+ }
3248
+ }
3249
+ }
3250
+ }
3251
+ }
3252
+ },
3253
+ "/Accounts/{accountId}/Conferences/{conferenceId}": {
3254
+ "post": {
3255
+ "tags": [],
3256
+ "summary": "Update a Conference",
3257
+ "operationId": "update-a-conference",
3258
+ "parameters": [
3259
+ {
3260
+ "$ref": "#/components/parameters/AccountId"
3261
+ },
3262
+ {
3263
+ "name": "conferenceId",
3264
+ "in": "path",
3265
+ "description": "String that uniquely identifies this conference resource.",
3266
+ "required": true,
3267
+ "schema": {
3268
+ "type": "string"
3269
+ }
3270
+ }
3271
+ ],
3272
+ "requestBody": {
3273
+ "description": "Conference Details to update",
3274
+ "content": {
3275
+ "application/json": {
3276
+ "schema": {
3277
+ "$ref": "#/components/schemas/UpdateConferenceRequest"
3278
+ }
3279
+ }
3280
+ }
3281
+ },
3282
+ "deprecated": false,
3283
+ "responses": {
3284
+ "200": {
3285
+ "description": "Conference Details to Update",
3286
+ "content": {
3287
+ "application/json": {
3288
+ "schema": {
3289
+ "$ref": "#/components/schemas/ConferenceResult"
3290
+ }
3291
+ }
3292
+ }
3293
+ }
3294
+ }
3295
+ },
3296
+ "get": {
3297
+ "tags": [],
3298
+ "summary": "Get a Conference",
3299
+ "operationId": "get-a-conference",
3300
+ "parameters": [
3301
+ {
3302
+ "$ref": "#/components/parameters/AccountId"
3303
+ },
3304
+ {
3305
+ "name": "conferenceId",
3306
+ "in": "path",
3307
+ "description": "A string that uniquely identifies this conference resource.",
3308
+ "required": true,
3309
+ "schema": {
3310
+ "type": "string"
3311
+ }
3312
+ }
3313
+ ],
3314
+ "deprecated": false,
3315
+ "responses": {
3316
+ "200": {
3317
+ "description": "Successfully retrieved conference",
3318
+ "content": {
3319
+ "application/json": {
3320
+ "schema": {
3321
+ "$ref": "#/components/schemas/ConferenceResult"
3322
+ }
3323
+ }
3324
+ }
3325
+ }
3326
+ }
3327
+ }
3328
+ },
3329
+ "/Accounts/{accountId}/Conferences/{conferenceId}/Participants/{callId}": {
3330
+ "post": {
3331
+ "tags": [],
3332
+ "summary": "Update a Participant",
3333
+ "operationId": "update-a-participant",
3334
+ "parameters": [
3335
+ {
3336
+ "$ref": "#/components/parameters/AccountId"
3337
+ },
3338
+ {
3339
+ "name": "conferenceId",
3340
+ "in": "path",
3341
+ "description": "ID of the conference this participant is in.",
3342
+ "required": true,
3343
+ "schema": {
3344
+ "type": "string"
3345
+ }
3346
+ },
3347
+ {
3348
+ "name": "callId",
3349
+ "in": "path",
3350
+ "description": "ID of the Call associated with this participant.",
3351
+ "required": true,
3352
+ "schema": {
3353
+ "type": "string"
3354
+ }
3355
+ }
3356
+ ],
3357
+ "requestBody": {
3358
+ "description": "Conference participant details to update",
3359
+ "content": {
3360
+ "application/json": {
3361
+ "schema": {
3362
+ "$ref": "#/components/schemas/UpdateConferenceParticipantRequest"
3363
+ }
3364
+ }
3365
+ }
3366
+ },
3367
+ "deprecated": false,
3368
+ "responses": {
3369
+ "200": {
3370
+ "description": "Successfully retrieved conference participant",
3371
+ "content": {
3372
+ "application/json": {
3373
+ "schema": {
3374
+ "$ref": "#/components/schemas/ConferenceParticipantResult"
3375
+ }
3376
+ }
3377
+ }
3378
+ }
3379
+ }
3380
+ },
3381
+ "get": {
3382
+ "tags": [],
3383
+ "summary": "Get a Participant",
3384
+ "operationId": "get-a-participant",
3385
+ "parameters": [
3386
+ {
3387
+ "$ref": "#/components/parameters/AccountId"
3388
+ },
3389
+ {
3390
+ "name": "conferenceId",
3391
+ "in": "path",
3392
+ "description": "ID of the conference this participant is in.",
3393
+ "required": true,
3394
+ "schema": {
3395
+ "type": "string"
3396
+ }
3397
+ },
3398
+ {
3399
+ "name": "callId",
3400
+ "in": "path",
3401
+ "description": "ID of the Call associated with this participant.",
3402
+ "required": true,
3403
+ "schema": {
3404
+ "type": "string"
3405
+ }
3406
+ }
3407
+ ],
3408
+ "deprecated": false,
3409
+ "responses": {
3410
+ "200": {
3411
+ "description": "Successfully retrieved conference participant",
3412
+ "content": {
3413
+ "application/json": {
3414
+ "schema": {
3415
+ "$ref": "#/components/schemas/ConferenceParticipantResult"
3416
+ }
3417
+ }
3418
+ }
3419
+ }
3420
+ }
3421
+ },
3422
+ "delete": {
3423
+ "tags": [],
3424
+ "summary": "Remove a Participant",
3425
+ "operationId": "remove-a-participant",
3426
+ "parameters": [
3427
+ {
3428
+ "$ref": "#/components/parameters/AccountId"
3429
+ },
3430
+ {
3431
+ "name": "conferenceId",
3432
+ "in": "path",
3433
+ "description": "ID of the conference this participant is in.",
3434
+ "required": true,
3435
+ "schema": {
3436
+ "type": "string"
3437
+ }
3438
+ },
3439
+ {
3440
+ "name": "callId",
3441
+ "in": "path",
3442
+ "description": "ID of the Call associated with this participant.",
3443
+ "required": true,
3444
+ "schema": {
3445
+ "type": "string"
3446
+ }
3447
+ }
3448
+ ],
3449
+ "deprecated": false,
3450
+ "responses": {
3451
+ "204": {
3452
+ "description": "Successfully deleted conference participant"
3453
+ }
3454
+ }
3455
+ }
3456
+ },
3457
+ "/Accounts/{accountId}/Conferences/{conferenceId}/Participants": {
3458
+ "get": {
3459
+ "tags": [],
3460
+ "summary": "List Participants",
3461
+ "operationId": "list-participants",
3462
+ "parameters": [
3463
+ {
3464
+ "name": "talk",
3465
+ "in": "query",
3466
+ "description": "Only show Participants with the talk privilege.",
3467
+ "required": false,
3468
+ "schema": {
3469
+ "type": "boolean"
3470
+ }
3471
+ },
3472
+ {
3473
+ "name": "listen",
3474
+ "in": "query",
3475
+ "description": "Only show Participants with the listen privilege.",
3476
+ "required": false,
3477
+ "schema": {
3478
+ "type": "boolean"
3479
+ }
3480
+ },
3481
+ {
3482
+ "$ref": "#/components/parameters/AccountId"
3483
+ },
3484
+ {
3485
+ "name": "conferenceId",
3486
+ "in": "path",
3487
+ "description": "ID of the conference this participant is in.",
3488
+ "required": true,
3489
+ "schema": {
3490
+ "type": "string"
3491
+ }
3492
+ }
3493
+ ],
3494
+ "deprecated": false,
3495
+ "responses": {
3496
+ "200": {
3497
+ "description": "Successfully retrieved conference participant list",
3498
+ "content": {
3499
+ "application/json": {
3500
+ "schema": {
3501
+ "$ref": "#/components/schemas/ConferenceParticipantList"
3502
+ }
3503
+ }
3504
+ }
3505
+ }
3506
+ }
3507
+ }
3508
+ },
3509
+ "/Accounts/{accountId}/Queues/{queueId}": {
3510
+ "post": {
3511
+ "tags": [],
3512
+ "summary": "Update a Queue",
3513
+ "operationId": "update-a-queue",
3514
+ "parameters": [
3515
+ {
3516
+ "$ref": "#/components/parameters/AccountId"
3517
+ },
3518
+ {
3519
+ "name": "queueId",
3520
+ "in": "path",
3521
+ "description": "A string that uniquely identifies this Queue resource.",
3522
+ "required": true,
3523
+ "schema": {
3524
+ "type": "string"
3525
+ }
3526
+ }
3527
+ ],
3528
+ "requestBody": {
3529
+ "description": "Queue Details to update",
3530
+ "content": {
3531
+ "application/json": {
3532
+ "schema": {
3533
+ "$ref": "#/components/schemas/QueueRequest"
3534
+ }
3535
+ }
3536
+ }
3537
+ },
3538
+ "deprecated": false,
3539
+ "responses": {
3540
+ "200": {
3541
+ "description": "Successfully updated queue",
3542
+ "content": {
3543
+ "application/json": {
3544
+ "schema": {
3545
+ "$ref": "#/components/schemas/QueueResult"
3546
+ }
3547
+ }
3548
+ }
3549
+ }
3550
+ }
3551
+ },
3552
+ "get": {
3553
+ "tags": [],
3554
+ "summary": "Get a Queue",
3555
+ "operationId": "get-a-queue",
3556
+ "parameters": [
3557
+ {
3558
+ "$ref": "#/components/parameters/AccountId"
3559
+ },
3560
+ {
3561
+ "name": "queueId",
3562
+ "in": "path",
3563
+ "description": "A string that uniquely identifies this queue resource.",
3564
+ "required": true,
3565
+ "schema": {
3566
+ "type": "string"
3567
+ }
3568
+ }
3569
+ ],
3570
+ "deprecated": false,
3571
+ "responses": {
3572
+ "200": {
3573
+ "description": "Successfully retrieved queue",
3574
+ "content": {
3575
+ "application/json": {
3576
+ "schema": {
3577
+ "$ref": "#/components/schemas/QueueResult"
3578
+ }
3579
+ }
3580
+ }
3581
+ }
3582
+ }
3583
+ }
3584
+ },
3585
+ "/Accounts/{accountId}/Queues": {
3586
+ "get": {
3587
+ "tags": [],
3588
+ "summary": "List Active Queues",
3589
+ "operationId": "list-active-queues",
3590
+ "parameters": [
3591
+ {
3592
+ "name": "alias",
3593
+ "in": "query",
3594
+ "description": "Return only the Queue resources with aliases that exactly match this name.",
3595
+ "required": false,
3596
+ "schema": {
3597
+ "type": "string"
3598
+ }
3599
+ },
3600
+ {
3601
+ "$ref": "#/components/parameters/AccountId"
3602
+ }
3603
+ ],
3604
+ "deprecated": false,
3605
+ "responses": {
3606
+ "200": {
3607
+ "description": "Successfuly retrieved queue list",
3608
+ "content": {
3609
+ "application/json": {
3610
+ "schema": {
3611
+ "$ref": "#/components/schemas/QueueList"
3612
+ }
3613
+ }
3614
+ }
3615
+ }
3616
+ }
3617
+ },
3618
+ "post": {
3619
+ "tags": [],
3620
+ "summary": "Create a Queue",
3621
+ "operationId": "create-a-queue",
3622
+ "parameters": [
3623
+ {
3624
+ "$ref": "#/components/parameters/AccountId"
3625
+ }
3626
+ ],
3627
+ "requestBody": {
3628
+ "description": "Queue details used to create a queue",
3629
+ "content": {
3630
+ "application/json": {
3631
+ "schema": {
3632
+ "$ref": "#/components/schemas/QueueRequest"
3633
+ }
3634
+ }
3635
+ }
3636
+ },
3637
+ "deprecated": false,
3638
+ "responses": {
3639
+ "200": {
3640
+ "description": "Successfuly created queue",
3641
+ "content": {
3642
+ "application/json": {
3643
+ "schema": {
3644
+ "$ref": "#/components/schemas/QueueResult"
3645
+ }
3646
+ }
3647
+ }
3648
+ }
3649
+ }
3650
+ }
3651
+ },
3652
+ "/Accounts/{accountId}/Queues/{queueId}/Members/Front": {
3653
+ "get": {
3654
+ "tags": [],
3655
+ "summary": "Get Head Member",
3656
+ "operationId": "get-head-member",
3657
+ "parameters": [
3658
+ {
3659
+ "$ref": "#/components/parameters/AccountId"
3660
+ },
3661
+ {
3662
+ "name": "queueId",
3663
+ "in": "path",
3664
+ "description": "String that uniquely identifies the Queue that the Member belongs to.",
3665
+ "required": true,
3666
+ "schema": {
3667
+ "type": "string"
3668
+ }
3669
+ }
3670
+ ],
3671
+ "deprecated": false,
3672
+ "responses": {
3673
+ "200": {
3674
+ "description": "Successfully retrieved queue member",
3675
+ "content": {
3676
+ "application/json": {
3677
+ "schema": {
3678
+ "$ref": "#/components/schemas/QueueMember"
3679
+ }
3680
+ }
3681
+ }
3682
+ }
3683
+ }
3684
+ },
3685
+ "post": {
3686
+ "tags": [],
3687
+ "summary": "Dequeue Head Member",
3688
+ "operationId": "dequeue-head-member",
3689
+ "parameters": [
3690
+ {
3691
+ "$ref": "#/components/parameters/AccountId"
3692
+ },
3693
+ {
3694
+ "name": "queueId",
3695
+ "in": "path",
3696
+ "description": "String that uniquely identifies this queue resource.",
3697
+ "required": true,
3698
+ "schema": {
3699
+ "type": "string"
3700
+ }
3701
+ }
3702
+ ],
3703
+ "deprecated": false,
3704
+ "responses": {
3705
+ "202": {
3706
+ "description": "Accepted dequeue request",
3707
+ "content": {
3708
+ "application/json": {
3709
+ "schema": {
3710
+ "$ref": "#/components/schemas/QueueMember"
3711
+ }
3712
+ }
3713
+ }
3714
+ }
3715
+ }
3716
+ }
3717
+ },
3718
+ "/Accounts/{accountId}/Queues/{queueId}/Members": {
3719
+ "get": {
3720
+ "tags": [],
3721
+ "summary": "List Members",
3722
+ "operationId": "list-members",
3723
+ "parameters": [
3724
+ {
3725
+ "$ref": "#/components/parameters/AccountId"
3726
+ },
3727
+ {
3728
+ "name": "queueId",
3729
+ "in": "path",
3730
+ "description": "String that uniquely identifies the Queue that the Member belongs to.",
3731
+ "required": true,
3732
+ "schema": {
3733
+ "type": "string"
3734
+ }
3735
+ }
3736
+ ],
3737
+ "deprecated": false,
3738
+ "responses": {
3739
+ "200": {
3740
+ "description": "Successfully retrieved queue member list",
3741
+ "content": {
3742
+ "application/json": {
3743
+ "schema": {
3744
+ "$ref": "#/components/schemas/QueueMemberList"
3745
+ }
3746
+ }
3747
+ }
3748
+ }
3749
+ }
3750
+ }
3751
+ },
3752
+ "/Accounts/{accountId}/Queues/{queueId}/Members/{callId}": {
3753
+ "get": {
3754
+ "tags": [],
3755
+ "summary": "Get a Member",
3756
+ "operationId": "get-a-member",
3757
+ "parameters": [
3758
+ {
3759
+ "$ref": "#/components/parameters/AccountId"
3760
+ },
3761
+ {
3762
+ "name": "queueId",
3763
+ "in": "path",
3764
+ "description": "String that uniquely identifies the Queue that the Member belongs to.",
3765
+ "required": true,
3766
+ "schema": {
3767
+ "type": "string"
3768
+ }
3769
+ },
3770
+ {
3771
+ "name": "callId",
3772
+ "in": "path",
3773
+ "description": "ID of the Call that the Member belongs to",
3774
+ "required": true,
3775
+ "schema": {
3776
+ "type": "string"
3777
+ }
3778
+ }
3779
+ ],
3780
+ "deprecated": false,
3781
+ "responses": {
3782
+ "200": {
3783
+ "description": "Successfully retrieved a queue member",
3784
+ "content": {
3785
+ "application/json": {
3786
+ "schema": {
3787
+ "$ref": "#/components/schemas/QueueMember"
3788
+ }
3789
+ }
3790
+ }
3791
+ }
3792
+ }
3793
+ },
3794
+ "post": {
3795
+ "tags": [],
3796
+ "summary": "Dequeue a Member",
3797
+ "operationId": "dequeue-a-member",
3798
+ "parameters": [
3799
+ {
3800
+ "$ref": "#/components/parameters/AccountId"
3801
+ },
3802
+ {
3803
+ "name": "queueId",
3804
+ "in": "path",
3805
+ "description": "String that uniquely identifies the Queue that the Member belongs to.",
3806
+ "required": true,
3807
+ "schema": {
3808
+ "type": "string"
3809
+ }
3810
+ },
3811
+ {
3812
+ "name": "callId",
3813
+ "in": "path",
3814
+ "description": "ID if the Call that the Member belongs to",
3815
+ "required": true,
3816
+ "schema": {
3817
+ "type": "string"
3818
+ }
3819
+ }
3820
+ ],
3821
+ "deprecated": false,
3822
+ "responses": {
3823
+ "202": {
3824
+ "description": "Accepted dequeue request",
3825
+ "content": {
3826
+ "application/json": {
3827
+ "schema": {
3828
+ "$ref": "#/components/schemas/QueueMember"
3829
+ }
3830
+ }
3831
+ }
3832
+ }
3833
+ }
3834
+ }
3835
+ },
3836
+ "/Accounts/{accountId}/Logs": {
3837
+ "get": {
3838
+ "tags": [],
3839
+ "summary": "List All Account Logs",
3840
+ "operationId": "list-all-account-logs",
3841
+ "parameters": [
3842
+ {
3843
+ "$ref": "#/components/parameters/AccountId"
3844
+ }
3845
+ ],
3846
+ "deprecated": false,
3847
+ "responses": {
3848
+ "200": {
3849
+ "description": "Successfully retrieved log list",
3850
+ "content": {
3851
+ "application/json": {
3852
+ "schema": {
3853
+ "$ref": "#/components/schemas/LogList"
3854
+ }
3855
+ }
3856
+ }
3857
+ }
3858
+ }
3859
+ },
3860
+ "post": {
3861
+ "tags": [],
3862
+ "summary": "Filter Logs",
3863
+ "operationId": "filter-logs",
3864
+ "parameters": [
3865
+ {
3866
+ "$ref": "#/components/parameters/AccountId"
3867
+ }
3868
+ ],
3869
+ "requestBody": {
3870
+ "description": "Filter logs request paramters",
3871
+ "required": true,
3872
+ "content": {
3873
+ "application/json": {
3874
+ "schema": {
3875
+ "$ref": "#/components/schemas/FilterLogsRequest"
3876
+ }
3877
+ }
3878
+ }
3879
+ },
3880
+ "deprecated": false,
3881
+ "responses": {
3882
+ "200": {
3883
+ "description": "Successfully retrieved log list",
3884
+ "content": {
3885
+ "application/json": {
3886
+ "schema": {
3887
+ "$ref": "#/components/schemas/LogList"
3888
+ }
3889
+ }
3890
+ }
3891
+ }
3892
+ }
3893
+ }
3894
+ },
3895
+ "/Accounts/{accountId}/Recordings": {
3896
+ "get": {
3897
+ "tags": [],
3898
+ "summary": "List Recordings",
3899
+ "operationId": "list-recordings",
3900
+ "parameters": [
3901
+ {
3902
+ "name": "callId",
3903
+ "in": "query",
3904
+ "description": "Show only Recordings made during the Call with this ID.",
3905
+ "required": false,
3906
+ "schema": {
3907
+ "type": "string"
3908
+ }
3909
+ },
3910
+ {
3911
+ "name": "conferenceId",
3912
+ "in": "query",
3913
+ "description": "Show only Recordings made during the conference with this ID.",
3914
+ "required": false,
3915
+ "schema": {
3916
+ "type": "string"
3917
+ }
3918
+ },
3919
+ {
3920
+ "name": "dateCreated",
3921
+ "in": "query",
3922
+ "description": "Only show Recordings created on this date, formatted as *YYYY-MM-DD*.",
3923
+ "required": false,
3924
+ "schema": {
3925
+ "type": "string"
3926
+ }
3927
+ },
3928
+ {
3929
+ "$ref": "#/components/parameters/AccountId"
3930
+ }
3931
+ ],
3932
+ "responses": {
3933
+ "200": {
3934
+ "description": "List of Recordings",
3935
+ "content": {
3936
+ "application/json": {
3937
+ "schema": {
3938
+ "$ref": "#/components/schemas/RecordingList"
3939
+ }
3940
+ }
3941
+ }
3942
+ }
3943
+ },
3944
+ "deprecated": false
3945
+ }
3946
+ },
3947
+ "/Accounts/{accountId}/Recordings/{recordingId}": {
3948
+ "get": {
3949
+ "tags": [],
3950
+ "summary": "Get a Recording",
3951
+ "operationId": "get-a-recording",
3952
+ "parameters": [
3953
+ {
3954
+ "$ref": "#/components/parameters/AccountId"
3955
+ },
3956
+ {
3957
+ "name": "recordingId",
3958
+ "in": "path",
3959
+ "description": "String that uniquely identifies this recording resource.",
3960
+ "required": true,
3961
+ "schema": {
3962
+ "type": "string"
3963
+ }
3964
+ }
3965
+ ],
3966
+ "responses": {
3967
+ "200": {
3968
+ "description": "",
3969
+ "content": {
3970
+ "application/json": {
3971
+ "schema": {
3972
+ "$ref": "#/components/schemas/RecordingResult"
3973
+ }
3974
+ }
3975
+ }
3976
+ }
3977
+ },
3978
+ "deprecated": false
3979
+ },
3980
+ "delete": {
3981
+ "tags": [],
3982
+ "summary": "Delete a Recording",
3983
+ "operationId": "delete-a-recording",
3984
+ "parameters": [
3985
+ {
3986
+ "$ref": "#/components/parameters/AccountId"
3987
+ },
3988
+ {
3989
+ "name": "recordingId",
3990
+ "in": "path",
3991
+ "description": "String that uniquely identifies this recording resource.",
3992
+ "required": true,
3993
+ "schema": {
3994
+ "type": "string"
3995
+ }
3996
+ }
3997
+ ],
3998
+ "responses": {
3999
+ "204": {
4000
+ "description": "Recording Deleted"
4001
+ }
4002
+ },
4003
+ "deprecated": false
4004
+ }
4005
+ },
4006
+ "/Accounts/{accountId}/Recordings/{recordingId}/Stream": {
4007
+ "get": {
4008
+ "tags": [],
4009
+ "summary": "Stream a Recording File",
4010
+ "operationId": "stream-a-recording-file",
4011
+ "parameters": [
4012
+ {
4013
+ "$ref": "#/components/parameters/AccountId"
4014
+ },
4015
+ {
4016
+ "name": "recordingId",
4017
+ "in": "path",
4018
+ "description": "String that uniquely identifies this recording resource.",
4019
+ "required": true,
4020
+ "schema": {
4021
+ "type": "string"
4022
+ }
4023
+ }
4024
+ ],
4025
+ "responses": {
4026
+ "200": {
4027
+ "description": "Streaming a Recording represented with audio/x-wav mime-type",
4028
+ "content": {
4029
+ "audio/x-wav": {
4030
+ "schema": {
4031
+ "type": "string",
4032
+ "format": "binary"
4033
+ }
4034
+ }
4035
+ }
4036
+ }
4037
+ },
4038
+ "deprecated": false
4039
+ }
4040
+ },
4041
+ "/Accounts/{accountId}/Recordings/{recordingId}/Download": {
4042
+ "get": {
4043
+ "tags": [],
4044
+ "summary": "Download a Recording File",
4045
+ "operationId": "download-a-recording-file",
4046
+ "parameters": [
4047
+ {
4048
+ "$ref": "#/components/parameters/AccountId"
4049
+ },
4050
+ {
4051
+ "name": "recordingId",
4052
+ "in": "path",
4053
+ "description": "String that uniquely identifies this recording resource.",
4054
+ "required": true,
4055
+ "schema": {
4056
+ "type": "string"
4057
+ }
4058
+ }
4059
+ ],
4060
+ "responses": {
4061
+ "200": {
4062
+ "description": "Download a Recording file represented with audio/x-wav mime-type",
4063
+ "content": {
4064
+ "audio/x-wav": {
4065
+ "schema": {
4066
+ "type": "string",
4067
+ "format": "binary"
4068
+ }
4069
+ }
4070
+ }
4071
+ }
4072
+ },
4073
+ "deprecated": false
4074
+ }
4075
+ },
4076
+ "/Accounts/{accountId}/Messages": {
4077
+ "get": {
4078
+ "tags": [],
4079
+ "summary": "List SMS Messages",
4080
+ "operationId": "list-sms-messages",
4081
+ "parameters": [
4082
+ {
4083
+ "$ref": "#/components/parameters/AccountId"
4084
+ },
4085
+ {
4086
+ "name": "to",
4087
+ "in": "query",
4088
+ "description": "Only show Messages to this phone number.",
4089
+ "required": false,
4090
+ "schema": {
4091
+ "type": "string"
4092
+ }
4093
+ },
4094
+ {
4095
+ "name": "from",
4096
+ "in": "query",
4097
+ "description": "Only show Messages from this phone number.",
4098
+ "required": false,
4099
+ "schema": {
4100
+ "type": "string"
4101
+ }
4102
+ },
4103
+ {
4104
+ "name": "beginTime",
4105
+ "in": "query",
4106
+ "description": "Only show Messages sent at or after this time (GMT), given as *YYYY-MM-DD hh:mm:ss*.",
4107
+ "required": false,
4108
+ "schema": {
4109
+ "type": "string"
4110
+ }
4111
+ },
4112
+ {
4113
+ "name": "endTime",
4114
+ "in": "query",
4115
+ "description": "Only show messages sent at or before this time (GMT), given as *YYYY-MM-DD hh:mm*..",
4116
+ "required": false,
4117
+ "schema": {
4118
+ "type": "string"
4119
+ }
4120
+ },
4121
+ {
4122
+ "name": "direction",
4123
+ "in": "query",
4124
+ "description": "Either `inbound` or `outbound`. Only show Messages that were either *sent from* or *received by* FreeClimb.",
4125
+ "required": false,
4126
+ "schema": {
4127
+ "$ref": "#/components/schemas/MessageDirection"
4128
+ }
4129
+ }
4130
+ ],
4131
+ "responses": {
4132
+ "200": {
4133
+ "description": "List of messages",
4134
+ "content": {
4135
+ "application/json": {
4136
+ "schema": {
4137
+ "$ref": "#/components/schemas/MessagesList"
4138
+ }
4139
+ }
4140
+ }
4141
+ }
4142
+ },
4143
+ "deprecated": false
4144
+ },
4145
+ "post": {
4146
+ "tags": [],
4147
+ "summary": "Send an SMS Message",
4148
+ "operationId": "send-an-sms-message",
4149
+ "parameters": [
4150
+ {
4151
+ "$ref": "#/components/parameters/AccountId"
4152
+ }
4153
+ ],
4154
+ "requestBody": {
4155
+ "description": "Details to create a message",
4156
+ "required": true,
4157
+ "content": {
4158
+ "application/json": {
4159
+ "schema": {
4160
+ "$ref": "#/components/schemas/MessageRequest"
4161
+ }
4162
+ }
4163
+ }
4164
+ },
4165
+ "responses": {
4166
+ "202": {
4167
+ "description": "The message has been accepted.",
4168
+ "content": {
4169
+ "application/json": {
4170
+ "schema": {
4171
+ "$ref": "#/components/schemas/MessageResult"
4172
+ }
4173
+ }
4174
+ }
4175
+ }
4176
+ },
4177
+ "deprecated": false
4178
+ }
4179
+ },
4180
+ "/Accounts/{accountId}/Messages/{messageId}": {
4181
+ "get": {
4182
+ "tags": [],
4183
+ "summary": "Get an SMS Message",
4184
+ "operationId": "get-an-sms-message",
4185
+ "parameters": [
4186
+ {
4187
+ "$ref": "#/components/parameters/AccountId"
4188
+ },
4189
+ {
4190
+ "name": "messageId",
4191
+ "in": "path",
4192
+ "description": "String that uniquely identifies this Message resource.",
4193
+ "required": true,
4194
+ "schema": {
4195
+ "type": "string"
4196
+ }
4197
+ }
4198
+ ],
4199
+ "responses": {
4200
+ "200": {
4201
+ "description": "The specific SMS message that’s been processed by FreeClimb",
4202
+ "content": {
4203
+ "application/json": {
4204
+ "schema": {
4205
+ "$ref": "#/components/schemas/MessageResult"
4206
+ }
4207
+ }
4208
+ }
4209
+ }
4210
+ },
4211
+ "deprecated": false
4212
+ }
4213
+ }
4214
+ },
4215
+ "x-headers": [],
4216
+ "x-explorer-enabled": true,
4217
+ "x-proxy-enabled": true,
4218
+ "x-samples-enabled": false,
4219
+ "x-samples-languages": ["curl", "node", "ruby", "javascript", "python"]
4220
+ }