/// <summary>
        /// Gets the meta data from the source.meta
        /// </summary>
        /// <param name="source"></param>
        /// <returns></returns>
        public static ApiMetaData GetMetaData(this JObject source)
        {
            ApiMetaData result = new ApiMetaData();
            if (source != null)
            {
                if (source["meta"] != null)
                {
                    result = source["meta"].ToObject<ApiMetaData>();
                }
            }

            return result;
        }
        internal void Populate(JToken meta, JToken data, ClientSecrets clientSecrets, Tokens apiTokens)
        {
            this.Populate(clientSecrets, apiTokens);

            //Now populate the meta
            try
            {
                this.Meta = meta.ToObject<ApiMetaData>();
            }
            catch (Exception ex)
            {
                LogEventManager.Error("Error deserializing the Meta node.", ex);
                this.Meta = new ApiMetaData();
                this.Meta.ErrorMessages.Add(new ApiErrorMessage { DeveloperMessage = ex.Message });
                this.Meta.StatusCode = HttpStatusCode.BadRequest;
            }

            if (data != null)
            {
                this.PopulateData(data);
            }
        }
 /// <summary>
 /// 
 /// </summary>
 protected RestObject()
 {
     Href = string.Empty;
     Meta = new ApiMetaData();
 }