public static async Task <OperationStatus> ProvisionInstance(this ManagementClient client, NewInstance instance, bool validate = false)
        {
            var request = new ProvisionInstance()
            {
                Type                 = instance.Type,
                DomainName           = instance.DomainName,
                FriendlyName         = instance.FriendlyName,
                InitialUserEmail     = instance.InitialUserEmail,
                Purpose              = instance.Purpose,
                SecurityGroupId      = instance.SecurityGroupId,
                BaseLanguage         = instance.BaseLanguage,
                Currency             = instance.Currency,
                ServiceVersionId     = instance.ServiceVersionId,
                Templates            = instance.Templates,
                AdditionalProperties = instance.AdditionalProperties,
                Validate             = validate
            };

            return(await client.Execute <OperationStatus>(request));
        }
        public static async Task <Region[]> GetCurrencies(this ManagementClient client)
        {
            var request = new GetCurrencies();

            return(await client.Execute <Region[]>(request));
        }
        public static async Task <Instance[]> GetInstances(this ManagementClient client)
        {
            var request = new GetInstances();

            return(await client.Execute <Instance[]>(request));
        }
        public static async Task <TenantApplicationIdentity> CreateTenantApplicationIdentity(this ManagementClient client, TenantApplicationIdentity identity)
        {
            var request = new CreateTenantApplicationIdentity()
            {
                Id               = identity.Id,
                TenantId         = identity.TenantId,
                AadApplicationId = identity.AadApplicationId,
                Enabled          = identity.Enabled,
                CreatedOn        = identity.CreatedOn,
                ModifiedOn       = identity.ModifiedOn
            };

            return(await client.Execute <TenantApplicationIdentity>(request));
        }
        public static async Task <TenantApplicationIdentity> GetTenantApplicationIdentity(this ManagementClient client, string id)
        {
            var request = new GetTenantApplicationIdentity()
            {
                Id = id
            };

            return(await client.Execute <TenantApplicationIdentity>(request));
        }
        public static async Task <TenantApplicationIdentity[]> GetTenantApplicationIdentities(this ManagementClient client)
        {
            var request = new GetTenantApplicationIdentities();

            return(await client.Execute <TenantApplicationIdentity[]>(request));
        }
        public static async Task <Template[]> GetTemplates(this ManagementClient client)
        {
            var request = new GetTemplates();

            return(await client.Execute <Template[]>(request));
        }
        public static async Task <ServiceVersion[]> GetServiceVersions(this ManagementClient client)
        {
            var request = new GetServiceVersions();

            return(await client.Execute <ServiceVersion[]>(request));
        }