diff --git a/res/ari/resource_channels.c b/res/ari/resource_channels.c index 89c9d7f844..dfd9bc66bc 100644 --- a/res/ari/resource_channels.c +++ b/res/ari/resource_channels.c @@ -1826,7 +1826,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 522cc00c49..e707c068f5 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." + } ] } ]