ARI: Channels added to Stasis application during WebSocket creation ...
[asterisk/asterisk.git] / res / ari / resource_events.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_events.c
23  *
24  * WebSocket resource
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_EVENTS_H
38 #define _ASTERISK_RESOURCE_EVENTS_H
39
40 #include "asterisk/ari.h"
41
42 /*! Argument struct for ast_ari_events_event_websocket() */
43 struct ast_ari_events_event_websocket_args {
44         /*! Array of Applications to subscribe to. */
45         const char **app;
46         /*! Length of app array. */
47         size_t app_count;
48         /*! Parsing context for app. */
49         char *app_parse;
50 };
51
52 /*!
53  * \brief WebSocket connection for events.
54  *
55  * \retval  0 success
56  * \retval -1 error
57  */
58 int ast_ari_websocket_events_event_websocket_init(void);
59
60 /*!
61  * \brief WebSocket connection for events.
62  *
63  * \param ser HTTP TCP/TLS Server Session
64  * \param headers HTTP headers
65  * \param args Swagger parameters
66  * \param session_id The id of the current session.
67  *
68  * \retval 0 success
69  * \retval non-zero error
70  */
71 int ast_ari_websocket_events_event_websocket_attempted(struct ast_tcptls_session_instance *ser,
72         struct ast_variable *headers, struct ast_ari_events_event_websocket_args *args, const char *session_id);
73
74 /*!
75  * \brief WebSocket connection for events.
76  *
77  * \param session ARI WebSocket.
78  * \param headers HTTP headers.
79  * \param args Swagger parameters.
80  * \param session_id The id of the current session.
81  */
82 void ast_ari_websocket_events_event_websocket_established(struct ast_ari_websocket_session *session,
83         struct ast_variable *headers, struct ast_ari_events_event_websocket_args *args);
84 /*! Argument struct for ast_ari_events_user_event() */
85 struct ast_ari_events_user_event_args {
86         /*! Event name */
87         const char *event_name;
88         /*! The name of the application that will receive this event */
89         const char *application;
90         /*! Array of URI for event source (channel:{channelId}, bridge:{bridgeId}, endpoint:{tech}/{resource}, deviceState:{deviceName} */
91         const char **source;
92         /*! Length of source array. */
93         size_t source_count;
94         /*! Parsing context for source. */
95         char *source_parse;
96         /*! The "variables" key in the body object holds custom key/value pairs to add to the user event. Ex. { "variables": { "key": "value" } } */
97         struct ast_json *variables;
98 };
99 /*!
100  * \brief Body parsing function for /events/user/{eventName}.
101  * \param body The JSON body from which to parse parameters.
102  * \param[out] args The args structure to parse into.
103  * \retval zero on success
104  * \retval non-zero on failure
105  */
106 int ast_ari_events_user_event_parse_body(
107         struct ast_json *body,
108         struct ast_ari_events_user_event_args *args);
109
110 /*!
111  * \brief Generate a user event.
112  *
113  * \param headers HTTP headers
114  * \param args Swagger parameters
115  * \param[out] response HTTP response
116  */
117 void ast_ari_events_user_event(struct ast_variable *headers, struct ast_ari_events_user_event_args *args, struct ast_ari_response *response);
118
119 #endif /* _ASTERISK_RESOURCE_EVENTS_H */