49#if defined(AST_DEVMODE)
70#if defined(AST_DEVMODE)
76#if defined(AST_DEVMODE)
88 if (200 <= code && code <= 299) {
100 "Internal Server Error",
"Response validation failed");
104fin: __attribute__((unused))
144#if defined(AST_DEVMODE)
149 for (i = get_params; i; i = i->
next) {
150 if (strcmp(i->
name,
"type") == 0) {
153 if (strcmp(i->
name,
"bridgeId") == 0) {
156 if (strcmp(i->
name,
"name") == 0) {
166#if defined(AST_DEVMODE)
179 if (200 <= code && code <= 299) {
191 "Internal Server Error",
"Response validation failed");
195fin: __attribute__((unused))
231#if defined(AST_DEVMODE)
236 for (i = get_params; i; i = i->
next) {
237 if (strcmp(i->
name,
"type") == 0) {
240 if (strcmp(i->
name,
"name") == 0) {
245 for (i = path_vars; i; i = i->
next) {
246 if (strcmp(i->
name,
"bridgeId") == 0) {
256#if defined(AST_DEVMODE)
269 if (200 <= code && code <= 299) {
273 ast_log(
LOG_ERROR,
"Invalid error response %d for /bridges/{bridgeId}\n", code);
281 "Internal Server Error",
"Response validation failed");
285fin: __attribute__((unused))
304#if defined(AST_DEVMODE)
309 for (i = path_vars; i; i = i->
next) {
310 if (strcmp(i->
name,
"bridgeId") == 0) {
316#if defined(AST_DEVMODE)
329 if (200 <= code && code <= 299) {
333 ast_log(
LOG_ERROR,
"Invalid error response %d for /bridges/{bridgeId}\n", code);
341 "Internal Server Error",
"Response validation failed");
345fin: __attribute__((unused))
364#if defined(AST_DEVMODE)
369 for (i = path_vars; i; i = i->
next) {
370 if (strcmp(i->
name,
"bridgeId") == 0) {
376#if defined(AST_DEVMODE)
389 if (200 <= code && code <= 299) {
393 ast_log(
LOG_ERROR,
"Invalid error response %d for /bridges/{bridgeId}\n", code);
401 "Internal Server Error",
"Response validation failed");
405fin: __attribute__((unused))
426 if (!
args->channel) {
430 for (i = 0; i <
args->channel_count; ++i) {
435 args->channel_count = 1;
437 if (!
args->channel) {
478#if defined(AST_DEVMODE)
483 for (i = get_params; i; i = i->
next) {
484 if (strcmp(i->
name,
"channel") == 0) {
490 if (!
args.channel_parse) {
495 if (strlen(
args.channel_parse) == 0) {
497 args.channel_count = 1;
498 vals[0] =
args.channel_parse;
501 args.channel_parse,
',', vals,
505 if (
args.channel_count == 0) {
513 "Too many values for channel");
523 for (j = 0; j <
args.channel_count; ++j) {
524 args.channel[j] = (vals[j]);
527 if (strcmp(i->
name,
"role") == 0) {
530 if (strcmp(i->
name,
"absorbDTMF") == 0) {
533 if (strcmp(i->
name,
"mute") == 0) {
536 if (strcmp(i->
name,
"inhibitConnectedLineUpdates") == 0) {
541 for (i = path_vars; i; i = i->
next) {
542 if (strcmp(i->
name,
"bridgeId") == 0) {
552#if defined(AST_DEVMODE)
568 if (200 <= code && code <= 299) {
572 ast_log(
LOG_ERROR,
"Invalid error response %d for /bridges/{bridgeId}/addChannel\n", code);
578 ast_log(
LOG_ERROR,
"Response validation failed for /bridges/{bridgeId}/addChannel\n");
580 "Internal Server Error",
"Response validation failed");
584fin: __attribute__((unused))
607 if (!
args->channel) {
611 for (i = 0; i <
args->channel_count; ++i) {
616 args->channel_count = 1;
618 if (!
args->channel) {
643#if defined(AST_DEVMODE)
648 for (i = get_params; i; i = i->
next) {
649 if (strcmp(i->
name,
"channel") == 0) {
655 if (!
args.channel_parse) {
660 if (strlen(
args.channel_parse) == 0) {
662 args.channel_count = 1;
663 vals[0] =
args.channel_parse;
666 args.channel_parse,
',', vals,
670 if (
args.channel_count == 0) {
678 "Too many values for channel");
688 for (j = 0; j <
args.channel_count; ++j) {
689 args.channel[j] = (vals[j]);
694 for (i = path_vars; i; i = i->
next) {
695 if (strcmp(i->
name,
"bridgeId") == 0) {
705#if defined(AST_DEVMODE)
721 if (200 <= code && code <= 299) {
725 ast_log(
LOG_ERROR,
"Invalid error response %d for /bridges/{bridgeId}/removeChannel\n", code);
731 ast_log(
LOG_ERROR,
"Response validation failed for /bridges/{bridgeId}/removeChannel\n");
733 "Internal Server Error",
"Response validation failed");
737fin: __attribute__((unused))
758#if defined(AST_DEVMODE)
763 for (i = path_vars; i; i = i->
next) {
764 if (strcmp(i->
name,
"bridgeId") == 0) {
767 if (strcmp(i->
name,
"channelId") == 0) {
773#if defined(AST_DEVMODE)
788 if (200 <= code && code <= 299) {
792 ast_log(
LOG_ERROR,
"Invalid error response %d for /bridges/{bridgeId}/videoSource/{channelId}\n", code);
798 ast_log(
LOG_ERROR,
"Response validation failed for /bridges/{bridgeId}/videoSource/{channelId}\n");
800 "Internal Server Error",
"Response validation failed");
804fin: __attribute__((unused))
823#if defined(AST_DEVMODE)
828 for (i = path_vars; i; i = i->
next) {
829 if (strcmp(i->
name,
"bridgeId") == 0) {
835#if defined(AST_DEVMODE)
848 if (200 <= code && code <= 299) {
852 ast_log(
LOG_ERROR,
"Invalid error response %d for /bridges/{bridgeId}/videoSource\n", code);
858 ast_log(
LOG_ERROR,
"Response validation failed for /bridges/{bridgeId}/videoSource\n");
860 "Internal Server Error",
"Response validation failed");
864fin: __attribute__((unused))
896#if defined(AST_DEVMODE)
901 for (i = get_params; i; i = i->
next) {
902 if (strcmp(i->
name,
"mohClass") == 0) {
907 for (i = path_vars; i; i = i->
next) {
908 if (strcmp(i->
name,
"bridgeId") == 0) {
918#if defined(AST_DEVMODE)
932 if (200 <= code && code <= 299) {
936 ast_log(
LOG_ERROR,
"Invalid error response %d for /bridges/{bridgeId}/moh\n", code);
942 ast_log(
LOG_ERROR,
"Response validation failed for /bridges/{bridgeId}/moh\n");
944 "Internal Server Error",
"Response validation failed");
948fin: __attribute__((unused))
967#if defined(AST_DEVMODE)
972 for (i = path_vars; i; i = i->
next) {
973 if (strcmp(i->
name,
"bridgeId") == 0) {
979#if defined(AST_DEVMODE)
993 if (200 <= code && code <= 299) {
997 ast_log(
LOG_ERROR,
"Invalid error response %d for /bridges/{bridgeId}/moh\n", code);
1003 ast_log(
LOG_ERROR,
"Response validation failed for /bridges/{bridgeId}/moh\n");
1005 "Internal Server Error",
"Response validation failed");
1009fin: __attribute__((unused))
1034 for (i = 0; i <
args->media_count; ++i) {
1039 args->media_count = 1;
1082#if defined(AST_DEVMODE)
1087 for (i = get_params; i; i = i->
next) {
1088 if (strcmp(i->
name,
"media") == 0) {
1094 if (!
args.media_parse) {
1099 if (strlen(
args.media_parse) == 0) {
1101 args.media_count = 1;
1102 vals[0] =
args.media_parse;
1105 args.media_parse,
',', vals,
1109 if (
args.media_count == 0) {
1117 "Too many values for media");
1127 for (j = 0; j <
args.media_count; ++j) {
1128 args.media[j] = (vals[j]);
1131 if (strcmp(i->
name,
"lang") == 0) {
1134 if (strcmp(i->
name,
"offsetms") == 0) {
1137 if (strcmp(i->
name,
"skipms") == 0) {
1140 if (strcmp(i->
name,
"playbackId") == 0) {
1145 for (i = path_vars; i; i = i->
next) {
1146 if (strcmp(i->
name,
"bridgeId") == 0) {
1156#if defined(AST_DEVMODE)
1170 if (200 <= code && code <= 299) {
1174 ast_log(
LOG_ERROR,
"Invalid error response %d for /bridges/{bridgeId}/play\n", code);
1180 ast_log(
LOG_ERROR,
"Response validation failed for /bridges/{bridgeId}/play\n");
1182 "Internal Server Error",
"Response validation failed");
1186fin: __attribute__((unused))
1213 for (i = 0; i <
args->media_count; ++i) {
1218 args->media_count = 1;
1257#if defined(AST_DEVMODE)
1262 for (i = get_params; i; i = i->
next) {
1263 if (strcmp(i->
name,
"media") == 0) {
1269 if (!
args.media_parse) {
1274 if (strlen(
args.media_parse) == 0) {
1276 args.media_count = 1;
1277 vals[0] =
args.media_parse;
1280 args.media_parse,
',', vals,
1284 if (
args.media_count == 0) {
1292 "Too many values for media");
1302 for (j = 0; j <
args.media_count; ++j) {
1303 args.media[j] = (vals[j]);
1306 if (strcmp(i->
name,
"lang") == 0) {
1309 if (strcmp(i->
name,
"offsetms") == 0) {
1312 if (strcmp(i->
name,
"skipms") == 0) {
1317 for (i = path_vars; i; i = i->
next) {
1318 if (strcmp(i->
name,
"bridgeId") == 0) {
1321 if (strcmp(i->
name,
"playbackId") == 0) {
1331#if defined(AST_DEVMODE)
1345 if (200 <= code && code <= 299) {
1349 ast_log(
LOG_ERROR,
"Invalid error response %d for /bridges/{bridgeId}/play/{playbackId}\n", code);
1355 ast_log(
LOG_ERROR,
"Response validation failed for /bridges/{bridgeId}/play/{playbackId}\n");
1357 "Internal Server Error",
"Response validation failed");
1361fin: __attribute__((unused))
1419#if defined(AST_DEVMODE)
1424 for (i = get_params; i; i = i->
next) {
1425 if (strcmp(i->
name,
"name") == 0) {
1428 if (strcmp(i->
name,
"format") == 0) {
1431 if (strcmp(i->
name,
"maxDurationSeconds") == 0) {
1432 args.max_duration_seconds = atoi(i->
value);
1434 if (strcmp(i->
name,
"maxSilenceSeconds") == 0) {
1435 args.max_silence_seconds = atoi(i->
value);
1437 if (strcmp(i->
name,
"ifExists") == 0) {
1440 if (strcmp(i->
name,
"beep") == 0) {
1443 if (strcmp(i->
name,
"terminateOn") == 0) {
1448 for (i = path_vars; i; i = i->
next) {
1449 if (strcmp(i->
name,
"bridgeId") == 0) {
1459#if defined(AST_DEVMODE)
1475 if (200 <= code && code <= 299) {
1479 ast_log(
LOG_ERROR,
"Invalid error response %d for /bridges/{bridgeId}/record\n", code);
1485 ast_log(
LOG_ERROR,
"Response validation failed for /bridges/{bridgeId}/record\n");
1487 "Internal Server Error",
"Response validation failed");
1491fin: __attribute__((unused))
1617 .
requires =
"res_ari,res_ari_model,res_stasis,res_stasis_recording,res_stasis_playback",
int ast_ari_remove_handler(struct stasis_rest_handlers *handler)
void ast_ari_response_error(struct ast_ari_response *response, int response_code, const char *response_text, const char *message_fmt,...)
Fill in an error ast_ari_response.
void ast_ari_response_alloc_failed(struct ast_ari_response *response)
Fill in response with a 500 message for allocation failures.
int ast_ari_add_handler(struct stasis_rest_handlers *handler)
int ast_ari_validate_playback(struct ast_json *json)
Validator for Playback.
int ast_ari_validate_live_recording(struct ast_json *json)
Validator for LiveRecording.
int ast_ari_validate_bridge(struct ast_json *json)
Validator for Bridge.
ari_validator ast_ari_validate_bridge_fn(void)
Function pointer to ast_ari_validate_bridge().
Generated file - Build validators for ARI model objects.
int ast_ari_validate_void(struct ast_json *json)
Validator for native Swagger void.
int ast_ari_validate_list(struct ast_json *json, int(*fn)(struct ast_json *))
Validator for a Swagger List[]/JSON array.
Asterisk main include file. File version handling, generic pbx functions.
#define ast_strdup(str)
A wrapper for strdup()
#define ast_malloc(len)
A wrapper for malloc()
Application convenience functions, designed to give consistent look and feel to Asterisk apps.
#define ast_app_separate_args(a, b, c, d)
enum ast_json_type ast_json_typeof(const struct ast_json *value)
Get the type of value.
struct ast_json * ast_json_array_get(const struct ast_json *array, size_t index)
Get an element from an array.
const char * ast_json_string_get(const struct ast_json *string)
Get the value of a JSON string.
struct ast_json * ast_json_object_get(struct ast_json *object, const char *key)
Get a field from a JSON object.
intmax_t ast_json_integer_get(const struct ast_json *integer)
Get the value from a JSON integer.
int ast_json_is_true(const struct ast_json *value)
Check if value is JSON true.
size_t ast_json_array_size(const struct ast_json *array)
Get the size of a JSON array.
Asterisk module definitions.
#define AST_MODULE_INFO(keystr, flags_to_set, desc, fields...)
@ AST_MODULE_SUPPORT_CORE
#define ASTERISK_GPL_KEY
The text the key() function should return.
@ AST_MODULE_LOAD_SUCCESS
@ AST_MODULE_LOAD_DECLINE
Module has failed to load, may be in an inconsistent state.
static void ast_ari_bridges_stop_moh_cb(struct ast_tcptls_session_instance *ser, struct ast_variable *get_params, struct ast_variable *path_vars, struct ast_variable *headers, struct ast_json *body, struct ast_ari_response *response)
Parameter parsing callback for /bridges/{bridgeId}/moh.
static struct stasis_rest_handlers bridges_bridgeId_play
REST handler for /api-docs/bridges.json.
static void ast_ari_bridges_destroy_cb(struct ast_tcptls_session_instance *ser, struct ast_variable *get_params, struct ast_variable *path_vars, struct ast_variable *headers, struct ast_json *body, struct ast_ari_response *response)
Parameter parsing callback for /bridges/{bridgeId}.
static struct stasis_rest_handlers bridges_bridgeId_record
REST handler for /api-docs/bridges.json.
static void ast_ari_bridges_get_cb(struct ast_tcptls_session_instance *ser, struct ast_variable *get_params, struct ast_variable *path_vars, struct ast_variable *headers, struct ast_json *body, struct ast_ari_response *response)
Parameter parsing callback for /bridges/{bridgeId}.
int ast_ari_bridges_add_channel_parse_body(struct ast_json *body, struct ast_ari_bridges_add_channel_args *args)
Body parsing function for /bridges/{bridgeId}/addChannel.
static void ast_ari_bridges_list_cb(struct ast_tcptls_session_instance *ser, struct ast_variable *get_params, struct ast_variable *path_vars, struct ast_variable *headers, struct ast_json *body, struct ast_ari_response *response)
Parameter parsing callback for /bridges.
static void ast_ari_bridges_set_video_source_cb(struct ast_tcptls_session_instance *ser, struct ast_variable *get_params, struct ast_variable *path_vars, struct ast_variable *headers, struct ast_json *body, struct ast_ari_response *response)
Parameter parsing callback for /bridges/{bridgeId}/videoSource/{channelId}.
static struct stasis_rest_handlers bridges_bridgeId_videoSource_channelId
REST handler for /api-docs/bridges.json.
static void ast_ari_bridges_create_with_id_cb(struct ast_tcptls_session_instance *ser, struct ast_variable *get_params, struct ast_variable *path_vars, struct ast_variable *headers, struct ast_json *body, struct ast_ari_response *response)
Parameter parsing callback for /bridges/{bridgeId}.
int ast_ari_bridges_start_moh_parse_body(struct ast_json *body, struct ast_ari_bridges_start_moh_args *args)
Body parsing function for /bridges/{bridgeId}/moh.
static void ast_ari_bridges_create_cb(struct ast_tcptls_session_instance *ser, struct ast_variable *get_params, struct ast_variable *path_vars, struct ast_variable *headers, struct ast_json *body, struct ast_ari_response *response)
Parameter parsing callback for /bridges.
int ast_ari_bridges_record_parse_body(struct ast_json *body, struct ast_ari_bridges_record_args *args)
Body parsing function for /bridges/{bridgeId}/record.
int ast_ari_bridges_create_with_id_parse_body(struct ast_json *body, struct ast_ari_bridges_create_with_id_args *args)
Body parsing function for /bridges/{bridgeId}.
static struct stasis_rest_handlers bridges_bridgeId_addChannel
REST handler for /api-docs/bridges.json.
int ast_ari_bridges_play_parse_body(struct ast_json *body, struct ast_ari_bridges_play_args *args)
Body parsing function for /bridges/{bridgeId}/play.
static void ast_ari_bridges_play_with_id_cb(struct ast_tcptls_session_instance *ser, struct ast_variable *get_params, struct ast_variable *path_vars, struct ast_variable *headers, struct ast_json *body, struct ast_ari_response *response)
Parameter parsing callback for /bridges/{bridgeId}/play/{playbackId}.
static void ast_ari_bridges_remove_channel_cb(struct ast_tcptls_session_instance *ser, struct ast_variable *get_params, struct ast_variable *path_vars, struct ast_variable *headers, struct ast_json *body, struct ast_ari_response *response)
Parameter parsing callback for /bridges/{bridgeId}/removeChannel.
static void ast_ari_bridges_play_cb(struct ast_tcptls_session_instance *ser, struct ast_variable *get_params, struct ast_variable *path_vars, struct ast_variable *headers, struct ast_json *body, struct ast_ari_response *response)
Parameter parsing callback for /bridges/{bridgeId}/play.
int ast_ari_bridges_play_with_id_parse_body(struct ast_json *body, struct ast_ari_bridges_play_with_id_args *args)
Body parsing function for /bridges/{bridgeId}/play/{playbackId}.
static void ast_ari_bridges_start_moh_cb(struct ast_tcptls_session_instance *ser, struct ast_variable *get_params, struct ast_variable *path_vars, struct ast_variable *headers, struct ast_json *body, struct ast_ari_response *response)
Parameter parsing callback for /bridges/{bridgeId}/moh.
static void ast_ari_bridges_record_cb(struct ast_tcptls_session_instance *ser, struct ast_variable *get_params, struct ast_variable *path_vars, struct ast_variable *headers, struct ast_json *body, struct ast_ari_response *response)
Parameter parsing callback for /bridges/{bridgeId}/record.
static void ast_ari_bridges_clear_video_source_cb(struct ast_tcptls_session_instance *ser, struct ast_variable *get_params, struct ast_variable *path_vars, struct ast_variable *headers, struct ast_json *body, struct ast_ari_response *response)
Parameter parsing callback for /bridges/{bridgeId}/videoSource.
int ast_ari_bridges_create_parse_body(struct ast_json *body, struct ast_ari_bridges_create_args *args)
Body parsing function for /bridges.
static int load_module(void)
static struct stasis_rest_handlers bridges_bridgeId_moh
REST handler for /api-docs/bridges.json.
static int unload_module(void)
int ast_ari_bridges_remove_channel_parse_body(struct ast_json *body, struct ast_ari_bridges_remove_channel_args *args)
Body parsing function for /bridges/{bridgeId}/removeChannel.
static struct stasis_rest_handlers bridges_bridgeId_play_playbackId
REST handler for /api-docs/bridges.json.
static struct stasis_rest_handlers bridges_bridgeId
REST handler for /api-docs/bridges.json.
static void ast_ari_bridges_add_channel_cb(struct ast_tcptls_session_instance *ser, struct ast_variable *get_params, struct ast_variable *path_vars, struct ast_variable *headers, struct ast_json *body, struct ast_ari_response *response)
Parameter parsing callback for /bridges/{bridgeId}/addChannel.
static struct stasis_rest_handlers bridges_bridgeId_removeChannel
REST handler for /api-docs/bridges.json.
static struct stasis_rest_handlers bridges_bridgeId_videoSource
REST handler for /api-docs/bridges.json.
static struct stasis_rest_handlers bridges
REST handler for /api-docs/bridges.json.
void ast_ari_bridges_add_channel(struct ast_variable *headers, struct ast_ari_bridges_add_channel_args *args, struct ast_ari_response *response)
Add a channel to a bridge.
void ast_ari_bridges_clear_video_source(struct ast_variable *headers, struct ast_ari_bridges_clear_video_source_args *args, struct ast_ari_response *response)
Removes any explicit video source in a multi-party mixing bridge. This operation has no effect on bri...
void ast_ari_bridges_get(struct ast_variable *headers, struct ast_ari_bridges_get_args *args, struct ast_ari_response *response)
Get bridge details.
void ast_ari_bridges_play_with_id(struct ast_variable *headers, struct ast_ari_bridges_play_with_id_args *args, struct ast_ari_response *response)
Start playback of media on a bridge.
void ast_ari_bridges_play(struct ast_variable *headers, struct ast_ari_bridges_play_args *args, struct ast_ari_response *response)
Start playback of media on a bridge.
void ast_ari_bridges_destroy(struct ast_variable *headers, struct ast_ari_bridges_destroy_args *args, struct ast_ari_response *response)
Shut down a bridge.
void ast_ari_bridges_remove_channel(struct ast_variable *headers, struct ast_ari_bridges_remove_channel_args *args, struct ast_ari_response *response)
Remove a channel from a bridge.
void ast_ari_bridges_create(struct ast_variable *headers, struct ast_ari_bridges_create_args *args, struct ast_ari_response *response)
Create a new bridge.
void ast_ari_bridges_create_with_id(struct ast_variable *headers, struct ast_ari_bridges_create_with_id_args *args, struct ast_ari_response *response)
Create a new bridge.
void ast_ari_bridges_set_video_source(struct ast_variable *headers, struct ast_ari_bridges_set_video_source_args *args, struct ast_ari_response *response)
Set a channel as the video source in a multi-party mixing bridge. This operation has no effect on bri...
void ast_ari_bridges_record(struct ast_variable *headers, struct ast_ari_bridges_record_args *args, struct ast_ari_response *response)
Start a recording.
void ast_ari_bridges_start_moh(struct ast_variable *headers, struct ast_ari_bridges_start_moh_args *args, struct ast_ari_response *response)
Play music on hold to a bridge or change the MOH class that is playing.
void ast_ari_bridges_stop_moh(struct ast_variable *headers, struct ast_ari_bridges_stop_moh_args *args, struct ast_ari_response *response)
Stop playing music on hold to a bridge.
void ast_ari_bridges_list(struct ast_variable *headers, struct ast_ari_bridges_list_args *args, struct ast_ari_response *response)
List all active bridges in Asterisk.
Generated file - declares stubs to be implemented in res/ari/resource_bridges.c.
Stasis Application API. See Stasis Application API for detailed documentation.
int attribute_pure ast_true(const char *val)
Make sure something is true. Determine if a string containing a boolean value is "true"....
struct ast_json * message
Abstract JSON element (object, array, string, int, ...).
describes a server instance
Structure for variables, used for configurations and for channel variables.
struct ast_variable * next
Handler for a single RESTful path segment.
const char * path_segment