Add the ability to continue and originate using priority labels.
[asterisk/asterisk.git] / res / ari / resource_channels.h
1 /*
2  * Asterisk -- An open source telephony toolkit.
3  *
4  * Copyright (C) 2012 - 2013, Digium, Inc.
5  *
6  * David M. Lee, II <dlee@digium.com>
7  *
8  * See http://www.asterisk.org for more information about
9  * the Asterisk project. Please do not directly contact
10  * any of the maintainers of this project for assistance;
11  * the project provides a web site, mailing lists and IRC
12  * channels for your use.
13  *
14  * This program is free software, distributed under the terms of
15  * the GNU General Public License Version 2. See the LICENSE file
16  * at the top of the source tree.
17  */
18
19 /*! \file
20  *
21  * \brief Generated file - declares stubs to be implemented in
22  * res/ari/resource_channels.c
23  *
24  * Channel resources
25  *
26  * \author David M. Lee, II <dlee@digium.com>
27  */
28
29 /*
30  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
31  * !!!!!                               DO NOT EDIT                        !!!!!
32  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
33  * This file is generated by a mustache template. Please see the original
34  * template in rest-api-templates/ari_resource.h.mustache
35  */
36
37 #ifndef _ASTERISK_RESOURCE_CHANNELS_H
38 #define _ASTERISK_RESOURCE_CHANNELS_H
39
40 #include "asterisk/ari.h"
41
42 /*! Argument struct for ast_ari_channels_list() */
43 struct ast_ari_channels_list_args {
44 };
45 /*!
46  * \brief List all active channels in Asterisk.
47  *
48  * \param headers HTTP headers
49  * \param args Swagger parameters
50  * \param[out] response HTTP response
51  */
52 void ast_ari_channels_list(struct ast_variable *headers, struct ast_ari_channels_list_args *args, struct ast_ari_response *response);
53 /*! Argument struct for ast_ari_channels_originate() */
54 struct ast_ari_channels_originate_args {
55         /*! Endpoint to call. */
56         const char *endpoint;
57         /*! The extension to dial after the endpoint answers */
58         const char *extension;
59         /*! The context to dial after the endpoint answers. If omitted, uses 'default' */
60         const char *context;
61         /*! The priority to dial after the endpoint answers. If omitted, uses 1 */
62         long priority;
63         /*! The label to dial after the endpoint answers. Will supersede 'priority' if provided. */
64         const char *label;
65         /*! The application that is subscribed to the originated channel, and passed to the Stasis application. */
66         const char *app;
67         /*! The application arguments to pass to the Stasis application. */
68         const char *app_args;
69         /*! CallerID to use when dialing the endpoint or extension. */
70         const char *caller_id;
71         /*! Timeout (in seconds) before giving up dialing, or -1 for no timeout. */
72         int timeout;
73         /*! The "variables" key in the body object holds variable key/value pairs to set on the channel on creation. Other keys in the body object are interpreted as query parameters. Ex. { "endpoint": "SIP/Alice", "variables": { "CALLERID(name)": "Alice" } } */
74         struct ast_json *variables;
75         /*! The unique id to assign the channel on creation. */
76         const char *channel_id;
77         /*! The unique id to assign the second channel when using local channels. */
78         const char *other_channel_id;
79         /*! The unique id of the channel which is originating this one. */
80         const char *originator;
81 };
82 /*!
83  * \brief Body parsing function for /channels.
84  * \param body The JSON body from which to parse parameters.
85  * \param[out] args The args structure to parse into.
86  * \retval zero on success
87  * \retval non-zero on failure
88  */
89 int ast_ari_channels_originate_parse_body(
90         struct ast_json *body,
91         struct ast_ari_channels_originate_args *args);
92
93 /*!
94  * \brief Create a new channel (originate).
95  *
96  * The new channel is created immediately and a snapshot of it returned. If a Stasis application is provided it will be automatically subscribed to the originated channel for further events and updates.
97  *
98  * \param headers HTTP headers
99  * \param args Swagger parameters
100  * \param[out] response HTTP response
101  */
102 void ast_ari_channels_originate(struct ast_variable *headers, struct ast_ari_channels_originate_args *args, struct ast_ari_response *response);
103 /*! Argument struct for ast_ari_channels_get() */
104 struct ast_ari_channels_get_args {
105         /*! Channel's id */
106         const char *channel_id;
107 };
108 /*!
109  * \brief Channel details.
110  *
111  * \param headers HTTP headers
112  * \param args Swagger parameters
113  * \param[out] response HTTP response
114  */
115 void ast_ari_channels_get(struct ast_variable *headers, struct ast_ari_channels_get_args *args, struct ast_ari_response *response);
116 /*! Argument struct for ast_ari_channels_originate_with_id() */
117 struct ast_ari_channels_originate_with_id_args {
118         /*! The unique id to assign the channel on creation. */
119         const char *channel_id;
120         /*! Endpoint to call. */
121         const char *endpoint;
122         /*! The extension to dial after the endpoint answers */
123         const char *extension;
124         /*! The context to dial after the endpoint answers. If omitted, uses 'default' */
125         const char *context;
126         /*! The priority to dial after the endpoint answers. If omitted, uses 1 */
127         long priority;
128         /*! The label to dial after the endpoint answers. Will supersede priority, if provided */
129         const char *label;
130         /*! The application that is subscribed to the originated channel, and passed to the Stasis application. */
131         const char *app;
132         /*! The application arguments to pass to the Stasis application. */
133         const char *app_args;
134         /*! CallerID to use when dialing the endpoint or extension. */
135         const char *caller_id;
136         /*! Timeout (in seconds) before giving up dialing, or -1 for no timeout. */
137         int timeout;
138         /*! The "variables" key in the body object holds variable key/value pairs to set on the channel on creation. Other keys in the body object are interpreted as query parameters. Ex. { "endpoint": "SIP/Alice", "variables": { "CALLERID(name)": "Alice" } } */
139         struct ast_json *variables;
140         /*! The unique id to assign the second channel when using local channels. */
141         const char *other_channel_id;
142         /*! The unique id of the channel which is originating this one. */
143         const char *originator;
144 };
145 /*!
146  * \brief Body parsing function for /channels/{channelId}.
147  * \param body The JSON body from which to parse parameters.
148  * \param[out] args The args structure to parse into.
149  * \retval zero on success
150  * \retval non-zero on failure
151  */
152 int ast_ari_channels_originate_with_id_parse_body(
153         struct ast_json *body,
154         struct ast_ari_channels_originate_with_id_args *args);
155
156 /*!
157  * \brief Create a new channel (originate with id).
158  *
159  * The new channel is created immediately and a snapshot of it returned. If a Stasis application is provided it will be automatically subscribed to the originated channel for further events and updates.
160  *
161  * \param headers HTTP headers
162  * \param args Swagger parameters
163  * \param[out] response HTTP response
164  */
165 void ast_ari_channels_originate_with_id(struct ast_variable *headers, struct ast_ari_channels_originate_with_id_args *args, struct ast_ari_response *response);
166 /*! Argument struct for ast_ari_channels_hangup() */
167 struct ast_ari_channels_hangup_args {
168         /*! Channel's id */
169         const char *channel_id;
170         /*! Reason for hanging up the channel */
171         const char *reason;
172 };
173 /*!
174  * \brief Body parsing function for /channels/{channelId}.
175  * \param body The JSON body from which to parse parameters.
176  * \param[out] args The args structure to parse into.
177  * \retval zero on success
178  * \retval non-zero on failure
179  */
180 int ast_ari_channels_hangup_parse_body(
181         struct ast_json *body,
182         struct ast_ari_channels_hangup_args *args);
183
184 /*!
185  * \brief Delete (i.e. hangup) a channel.
186  *
187  * \param headers HTTP headers
188  * \param args Swagger parameters
189  * \param[out] response HTTP response
190  */
191 void ast_ari_channels_hangup(struct ast_variable *headers, struct ast_ari_channels_hangup_args *args, struct ast_ari_response *response);
192 /*! Argument struct for ast_ari_channels_continue_in_dialplan() */
193 struct ast_ari_channels_continue_in_dialplan_args {
194         /*! Channel's id */
195         const char *channel_id;
196         /*! The context to continue to. */
197         const char *context;
198         /*! The extension to continue to. */
199         const char *extension;
200         /*! The priority to continue to. */
201         int priority;
202         /*! The label to continue to - will supersede 'priority' if both are provided. */
203         const char *label;
204 };
205 /*!
206  * \brief Body parsing function for /channels/{channelId}/continue.
207  * \param body The JSON body from which to parse parameters.
208  * \param[out] args The args structure to parse into.
209  * \retval zero on success
210  * \retval non-zero on failure
211  */
212 int ast_ari_channels_continue_in_dialplan_parse_body(
213         struct ast_json *body,
214         struct ast_ari_channels_continue_in_dialplan_args *args);
215
216 /*!
217  * \brief Exit application; continue execution in the dialplan.
218  *
219  * \param headers HTTP headers
220  * \param args Swagger parameters
221  * \param[out] response HTTP response
222  */
223 void ast_ari_channels_continue_in_dialplan(struct ast_variable *headers, struct ast_ari_channels_continue_in_dialplan_args *args, struct ast_ari_response *response);
224 /*! Argument struct for ast_ari_channels_answer() */
225 struct ast_ari_channels_answer_args {
226         /*! Channel's id */
227         const char *channel_id;
228 };
229 /*!
230  * \brief Answer a channel.
231  *
232  * \param headers HTTP headers
233  * \param args Swagger parameters
234  * \param[out] response HTTP response
235  */
236 void ast_ari_channels_answer(struct ast_variable *headers, struct ast_ari_channels_answer_args *args, struct ast_ari_response *response);
237 /*! Argument struct for ast_ari_channels_ring() */
238 struct ast_ari_channels_ring_args {
239         /*! Channel's id */
240         const char *channel_id;
241 };
242 /*!
243  * \brief Indicate ringing to a channel.
244  *
245  * \param headers HTTP headers
246  * \param args Swagger parameters
247  * \param[out] response HTTP response
248  */
249 void ast_ari_channels_ring(struct ast_variable *headers, struct ast_ari_channels_ring_args *args, struct ast_ari_response *response);
250 /*! Argument struct for ast_ari_channels_ring_stop() */
251 struct ast_ari_channels_ring_stop_args {
252         /*! Channel's id */
253         const char *channel_id;
254 };
255 /*!
256  * \brief Stop ringing indication on a channel if locally generated.
257  *
258  * \param headers HTTP headers
259  * \param args Swagger parameters
260  * \param[out] response HTTP response
261  */
262 void ast_ari_channels_ring_stop(struct ast_variable *headers, struct ast_ari_channels_ring_stop_args *args, struct ast_ari_response *response);
263 /*! Argument struct for ast_ari_channels_send_dtmf() */
264 struct ast_ari_channels_send_dtmf_args {
265         /*! Channel's id */
266         const char *channel_id;
267         /*! DTMF To send. */
268         const char *dtmf;
269         /*! Amount of time to wait before DTMF digits (specified in milliseconds) start. */
270         int before;
271         /*! Amount of time in between DTMF digits (specified in milliseconds). */
272         int between;
273         /*! Length of each DTMF digit (specified in milliseconds). */
274         int duration;
275         /*! Amount of time to wait after DTMF digits (specified in milliseconds) end. */
276         int after;
277 };
278 /*!
279  * \brief Body parsing function for /channels/{channelId}/dtmf.
280  * \param body The JSON body from which to parse parameters.
281  * \param[out] args The args structure to parse into.
282  * \retval zero on success
283  * \retval non-zero on failure
284  */
285 int ast_ari_channels_send_dtmf_parse_body(
286         struct ast_json *body,
287         struct ast_ari_channels_send_dtmf_args *args);
288
289 /*!
290  * \brief Send provided DTMF to a given channel.
291  *
292  * \param headers HTTP headers
293  * \param args Swagger parameters
294  * \param[out] response HTTP response
295  */
296 void ast_ari_channels_send_dtmf(struct ast_variable *headers, struct ast_ari_channels_send_dtmf_args *args, struct ast_ari_response *response);
297 /*! Argument struct for ast_ari_channels_mute() */
298 struct ast_ari_channels_mute_args {
299         /*! Channel's id */
300         const char *channel_id;
301         /*! Direction in which to mute audio */
302         const char *direction;
303 };
304 /*!
305  * \brief Body parsing function for /channels/{channelId}/mute.
306  * \param body The JSON body from which to parse parameters.
307  * \param[out] args The args structure to parse into.
308  * \retval zero on success
309  * \retval non-zero on failure
310  */
311 int ast_ari_channels_mute_parse_body(
312         struct ast_json *body,
313         struct ast_ari_channels_mute_args *args);
314
315 /*!
316  * \brief Mute a channel.
317  *
318  * \param headers HTTP headers
319  * \param args Swagger parameters
320  * \param[out] response HTTP response
321  */
322 void ast_ari_channels_mute(struct ast_variable *headers, struct ast_ari_channels_mute_args *args, struct ast_ari_response *response);
323 /*! Argument struct for ast_ari_channels_unmute() */
324 struct ast_ari_channels_unmute_args {
325         /*! Channel's id */
326         const char *channel_id;
327         /*! Direction in which to unmute audio */
328         const char *direction;
329 };
330 /*!
331  * \brief Body parsing function for /channels/{channelId}/mute.
332  * \param body The JSON body from which to parse parameters.
333  * \param[out] args The args structure to parse into.
334  * \retval zero on success
335  * \retval non-zero on failure
336  */
337 int ast_ari_channels_unmute_parse_body(
338         struct ast_json *body,
339         struct ast_ari_channels_unmute_args *args);
340
341 /*!
342  * \brief Unmute a channel.
343  *
344  * \param headers HTTP headers
345  * \param args Swagger parameters
346  * \param[out] response HTTP response
347  */
348 void ast_ari_channels_unmute(struct ast_variable *headers, struct ast_ari_channels_unmute_args *args, struct ast_ari_response *response);
349 /*! Argument struct for ast_ari_channels_hold() */
350 struct ast_ari_channels_hold_args {
351         /*! Channel's id */
352         const char *channel_id;
353 };
354 /*!
355  * \brief Hold a channel.
356  *
357  * \param headers HTTP headers
358  * \param args Swagger parameters
359  * \param[out] response HTTP response
360  */
361 void ast_ari_channels_hold(struct ast_variable *headers, struct ast_ari_channels_hold_args *args, struct ast_ari_response *response);
362 /*! Argument struct for ast_ari_channels_unhold() */
363 struct ast_ari_channels_unhold_args {
364         /*! Channel's id */
365         const char *channel_id;
366 };
367 /*!
368  * \brief Remove a channel from hold.
369  *
370  * \param headers HTTP headers
371  * \param args Swagger parameters
372  * \param[out] response HTTP response
373  */
374 void ast_ari_channels_unhold(struct ast_variable *headers, struct ast_ari_channels_unhold_args *args, struct ast_ari_response *response);
375 /*! Argument struct for ast_ari_channels_start_moh() */
376 struct ast_ari_channels_start_moh_args {
377         /*! Channel's id */
378         const char *channel_id;
379         /*! Music on hold class to use */
380         const char *moh_class;
381 };
382 /*!
383  * \brief Body parsing function for /channels/{channelId}/moh.
384  * \param body The JSON body from which to parse parameters.
385  * \param[out] args The args structure to parse into.
386  * \retval zero on success
387  * \retval non-zero on failure
388  */
389 int ast_ari_channels_start_moh_parse_body(
390         struct ast_json *body,
391         struct ast_ari_channels_start_moh_args *args);
392
393 /*!
394  * \brief Play music on hold to a channel.
395  *
396  * Using media operations such as /play on a channel playing MOH in this manner will suspend MOH without resuming automatically. If continuing music on hold is desired, the stasis application must reinitiate music on hold.
397  *
398  * \param headers HTTP headers
399  * \param args Swagger parameters
400  * \param[out] response HTTP response
401  */
402 void ast_ari_channels_start_moh(struct ast_variable *headers, struct ast_ari_channels_start_moh_args *args, struct ast_ari_response *response);
403 /*! Argument struct for ast_ari_channels_stop_moh() */
404 struct ast_ari_channels_stop_moh_args {
405         /*! Channel's id */
406         const char *channel_id;
407 };
408 /*!
409  * \brief Stop playing music on hold to a channel.
410  *
411  * \param headers HTTP headers
412  * \param args Swagger parameters
413  * \param[out] response HTTP response
414  */
415 void ast_ari_channels_stop_moh(struct ast_variable *headers, struct ast_ari_channels_stop_moh_args *args, struct ast_ari_response *response);
416 /*! Argument struct for ast_ari_channels_start_silence() */
417 struct ast_ari_channels_start_silence_args {
418         /*! Channel's id */
419         const char *channel_id;
420 };
421 /*!
422  * \brief Play silence to a channel.
423  *
424  * Using media operations such as /play on a channel playing silence in this manner will suspend silence without resuming automatically.
425  *
426  * \param headers HTTP headers
427  * \param args Swagger parameters
428  * \param[out] response HTTP response
429  */
430 void ast_ari_channels_start_silence(struct ast_variable *headers, struct ast_ari_channels_start_silence_args *args, struct ast_ari_response *response);
431 /*! Argument struct for ast_ari_channels_stop_silence() */
432 struct ast_ari_channels_stop_silence_args {
433         /*! Channel's id */
434         const char *channel_id;
435 };
436 /*!
437  * \brief Stop playing silence to a channel.
438  *
439  * \param headers HTTP headers
440  * \param args Swagger parameters
441  * \param[out] response HTTP response
442  */
443 void ast_ari_channels_stop_silence(struct ast_variable *headers, struct ast_ari_channels_stop_silence_args *args, struct ast_ari_response *response);
444 /*! Argument struct for ast_ari_channels_play() */
445 struct ast_ari_channels_play_args {
446         /*! Channel's id */
447         const char *channel_id;
448         /*! Media's URI to play. */
449         const char *media;
450         /*! For sounds, selects language for sound. */
451         const char *lang;
452         /*! Number of media to skip before playing. */
453         int offsetms;
454         /*! Number of milliseconds to skip for forward/reverse operations. */
455         int skipms;
456         /*! Playback ID. */
457         const char *playback_id;
458 };
459 /*!
460  * \brief Body parsing function for /channels/{channelId}/play.
461  * \param body The JSON body from which to parse parameters.
462  * \param[out] args The args structure to parse into.
463  * \retval zero on success
464  * \retval non-zero on failure
465  */
466 int ast_ari_channels_play_parse_body(
467         struct ast_json *body,
468         struct ast_ari_channels_play_args *args);
469
470 /*!
471  * \brief Start playback of media.
472  *
473  * The media URI may be any of a number of URI's. Currently sound:, recording:, number:, digits:, characters:, and tone: URI's are supported. This operation creates a playback resource that can be used to control the playback of media (pause, rewind, fast forward, etc.)
474  *
475  * \param headers HTTP headers
476  * \param args Swagger parameters
477  * \param[out] response HTTP response
478  */
479 void ast_ari_channels_play(struct ast_variable *headers, struct ast_ari_channels_play_args *args, struct ast_ari_response *response);
480 /*! Argument struct for ast_ari_channels_play_with_id() */
481 struct ast_ari_channels_play_with_id_args {
482         /*! Channel's id */
483         const char *channel_id;
484         /*! Playback ID. */
485         const char *playback_id;
486         /*! Media's URI to play. */
487         const char *media;
488         /*! For sounds, selects language for sound. */
489         const char *lang;
490         /*! Number of media to skip before playing. */
491         int offsetms;
492         /*! Number of milliseconds to skip for forward/reverse operations. */
493         int skipms;
494 };
495 /*!
496  * \brief Body parsing function for /channels/{channelId}/play/{playbackId}.
497  * \param body The JSON body from which to parse parameters.
498  * \param[out] args The args structure to parse into.
499  * \retval zero on success
500  * \retval non-zero on failure
501  */
502 int ast_ari_channels_play_with_id_parse_body(
503         struct ast_json *body,
504         struct ast_ari_channels_play_with_id_args *args);
505
506 /*!
507  * \brief Start playback of media and specify the playbackId.
508  *
509  * The media URI may be any of a number of URI's. Currently sound: and recording: URI's are supported. This operation creates a playback resource that can be used to control the playback of media (pause, rewind, fast forward, etc.)
510  *
511  * \param headers HTTP headers
512  * \param args Swagger parameters
513  * \param[out] response HTTP response
514  */
515 void ast_ari_channels_play_with_id(struct ast_variable *headers, struct ast_ari_channels_play_with_id_args *args, struct ast_ari_response *response);
516 /*! Argument struct for ast_ari_channels_record() */
517 struct ast_ari_channels_record_args {
518         /*! Channel's id */
519         const char *channel_id;
520         /*! Recording's filename */
521         const char *name;
522         /*! Format to encode audio in */
523         const char *format;
524         /*! Maximum duration of the recording, in seconds. 0 for no limit */
525         int max_duration_seconds;
526         /*! Maximum duration of silence, in seconds. 0 for no limit */
527         int max_silence_seconds;
528         /*! Action to take if a recording with the same name already exists. */
529         const char *if_exists;
530         /*! Play beep when recording begins */
531         int beep;
532         /*! DTMF input to terminate recording */
533         const char *terminate_on;
534 };
535 /*!
536  * \brief Body parsing function for /channels/{channelId}/record.
537  * \param body The JSON body from which to parse parameters.
538  * \param[out] args The args structure to parse into.
539  * \retval zero on success
540  * \retval non-zero on failure
541  */
542 int ast_ari_channels_record_parse_body(
543         struct ast_json *body,
544         struct ast_ari_channels_record_args *args);
545
546 /*!
547  * \brief Start a recording.
548  *
549  * Record audio from a channel. Note that this will not capture audio sent to the channel. The bridge itself has a record feature if that's what you want.
550  *
551  * \param headers HTTP headers
552  * \param args Swagger parameters
553  * \param[out] response HTTP response
554  */
555 void ast_ari_channels_record(struct ast_variable *headers, struct ast_ari_channels_record_args *args, struct ast_ari_response *response);
556 /*! Argument struct for ast_ari_channels_get_channel_var() */
557 struct ast_ari_channels_get_channel_var_args {
558         /*! Channel's id */
559         const char *channel_id;
560         /*! The channel variable or function to get */
561         const char *variable;
562 };
563 /*!
564  * \brief Body parsing function for /channels/{channelId}/variable.
565  * \param body The JSON body from which to parse parameters.
566  * \param[out] args The args structure to parse into.
567  * \retval zero on success
568  * \retval non-zero on failure
569  */
570 int ast_ari_channels_get_channel_var_parse_body(
571         struct ast_json *body,
572         struct ast_ari_channels_get_channel_var_args *args);
573
574 /*!
575  * \brief Get the value of a channel variable or function.
576  *
577  * \param headers HTTP headers
578  * \param args Swagger parameters
579  * \param[out] response HTTP response
580  */
581 void ast_ari_channels_get_channel_var(struct ast_variable *headers, struct ast_ari_channels_get_channel_var_args *args, struct ast_ari_response *response);
582 /*! Argument struct for ast_ari_channels_set_channel_var() */
583 struct ast_ari_channels_set_channel_var_args {
584         /*! Channel's id */
585         const char *channel_id;
586         /*! The channel variable or function to set */
587         const char *variable;
588         /*! The value to set the variable to */
589         const char *value;
590 };
591 /*!
592  * \brief Body parsing function for /channels/{channelId}/variable.
593  * \param body The JSON body from which to parse parameters.
594  * \param[out] args The args structure to parse into.
595  * \retval zero on success
596  * \retval non-zero on failure
597  */
598 int ast_ari_channels_set_channel_var_parse_body(
599         struct ast_json *body,
600         struct ast_ari_channels_set_channel_var_args *args);
601
602 /*!
603  * \brief Set the value of a channel variable or function.
604  *
605  * \param headers HTTP headers
606  * \param args Swagger parameters
607  * \param[out] response HTTP response
608  */
609 void ast_ari_channels_set_channel_var(struct ast_variable *headers, struct ast_ari_channels_set_channel_var_args *args, struct ast_ari_response *response);
610 /*! Argument struct for ast_ari_channels_snoop_channel() */
611 struct ast_ari_channels_snoop_channel_args {
612         /*! Channel's id */
613         const char *channel_id;
614         /*! Direction of audio to spy on */
615         const char *spy;
616         /*! Direction of audio to whisper into */
617         const char *whisper;
618         /*! Application the snooping channel is placed into */
619         const char *app;
620         /*! The application arguments to pass to the Stasis application */
621         const char *app_args;
622         /*! Unique ID to assign to snooping channel */
623         const char *snoop_id;
624 };
625 /*!
626  * \brief Body parsing function for /channels/{channelId}/snoop.
627  * \param body The JSON body from which to parse parameters.
628  * \param[out] args The args structure to parse into.
629  * \retval zero on success
630  * \retval non-zero on failure
631  */
632 int ast_ari_channels_snoop_channel_parse_body(
633         struct ast_json *body,
634         struct ast_ari_channels_snoop_channel_args *args);
635
636 /*!
637  * \brief Start snooping.
638  *
639  * Snoop (spy/whisper) on a specific channel.
640  *
641  * \param headers HTTP headers
642  * \param args Swagger parameters
643  * \param[out] response HTTP response
644  */
645 void ast_ari_channels_snoop_channel(struct ast_variable *headers, struct ast_ari_channels_snoop_channel_args *args, struct ast_ari_response *response);
646 /*! Argument struct for ast_ari_channels_snoop_channel_with_id() */
647 struct ast_ari_channels_snoop_channel_with_id_args {
648         /*! Channel's id */
649         const char *channel_id;
650         /*! Unique ID to assign to snooping channel */
651         const char *snoop_id;
652         /*! Direction of audio to spy on */
653         const char *spy;
654         /*! Direction of audio to whisper into */
655         const char *whisper;
656         /*! Application the snooping channel is placed into */
657         const char *app;
658         /*! The application arguments to pass to the Stasis application */
659         const char *app_args;
660 };
661 /*!
662  * \brief Body parsing function for /channels/{channelId}/snoop/{snoopId}.
663  * \param body The JSON body from which to parse parameters.
664  * \param[out] args The args structure to parse into.
665  * \retval zero on success
666  * \retval non-zero on failure
667  */
668 int ast_ari_channels_snoop_channel_with_id_parse_body(
669         struct ast_json *body,
670         struct ast_ari_channels_snoop_channel_with_id_args *args);
671
672 /*!
673  * \brief Start snooping.
674  *
675  * Snoop (spy/whisper) on a specific channel.
676  *
677  * \param headers HTTP headers
678  * \param args Swagger parameters
679  * \param[out] response HTTP response
680  */
681 void ast_ari_channels_snoop_channel_with_id(struct ast_variable *headers, struct ast_ari_channels_snoop_channel_with_id_args *args, struct ast_ari_response *response);
682
683 #endif /* _ASTERISK_RESOURCE_CHANNELS_H */