public IHttpActionResult GetAllTenants(string vbrHost)
        {
            logger.Info("Recevied request to get all Veeam tenants");

            String command = "Get-VBRCloudTenant";
            VeeamTransportMessage response = psAgent.runCommand(vbrHost, command);

            if (response.status.Equals("Error"))
            {
                logger.Error("Error retrieving all Veeam tenants");
                logger.Error((string)response.message);
            }

            Collection <VeeamTenant> veeamTenants = new Collection <VeeamTenant>();
            Collection <PSObject>    tenants      = (Collection <PSObject>)response.message;

            foreach (PSObject tenant in tenants)
            {
                VeeamTenant veeamTenant = new VeeamTenant();

                veeamTenant.uid      = tenant.Properties["Id"].Value.ToString();
                veeamTenant.username = tenant.Properties["Name"].Value.ToString();
                veeamTenant.password = tenant.Properties["Password"].Value.ToString();
                if (tenant.Properties["LeaseExpirationDate"].Value != null)
                {
                    veeamTenant.leaseExpiration = tenant.Properties["LeaseExpirationDate"].Value.ToString();
                }

                veeamTenants.Add(veeamTenant);
            }

            return(Ok(veeamTenants));
        }
        public HttpResponseMessage PostVeeamTenant(string vbrHost, [FromBody] dynamic newTenant)
        {
            logger.Info("Received request to create new veeam tenant");
            dynamic validate = schemaValidator.verifyJSONPayload("NewTenant", newTenant);

            // Check if VeeamTransportMessage type is returned. If so, schema filter found an
            // error with the JSON payload so return the error message back.
            if (validate is VeeamTransportMessage)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, (String)validate.message));
            }

            VeeamTenant tenant  = null;
            String      command = "";

            if (newTenant.leaseExpiration != null)
            {
                command = "Add-VBRCloudTenant -Name '" + newTenant.username + "' -Password '" + newTenant.password +
                          "' -Description 'Created from PSVeeamRestPowerShell' -EnableLeaseExpiration -LeaseExpirationDate '" + newTenant.leaseExpiration + "'";
            }
            else
            {
                command = "Add-VBRCloudTenant -Name '" + newTenant.username + "' -Password '" + newTenant.password +
                          "' -Description 'Created from PSVeeamRestPowerShell'";
            }
            VeeamTransportMessage response = psAgent.runCommand(vbrHost, command);

            if (response.status.Equals("Error"))
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, (String)response.message));
            }

            Collection <PSObject> taskOutput = (Collection <PSObject>)response.message;

            tenant          = new VeeamTenant();
            tenant.uid      = taskOutput[0].Properties["Id"].Value.ToString();
            tenant.username = taskOutput[0].Properties["Name"].Value.ToString();
            tenant.password = taskOutput[0].Properties["Password"].Value.ToString();

            if (bool.Parse(taskOutput[0].Properties["LeaseExpirationEnabled"].Value.ToString()) == true)
            {
                tenant.leaseExpiration = taskOutput[0].Properties["LeaseExpirationDate"].Value.ToString();
            }

            return(Request.CreateResponse(HttpStatusCode.Created, tenant));
        }