/// <summary>
        /// delete
        /// </summary>
        /// <param name="pathSid"> A 34 character string that uniquely identifies this resource. </param>
        /// <param name="xTwilioWebhookEnabled"> The X-Twilio-Webhook-Enabled HTTP request header </param>
        /// <param name="client"> Client to make requests to Twilio </param>
        /// <returns> Task that resolves to A single instance of Conversation </returns>
        public static async System.Threading.Tasks.Task <bool> DeleteAsync(string pathSid,
                                                                           ConversationResource.WebhookEnabledTypeEnum xTwilioWebhookEnabled = null,
                                                                           ITwilioRestClient client = null)
        {
            var options = new DeleteConversationOptions(pathSid)
            {
                XTwilioWebhookEnabled = xTwilioWebhookEnabled
            };

            return(await DeleteAsync(options, client));
        }
        /// <summary>
        /// delete
        /// </summary>
        /// <param name="pathSid"> A 34 character string that uniquely identifies this resource. </param>
        /// <param name="xTwilioWebhookEnabled"> The X-Twilio-Webhook-Enabled HTTP request header </param>
        /// <param name="client"> Client to make requests to Twilio </param>
        /// <returns> A single instance of Conversation </returns>
        public static bool Delete(string pathSid,
                                  ConversationResource.WebhookEnabledTypeEnum xTwilioWebhookEnabled = null,
                                  ITwilioRestClient client = null)
        {
            var options = new DeleteConversationOptions(pathSid)
            {
                XTwilioWebhookEnabled = xTwilioWebhookEnabled
            };

            return(Delete(options, client));
        }
        /// <summary>
        /// create
        /// </summary>
        /// <param name="friendlyName"> The human-readable name of this conversation. </param>
        /// <param name="dateCreated"> The date that this resource was created. </param>
        /// <param name="dateUpdated"> The date that this resource was last updated. </param>
        /// <param name="messagingServiceSid"> The unique id of the SMS Service this conversation belongs to. </param>
        /// <param name="attributes"> An optional string metadata field you can use to store any data you wish. </param>
        /// <param name="state"> Current state of this conversation. </param>
        /// <param name="timersInactive"> ISO8601 duration when conversation will be switched to `inactive` state. </param>
        /// <param name="timersClosed"> ISO8601 duration when conversation will be switched to `closed` state. </param>
        /// <param name="xTwilioWebhookEnabled"> The X-Twilio-Webhook-Enabled HTTP request header </param>
        /// <param name="client"> Client to make requests to Twilio </param>
        /// <returns> A single instance of Conversation </returns>
        public static ConversationResource Create(string friendlyName                  = null,
                                                  DateTime?dateCreated                 = null,
                                                  DateTime?dateUpdated                 = null,
                                                  string messagingServiceSid           = null,
                                                  string attributes                    = null,
                                                  ConversationResource.StateEnum state = null,
                                                  string timersInactive                = null,
                                                  string timersClosed                  = null,
                                                  ConversationResource.WebhookEnabledTypeEnum xTwilioWebhookEnabled = null,
                                                  ITwilioRestClient client = null)
        {
            var options = new CreateConversationOptions()
            {
                FriendlyName = friendlyName, DateCreated = dateCreated, DateUpdated = dateUpdated, MessagingServiceSid = messagingServiceSid, Attributes = attributes, State = state, TimersInactive = timersInactive, TimersClosed = timersClosed, XTwilioWebhookEnabled = xTwilioWebhookEnabled
            };

            return(Create(options, client));
        }
        /// <summary>
        /// update
        /// </summary>
        /// <param name="pathSid"> A 34 character string that uniquely identifies this resource. </param>
        /// <param name="friendlyName"> The human-readable name of this conversation. </param>
        /// <param name="dateCreated"> The date that this resource was created. </param>
        /// <param name="dateUpdated"> The date that this resource was last updated. </param>
        /// <param name="attributes"> An optional string metadata field you can use to store any data you wish. </param>
        /// <param name="messagingServiceSid"> The unique id of the SMS Service this conversation belongs to. </param>
        /// <param name="state"> Current state of this conversation. </param>
        /// <param name="timersInactive"> ISO8601 duration when conversation will be switched to `inactive` state. </param>
        /// <param name="timersClosed"> ISO8601 duration when conversation will be switched to `closed` state. </param>
        /// <param name="xTwilioWebhookEnabled"> The X-Twilio-Webhook-Enabled HTTP request header </param>
        /// <param name="client"> Client to make requests to Twilio </param>
        /// <returns> Task that resolves to A single instance of Conversation </returns>
        public static async System.Threading.Tasks.Task <ConversationResource> UpdateAsync(string pathSid,
                                                                                           string friendlyName                  = null,
                                                                                           DateTime?dateCreated                 = null,
                                                                                           DateTime?dateUpdated                 = null,
                                                                                           string attributes                    = null,
                                                                                           string messagingServiceSid           = null,
                                                                                           ConversationResource.StateEnum state = null,
                                                                                           string timersInactive                = null,
                                                                                           string timersClosed                  = null,
                                                                                           ConversationResource.WebhookEnabledTypeEnum xTwilioWebhookEnabled = null,
                                                                                           ITwilioRestClient client = null)
        {
            var options = new UpdateConversationOptions(pathSid)
            {
                FriendlyName = friendlyName, DateCreated = dateCreated, DateUpdated = dateUpdated, Attributes = attributes, MessagingServiceSid = messagingServiceSid, State = state, TimersInactive = timersInactive, TimersClosed = timersClosed, XTwilioWebhookEnabled = xTwilioWebhookEnabled
            };

            return(await UpdateAsync(options, client));
        }