summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/ari/resource_channels.c7
-rw-r--r--res/res_ari_channels.c1
-rw-r--r--rest-api/api-docs/channels.json6
3 files changed, 13 insertions, 1 deletions
diff --git a/res/ari/resource_channels.c b/res/ari/resource_channels.c
index b00b2378d..afb4627a0 100644
--- a/res/ari/resource_channels.c
+++ b/res/ari/resource_channels.c
@@ -1828,7 +1828,12 @@ void ast_ari_channels_create(struct ast_variable *headers,
ao2_cleanup(request_cap);
if (!chan_data->chan) {
- ast_ari_response_alloc_failed(response);
+ if (ast_channel_errno() == AST_CHANNEL_ERROR_ID_EXISTS) {
+ ast_ari_response_error(response, 409, "Conflict",
+ "Channel with given unique ID already exists");
+ } else {
+ ast_ari_response_alloc_failed(response);
+ }
ast_channel_cleanup(originator);
chan_data_destroy(chan_data);
return;
diff --git a/res/res_ari_channels.c b/res/res_ari_channels.c
index b7c088c4d..9e8eeb4e9 100644
--- a/res/res_ari_channels.c
+++ b/res/res_ari_channels.c
@@ -386,6 +386,7 @@ static void ast_ari_channels_create_cb(
break;
case 500: /* Internal Server Error */
case 501: /* Not Implemented */
+ case 409: /* Channel with given unique ID already exists. */
is_valid = 1;
break;
default:
diff --git a/rest-api/api-docs/channels.json b/rest-api/api-docs/channels.json
index 60ace075d..4ca8d6582 100644
--- a/rest-api/api-docs/channels.json
+++ b/rest-api/api-docs/channels.json
@@ -217,6 +217,12 @@
"allowMultiple": false,
"dataType": "string"
}
+ ],
+ "errorResponses": [
+ {
+ "code": 409,
+ "reason": "Channel with given unique ID already exists."
+ }
]
}
]