public async Task Post([FromBody] Model.Attributes newAttributes)
        {
            if (!isValidInput(newAttributes))
            {
                return;
            }
            if (!isValidJsonString(newAttributes.Data.ToString()))
            {
                return;
            }
            if (!await IsAuthorized(newAttributes.URN))
            {
                return;
            }

            // start the database
            Database.Attributes attributesDb = new Database.Attributes();

            // this attribute is already there?
            string existingAttributes = await attributesDb.GetAttributes(newAttributes.URN);

            if (existingAttributes != null)
            {
                // ops, already there
                base.Response.StatusCode = (int)HttpStatusCode.Conflict;
                return;
            }

            // save
            await attributesDb.SaveAttributes(newAttributes);
        }
        public async Task <JsonResult> Get(string urn)
        {
            if (!await IsAuthorized(urn))
            {
                return(new JsonResult(new { Error = "Invalid or expired access token" }));
            }

            // start the database
            Database.Attributes attributesDb = new Database.Attributes();

            // return the attributes
            string attributes = await attributesDb.GetAttributes(urn);

            var res = new { URN = urn, Data = Newtonsoft.Json.JsonConvert.DeserializeObject(attributes) };

            return(new JsonResult(res));
        }