From c9791dba1fb77dffd9b8030a5b06aa16e195e381 Mon Sep 17 00:00:00 2001
From: Matthew Jordan <mjordan@digium.com>
Date: Fri, 10 Apr 2015 14:55:54 +0000
Subject: [PATCH] res/ari: Fix model validation for ChannelHold event

When the ChannelHold event was added, the 'musicclass' parameter was
erroneously removed. This caused the ChannelHold events to be rejected as
they failed model validation. This patch updates the Swagger schema such that
it now properly reflects the event that is being created.

Hooray for tests that catch things like this.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434597 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 res/ari/ari_model_validators.c | 9 +++++++++
 res/ari/ari_model_validators.h | 1 +
 rest-api/api-docs/events.json  | 5 +++++
 3 files changed, 15 insertions(+)

diff --git a/res/ari/ari_model_validators.c b/res/ari/ari_model_validators.c
index 007d7657fd..97435d0252 100644
--- a/res/ari/ari_model_validators.c
+++ b/res/ari/ari_model_validators.c
@@ -3245,6 +3245,15 @@ int ast_ari_validate_channel_hold(struct ast_json *json)
 				res = 0;
 			}
 		} else
+		if (strcmp("musicclass", ast_json_object_iter_key(iter)) == 0) {
+			int prop_is_valid;
+			prop_is_valid = ast_ari_validate_string(
+				ast_json_object_iter_value(iter));
+			if (!prop_is_valid) {
+				ast_log(LOG_ERROR, "ARI ChannelHold field musicclass failed validation\n");
+				res = 0;
+			}
+		} else
 		{
 			ast_log(LOG_ERROR,
 				"ARI ChannelHold has undocumented field %s\n",
diff --git a/res/ari/ari_model_validators.h b/res/ari/ari_model_validators.h
index 9cb1bc32cb..1fafba3b5d 100644
--- a/res/ari/ari_model_validators.h
+++ b/res/ari/ari_model_validators.h
@@ -1434,6 +1434,7 @@ ari_validator ast_ari_validate_application_fn(void);
  * - application: string (required)
  * - timestamp: Date
  * - channel: Channel (required)
+ * - musicclass: string
  * ChannelLeftBridge
  * - type: string (required)
  * - application: string (required)
diff --git a/rest-api/api-docs/events.json b/rest-api/api-docs/events.json
index f5e61f9ad9..35c9377e50 100644
--- a/rest-api/api-docs/events.json
+++ b/rest-api/api-docs/events.json
@@ -608,6 +608,11 @@
 					"required": true,
 					"type": "Channel",
 					"description": "The channel that initiated the hold event."
+				},
+				"musicclass": {
+					"required": false,
+					"type": "string",
+					"description": "The music on hold class that the initiator requested."
 				}
 			}
 		},
-- 
GitLab