public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequestMessage req, TraceWriter log) { // KeyVault Repository Configuration string applicationId = System.Environment.GetEnvironmentVariable("applicationId"); string applicationSecret = System.Environment.GetEnvironmentVariable("applicationSecret"); string keyVaultPath = System.Environment.GetEnvironmentVariable("keyVaultPath"); string dekIdentifier = System.Environment.GetEnvironmentVariable("dataEncryptionKey"); string redisConnection = System.Environment.GetEnvironmentVariable("redisConnectionString"); // Cosmos Configuration string cosmosEndpoint = System.Environment.GetEnvironmentVariable("cosmosEndpoint"); string cosmosPrimaryKey = System.Environment.GetEnvironmentVariable("cosmosPrimaryKey"); // Request Body Parsing string requestBody = await req.Content.ReadAsStringAsync(); JObject jdata = JObject.Parse(requestBody); // Optional Kekidentifier Parameter for using a specific key encryption key. string kekIdentifier = jdata.Value <string>("kekIdentifier") ?? System.Environment.GetEnvironmentVariable("kekIdentifier"); // check jdata for all required parameters string responseContent = "Please pass: JSON { 'databaseName' : 'EncryptedData', 'collectionID': 'UserInfo', 'dataAsJSON': 'Data', 'userID': '8'}"; string[] requiredParams = { "databaseName", "collectionID", "dataToBeEncrypted", "userID" }; JToken v; foreach (string parameter in requiredParams) { bool ready = jdata.TryGetValue(parameter, out v); if (!ready) { responseContent = "Please pass: "******"dataToBeEncrypted").ToString(); var EncryptedData = await KVR.EncryptData(dataToBeEncrypted); // Push Encrypted Data to Cosmos CosmosRepository CR = new CosmosRepository(cosmosEndpoint, cosmosPrimaryKey); var Result = CR.UpsertUser(jdata.Value <string>("databaseName"), jdata.Value <string>("collectionID"), jdata.Value <string>("userID"), EncryptedData); return(Result == null ? req.CreateResponse(HttpStatusCode.BadRequest, responseContent) : req.CreateResponse(HttpStatusCode.OK, "This encrypted data was passed along your UserID: " + EncryptedData)); }