/// <summary>
        /// This request deletes a call flow. The single parameter is the unique ID that was returned upon creation.<br/>
        /// If successful, this request will return an HTTP header of 204 No Content and an empty response. If the request failed, an error object will be returned.
        /// </summary>
        /// <param name="id">The unique ID which was returned upon creation of a call flow.</param>
        public void DeleteVoiceCallFlow(string id)
        {
            ParameterValidator.IsNotNullOrWhiteSpace(id, "id");

            var voiceCallFlows = new VoiceCallFlows(new VoiceCallFlow {
                Id = id
            });

            restClient.Delete(voiceCallFlows);
        }
        /// <summary>
        /// This request updates a call flow resource. The single parameter is the unique ID that was returned upon creation.<br/>
        /// If successful, this request will return an object with a data property, which is an array that has a single call flow object. If the request failed, an error object will be returned.
        /// </summary>
        /// <param name="id">The unique ID which was returned upon creation of a call flow.</param>
        /// <param name="voiceCallFlow"></param>
        /// <returns></returns>
        public VoiceCallFlow UpdateVoiceCallFlow(string id, VoiceCallFlow voiceCallFlow)
        {
            ParameterValidator.IsNotNullOrWhiteSpace(voiceCallFlow.Title, "title");
            ParameterValidator.IsNotNull(voiceCallFlow.Steps, "steps");

            var voiceCallFlows = new VoiceCallFlows(new VoiceCallFlow {
                Id = id, Title = voiceCallFlow.Title, Steps = voiceCallFlow.Steps, Record = voiceCallFlow.Record
            });
            var result = restClient.Update(voiceCallFlows);

            return((VoiceCallFlow)result.Object);
        }
        /// <summary>
        /// Creating a call flow
        /// </summary>
        /// <param name="request"></param>
        /// <returns>If successful, this request will return an object with a data property, which is an array that has a single call flow object. If the request failed, an error object will be returned.</returns>
        public VoiceCallFlow CreateVoiceCallFlow(VoiceCallFlow request)
        {
            ParameterValidator.IsNotNullOrWhiteSpace(request.Title, "title");
            ParameterValidator.IsNotNull(request.Steps, "steps");

            var voiceCallFlows = new VoiceCallFlows(new VoiceCallFlow {
                Title = request.Title, Steps = request.Steps, Record = request.Record
            });
            var result = restClient.Create(voiceCallFlows);

            return((VoiceCallFlow)result.Object);
        }
        /// <summary>
        /// This request retrieves a call flow resource.<para />
        /// The single parameter is the unique ID that was returned upon creation.
        /// </summary>
        /// <param name="id">The unique ID which was returned upon creation of a call flow.</param>
        /// <returns></returns>
        public VoiceCallFlow ViewVoiceCallFlow(string id)
        {
            ParameterValidator.IsNotNullOrWhiteSpace(id, "id");

            var resource = new VoiceCallFlows(new VoiceCallFlow()
            {
                Id = id
            });

            restClient.Retrieve(resource);

            return((VoiceCallFlow)resource.Object);
        }