/// <summary>
        /// Creates termbase concept <see cref="Concept"/> with the default entry class Id
        /// </summary>
        /// <remarks>
        /// This method requires authentication.
        /// See the <a href="http://gs2017dev.sdl.com:41234/documentation/api/index#/">API documentation</a> for more information.
        /// </remarks>
        /// <exception cref="AuthorizationException">
        /// Thrown when the current user does not have permission to make the request.
        /// </exception>
        /// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
        /// <returns>Created concept <see cref="ConceptDetails"/></returns>
        public async Task <ConceptDetails> CreateConcept(TermbaseResponse termbase, ConceptRequest conceptRequest)
        {
            Ensure.ArgumentNotNull(termbase, "termbase");
            Ensure.ArgumentNotNull(conceptRequest, "conceptRequest");

            var defaultEntryClass = termbase.Termbase.EntryClasses.FirstOrDefault(d => d.IsDefault);
            var concept           = new ConceptDetails
            {
                Concept = new Concept
                {
                    EntryClass = new Entry
                    {
                        Id = defaultEntryClass.Id
                    },
                    Attributes   = conceptRequest.Attributes,
                    Languages    = conceptRequest.Languages,
                    Transactions = conceptRequest.Transactions
                }
            };

            return(await ApiConnection.Post <Models.Response.ConceptDetails>(ApiUrls.GetConcepts(termbase.Termbase.Id), concept, "application/json"));
        }
        /// <summary>
        /// Creates termbase concept <see cref="Concept"/> with custom entry class Id
        /// </summary>
        /// <remarks>
        /// <param name="entryId">Entry class id</param>
        /// <param name="conceptRequest">Concept request <see cref="ConceptRequest"/></param>
        /// <param name="termbaseId">Termbase id</param>
        /// This method requires authentication.
        /// See the <a href="http://gs2017dev.sdl.com:41234/documentation/api/index#/">API documentation</a> for more information.
        /// </remarks>
        /// <exception cref="AuthorizationException">
        /// Thrown when the current user does not have permission to make the request.
        /// </exception>
        /// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
        /// <returns>Created concept <see cref="ConceptDetails"/></returns>
        public async Task <ConceptDetails> CreateConceptWithCustomEntryClass(string entryId, string termbaseId, ConceptRequest conceptRequest)
        {
            Ensure.ArgumentNotNull(conceptRequest, "conceptRequest");
            Ensure.ArgumentNotNullOrEmptyString(entryId, "Entry class id");

            var concept = new ConceptDetails
            {
                Concept = new Concept
                {
                    EntryClass = new Entry
                    {
                        Id = entryId
                    },
                    Attributes   = conceptRequest.Attributes,
                    Languages    = conceptRequest.Languages,
                    Transactions = conceptRequest.Transactions
                }
            };

            return(await ApiConnection.Post <ConceptDetails>(ApiUrls.GetConcepts(termbaseId), concept, "application/json"));
        }