/// <inheritdoc />
        /// <summary>
        /// Create a message template &lt;b&gt;Permissions Needed:&lt;/b&gt; MESSAGING_ADMIN
        /// </summary>
        /// <param name="messageTemplate">The new template email to be sent</param>
        public void CreateMessageTemplate(MessageTemplateResource messageTemplate)
        {
            mWebCallEvent.WebPath = "/messaging/templates";
            if (!string.IsNullOrEmpty(mWebCallEvent.WebPath))
            {
                mWebCallEvent.WebPath = mWebCallEvent.WebPath.Replace("{format}", "json");
            }

            mWebCallEvent.HeaderParams.Clear();
            mWebCallEvent.QueryParams.Clear();
            mWebCallEvent.AuthSettings.Clear();
            mWebCallEvent.PostBody = null;

            mWebCallEvent.PostBody = KnetikClient.Serialize(messageTemplate); // http body (model) parameter

            // authentication settings
            mWebCallEvent.AuthSettings.Add("oauth2_client_credentials_grant");

            // authentication settings
            mWebCallEvent.AuthSettings.Add("oauth2_password_grant");

            // make the HTTP request
            mCreateMessageTemplateStartTime = DateTime.Now;
            mWebCallEvent.Context           = mCreateMessageTemplateResponseContext;
            mWebCallEvent.RequestType       = KnetikRequestType.POST;

            KnetikLogger.LogRequest(mCreateMessageTemplateStartTime, "CreateMessageTemplate", "Sending server request...");
            KnetikGlobalEventSystem.Publish(mWebCallEvent);
        }
        private void OnUpdateMessageTemplateResponse(KnetikRestResponse response)
        {
            if (!string.IsNullOrEmpty(response.Error))
            {
                throw new KnetikException("Error calling UpdateMessageTemplate: " + response.Error);
            }

            UpdateMessageTemplateData = (MessageTemplateResource)KnetikClient.Deserialize(response.Content, typeof(MessageTemplateResource), response.Headers);
            KnetikLogger.LogResponse(mUpdateMessageTemplateStartTime, "UpdateMessageTemplate", string.Format("Response received successfully:\n{0}", UpdateMessageTemplateData));

            if (UpdateMessageTemplateComplete != null)
            {
                UpdateMessageTemplateComplete(response.ResponseCode, UpdateMessageTemplateData);
            }
        }
        /// <inheritdoc />
        /// <summary>
        /// Update an existing message template &lt;b&gt;Permissions Needed:&lt;/b&gt; ARTICLES_ADMIN
        /// </summary>
        /// <param name="id">The message_template id</param>
        /// <param name="messageTemplateResource">The message template</param>
        public void UpdateMessageTemplate(string id, MessageTemplateResource messageTemplateResource)
        {
            // verify the required parameter 'id' is set
            if (id == null)
            {
                throw new KnetikException(400, "Missing required parameter 'id' when calling UpdateMessageTemplate");
            }

            mWebCallEvent.WebPath = "/messaging/templates/{id}";
            if (!string.IsNullOrEmpty(mWebCallEvent.WebPath))
            {
                mWebCallEvent.WebPath = mWebCallEvent.WebPath.Replace("{format}", "json");
            }
            mWebCallEvent.WebPath = mWebCallEvent.WebPath.Replace("{" + "id" + "}", KnetikClient.ParameterToString(id));

            mWebCallEvent.HeaderParams.Clear();
            mWebCallEvent.QueryParams.Clear();
            mWebCallEvent.AuthSettings.Clear();
            mWebCallEvent.PostBody = null;

            mWebCallEvent.PostBody = KnetikClient.Serialize(messageTemplateResource); // http body (model) parameter

            // authentication settings
            mWebCallEvent.AuthSettings.Add("oauth2_client_credentials_grant");

            // authentication settings
            mWebCallEvent.AuthSettings.Add("oauth2_password_grant");

            // make the HTTP request
            mUpdateMessageTemplateStartTime = DateTime.Now;
            mWebCallEvent.Context           = mUpdateMessageTemplateResponseContext;
            mWebCallEvent.RequestType       = KnetikRequestType.PUT;

            KnetikLogger.LogRequest(mUpdateMessageTemplateStartTime, "UpdateMessageTemplate", "Sending server request...");
            KnetikGlobalEventSystem.Publish(mWebCallEvent);
        }