private async Task <DateOfBirthResponse> Retrieve(StaticVault vault, String id)
        {
            DateOfBirthResponse retrieved = await vault.DateOfBirth.Retrieve(id);

            Console.WriteLine("//// DateOfBirthExample.retrieve:");
            Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(retrieved));

            return(retrieved);
        }
        private async Task <DateOfBirthResponse> Create(StaticVault vault)
        {
            String name = "example";

            DateOfBirthResponse created = await vault.DateOfBirth.Create(name);

            Console.WriteLine("//// DateOfBirthExample.create:");
            Console.WriteLine("/// Name: " + name);
            Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(created));

            return(created);
        }
        private async Task <DateOfBirthResponse> CreateWithYearMonth(StaticVault vault)
        {
            String name  = "example";
            int    month = 1;
            int    year  = 1991;

            DateOfBirthResponse created = await vault.DateOfBirth.Create(name, year, month);

            Console.WriteLine("//// DateOfBirthExample.createWithYearMonth:");
            Console.WriteLine("/// Name: " + name);
            Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(created));

            return(created);
        }
        public async Task Run()
        {
            var sdk    = new Nullafi.NullafiSDK(Environment.GetEnvironmentVariable("API_KEY"));
            var client = await sdk.CreateClient();

            var staticVault = await client.CreateStaticVault("Date of Birth Vault Example", null);

            DateOfBirthResponse created = await Create(staticVault);

            DateOfBirthResponse retrieved = await Retrieve(staticVault, created.Id);

            await RetrieveFromRealData(staticVault, created.DateOfBirth);
            await Delete(staticVault, retrieved.Id);

            Assert.AreEqual(created.Id, retrieved.Id);
            Assert.AreEqual(created.DateOfBirth, retrieved.DateOfBirth);
            Assert.AreEqual(created.DateOfBirthAlias, retrieved.DateOfBirthAlias);

            DateOfBirthResponse createdWithYear = await CreateWithYear(staticVault);

            DateOfBirthResponse retrievedWithYear = await Retrieve(staticVault, createdWithYear.Id);

            await RetrieveFromRealData(staticVault, createdWithYear.DateOfBirth);
            await Delete(staticVault, retrievedWithYear.Id);

            Assert.AreEqual(createdWithYear.Id, retrievedWithYear.Id);
            Assert.AreEqual(createdWithYear.DateOfBirth, retrievedWithYear.DateOfBirth);
            Assert.AreEqual(createdWithYear.DateOfBirthAlias, retrievedWithYear.DateOfBirthAlias);

            DateOfBirthResponse createdWithMonth = await CreateWithMonth(staticVault);

            DateOfBirthResponse retrievedWithMonth = await Retrieve(staticVault, createdWithMonth.Id);

            await RetrieveFromRealData(staticVault, created.DateOfBirth);
            await Delete(staticVault, retrievedWithMonth.Id);

            Assert.AreEqual(createdWithMonth.Id, retrievedWithMonth.Id);
            Assert.AreEqual(createdWithMonth.DateOfBirth, retrievedWithMonth.DateOfBirth);
            Assert.AreEqual(createdWithMonth.DateOfBirthAlias, retrievedWithMonth.DateOfBirthAlias);

            DateOfBirthResponse createdWithYearMonth = await CreateWithYearMonth(staticVault);

            DateOfBirthResponse retrievedWithYearMonth = await Retrieve(staticVault, createdWithYearMonth.Id);

            await RetrieveFromRealData(staticVault, createdWithYearMonth.DateOfBirth);
            await Delete(staticVault, retrievedWithYearMonth.Id);

            await client.DeleteStaticVault(staticVault.VaultId);
        }
        public async Task Run()
        {
            /*
             * DATE OF BIRTH
             */

            // Creating a new DateOfBirth
            DateOfBirthResponse created = await Create(staticVault);

            // Retrieving a existent DateOfBirth
            DateOfBirthResponse retrieved = await Retrieve(staticVault, created.Id);

            await RetrieveFromRealData(staticVault, created.DateOfBirth);

            // Deleting a existent DateOfBirth
            await Delete(staticVault, retrieved.Id);

            /*
             * DATE OF BIRTH WITH YEAR
             */

            // Creating a new DateOfBirth
            DateOfBirthResponse createdWithYear = await CreateWithYear(staticVault);

            // Retrieving a existent DateOfBirth
            DateOfBirthResponse retrievedWithYear = await Retrieve(staticVault, createdWithYear.Id);

            await RetrieveFromRealData(staticVault, createdWithYear.DateOfBirth);

            // Deleting a existent DateOfBirth
            await Delete(staticVault, retrievedWithYear.Id);

            /*
             * DATE OF BIRTH WITH MONTH
             */

            // Creating a new DateOfBirth
            DateOfBirthResponse createdWithMonth = await CreateWithMonth(staticVault);

            // Retrieving a existent DateOfBirth
            DateOfBirthResponse retrievedWithMonth = await Retrieve(staticVault, createdWithMonth.Id);

            await RetrieveFromRealData(staticVault, created.DateOfBirth);

            // Deleting a existent DateOfBirth
            await Delete(staticVault, retrievedWithMonth.Id);

            /*
             * DATE OF BIRTH WITH YEAR AND MONTH
             */

            // Creating a new DateOfBirth
            DateOfBirthResponse createdWithYearMonth = await CreateWithYearMonth(staticVault);

            // Retrieving a existent DateOfBirth
            DateOfBirthResponse retrievedWithYearMonth = await Retrieve(staticVault, createdWithYearMonth.Id);

            await RetrieveFromRealData(staticVault, createdWithYearMonth.DateOfBirth);

            // Deleting a existent DateOfBirth
            await Delete(staticVault, retrievedWithYearMonth.Id);
        }