/// <summary>
        /// Updates a person asynchronously.
        /// </summary>
        /// <param name="personGroupId">The person group id.</param>
        /// <param name="personId">The person id.</param>
        /// <param name="faceIds">The face ids.</param>
        /// <param name="name">The name.</param>
        /// <param name="userData">The user data.</param>
        /// <returns>Task object.</returns>
        public async Task UpdatePersonAsync(string personGroupId, Guid personId, Guid[] faceIds, string name, string userData = null)
        {
            var requestUrl = string.Format("{0}/{1}/{2}/{3}/{4}?{5}={6}", ServiceHost, PersonGroupsQuery, personGroupId, PersonsQuery, personId, SubscriptionKeyName, this.subscriptionKey);
            var request    = WebRequest.Create(requestUrl);

            var requestBody = new CreateOrUpdataPersonRequest(name, userData, faceIds);

            await this.SendAsync <CreateOrUpdataPersonRequest, object>("PATCH", requestBody, request);
        }
        /// <summary>
        /// Creates a person asynchronously.
        /// </summary>
        /// <param name="personGroupId">The person group id.</param>
        /// <param name="faceIds">The face ids.</param>
        /// <param name="name">The name.</param>
        /// <param name="userData">The user data.</param>
        /// <returns>The CreatePersonResult entity.</returns>
        public async Task <CreatePersonResult> CreatePersonAsync(string personGroupId, Guid[] faceIds, string name, string userData = null)
        {
            var requestUrl = string.Format("{0}/{1}/{2}/{3}?{4}={5}", ServiceHost, PersonGroupsQuery, personGroupId, PersonsQuery, SubscriptionKeyName, this.subscriptionKey);
            var request    = WebRequest.Create(requestUrl);

            var requestBody = new CreateOrUpdataPersonRequest(name, userData, faceIds);

            return(await this.SendAsync <CreateOrUpdataPersonRequest, CreatePersonResult>("POST", requestBody, request));
        }