diff --git a/res/ari/resource_channels.c b/res/ari/resource_channels.c index b00b2378d6..afb4627a07 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 b7c088c4d1..9e8eeb4e90 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 60ace075d3..4ca8d6582d 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." + } ] } ]