All Downloads are FREE. Search and download functionalities are using the official Maven repository.

odata.msgraph.client.security.complex.DeviceEvidence Maven / Gradle / Ivy

There is a newer version: 0.2.2
Show newest version
package odata.msgraph.client.security.complex;

import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.github.davidmoten.odata.client.CollectionPage;
import com.github.davidmoten.odata.client.HttpRequestOptions;
import com.github.davidmoten.odata.client.ODataType;
import com.github.davidmoten.odata.client.UnmappedFields;
import com.github.davidmoten.odata.client.Util;
import com.github.davidmoten.odata.client.annotation.Property;
import com.github.davidmoten.odata.client.internal.ChangedFields;
import com.github.davidmoten.odata.client.internal.UnmappedFieldsImpl;

import java.lang.Integer;
import java.lang.Long;
import java.lang.Object;
import java.lang.Override;
import java.lang.String;
import java.lang.StringBuilder;
import java.time.OffsetDateTime;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Optional;

import odata.msgraph.client.security.enums.DefenderAvStatus;
import odata.msgraph.client.security.enums.DeviceHealthStatus;
import odata.msgraph.client.security.enums.DeviceRiskScore;
import odata.msgraph.client.security.enums.EvidenceRemediationStatus;
import odata.msgraph.client.security.enums.EvidenceRole;
import odata.msgraph.client.security.enums.EvidenceVerdict;
import odata.msgraph.client.security.enums.OnboardingStatus;

@JsonPropertyOrder({
    "@odata.type", 
    "azureAdDeviceId", 
    "defenderAvStatus", 
    "deviceDnsName", 
    "firstSeenDateTime", 
    "healthStatus", 
    "ipInterfaces", 
    "loggedOnUsers", 
    "mdeDeviceId", 
    "onboardingStatus", 
    "osBuild", 
    "osPlatform", 
    "rbacGroupId", 
    "rbacGroupName", 
    "riskScore", 
    "version", 
    "vmMetadata"})
@JsonInclude(Include.NON_NULL)
public class DeviceEvidence extends AlertEvidence implements ODataType {

    @JsonProperty("azureAdDeviceId")
    protected String azureAdDeviceId;

    @JsonProperty("defenderAvStatus")
    protected DefenderAvStatus defenderAvStatus;

    @JsonProperty("deviceDnsName")
    protected String deviceDnsName;

    @JsonProperty("firstSeenDateTime")
    protected OffsetDateTime firstSeenDateTime;

    @JsonProperty("healthStatus")
    protected DeviceHealthStatus healthStatus;

    @JsonProperty("ipInterfaces")
    protected List ipInterfaces;

    @JsonProperty("ipInterfaces@nextLink")
    protected String ipInterfacesNextLink;

    @JsonProperty("loggedOnUsers")
    protected List loggedOnUsers;

    @JsonProperty("loggedOnUsers@nextLink")
    protected String loggedOnUsersNextLink;

    @JsonProperty("mdeDeviceId")
    protected String mdeDeviceId;

    @JsonProperty("onboardingStatus")
    protected OnboardingStatus onboardingStatus;

    @JsonProperty("osBuild")
    protected Long osBuild;

    @JsonProperty("osPlatform")
    protected String osPlatform;

    @JsonProperty("rbacGroupId")
    protected Integer rbacGroupId;

    @JsonProperty("rbacGroupName")
    protected String rbacGroupName;

    @JsonProperty("riskScore")
    protected DeviceRiskScore riskScore;

    @JsonProperty("version")
    protected String version;

    @JsonProperty("vmMetadata")
    protected VmMetadata vmMetadata;

    protected DeviceEvidence() {
        super();
    }

    @Override
    public String odataTypeName() {
        return "microsoft.graph.security.deviceEvidence";
    }

    @Property(name="azureAdDeviceId")
    @JsonIgnore
    public Optional getAzureAdDeviceId() {
        return Optional.ofNullable(azureAdDeviceId);
    }

    public DeviceEvidence withAzureAdDeviceId(String azureAdDeviceId) {
        DeviceEvidence _x = _copy();
        _x.odataType = Util.nvl(odataType, "microsoft.graph.security.deviceEvidence");
        _x.azureAdDeviceId = azureAdDeviceId;
        return _x;
    }

    @Property(name="defenderAvStatus")
    @JsonIgnore
    public Optional getDefenderAvStatus() {
        return Optional.ofNullable(defenderAvStatus);
    }

    public DeviceEvidence withDefenderAvStatus(DefenderAvStatus defenderAvStatus) {
        DeviceEvidence _x = _copy();
        _x.odataType = Util.nvl(odataType, "microsoft.graph.security.deviceEvidence");
        _x.defenderAvStatus = defenderAvStatus;
        return _x;
    }

    @Property(name="deviceDnsName")
    @JsonIgnore
    public Optional getDeviceDnsName() {
        return Optional.ofNullable(deviceDnsName);
    }

    public DeviceEvidence withDeviceDnsName(String deviceDnsName) {
        DeviceEvidence _x = _copy();
        _x.odataType = Util.nvl(odataType, "microsoft.graph.security.deviceEvidence");
        _x.deviceDnsName = deviceDnsName;
        return _x;
    }

    @Property(name="firstSeenDateTime")
    @JsonIgnore
    public Optional getFirstSeenDateTime() {
        return Optional.ofNullable(firstSeenDateTime);
    }

    public DeviceEvidence withFirstSeenDateTime(OffsetDateTime firstSeenDateTime) {
        DeviceEvidence _x = _copy();
        _x.odataType = Util.nvl(odataType, "microsoft.graph.security.deviceEvidence");
        _x.firstSeenDateTime = firstSeenDateTime;
        return _x;
    }

    @Property(name="healthStatus")
    @JsonIgnore
    public Optional getHealthStatus() {
        return Optional.ofNullable(healthStatus);
    }

    public DeviceEvidence withHealthStatus(DeviceHealthStatus healthStatus) {
        DeviceEvidence _x = _copy();
        _x.odataType = Util.nvl(odataType, "microsoft.graph.security.deviceEvidence");
        _x.healthStatus = healthStatus;
        return _x;
    }

    @Property(name="ipInterfaces")
    @JsonIgnore
    public CollectionPage getIpInterfaces() {
        return new CollectionPage(contextPath, String.class, this.ipInterfaces, Optional.ofNullable(ipInterfacesNextLink), Collections.emptyList(), HttpRequestOptions.EMPTY);
    }

    @Property(name="ipInterfaces")
    @JsonIgnore
    public CollectionPage getIpInterfaces(HttpRequestOptions options) {
        return new CollectionPage(contextPath, String.class, this.ipInterfaces, Optional.ofNullable(ipInterfacesNextLink), Collections.emptyList(), options);
    }

    @Property(name="loggedOnUsers")
    @JsonIgnore
    public CollectionPage getLoggedOnUsers() {
        return new CollectionPage(contextPath, LoggedOnUser.class, this.loggedOnUsers, Optional.ofNullable(loggedOnUsersNextLink), Collections.emptyList(), HttpRequestOptions.EMPTY);
    }

    @Property(name="loggedOnUsers")
    @JsonIgnore
    public CollectionPage getLoggedOnUsers(HttpRequestOptions options) {
        return new CollectionPage(contextPath, LoggedOnUser.class, this.loggedOnUsers, Optional.ofNullable(loggedOnUsersNextLink), Collections.emptyList(), options);
    }

    @Property(name="mdeDeviceId")
    @JsonIgnore
    public Optional getMdeDeviceId() {
        return Optional.ofNullable(mdeDeviceId);
    }

    public DeviceEvidence withMdeDeviceId(String mdeDeviceId) {
        DeviceEvidence _x = _copy();
        _x.odataType = Util.nvl(odataType, "microsoft.graph.security.deviceEvidence");
        _x.mdeDeviceId = mdeDeviceId;
        return _x;
    }

    @Property(name="onboardingStatus")
    @JsonIgnore
    public Optional getOnboardingStatus() {
        return Optional.ofNullable(onboardingStatus);
    }

    public DeviceEvidence withOnboardingStatus(OnboardingStatus onboardingStatus) {
        DeviceEvidence _x = _copy();
        _x.odataType = Util.nvl(odataType, "microsoft.graph.security.deviceEvidence");
        _x.onboardingStatus = onboardingStatus;
        return _x;
    }

    @Property(name="osBuild")
    @JsonIgnore
    public Optional getOsBuild() {
        return Optional.ofNullable(osBuild);
    }

    public DeviceEvidence withOsBuild(Long osBuild) {
        DeviceEvidence _x = _copy();
        _x.odataType = Util.nvl(odataType, "microsoft.graph.security.deviceEvidence");
        _x.osBuild = osBuild;
        return _x;
    }

    @Property(name="osPlatform")
    @JsonIgnore
    public Optional getOsPlatform() {
        return Optional.ofNullable(osPlatform);
    }

    public DeviceEvidence withOsPlatform(String osPlatform) {
        DeviceEvidence _x = _copy();
        _x.odataType = Util.nvl(odataType, "microsoft.graph.security.deviceEvidence");
        _x.osPlatform = osPlatform;
        return _x;
    }

    @Property(name="rbacGroupId")
    @JsonIgnore
    public Optional getRbacGroupId() {
        return Optional.ofNullable(rbacGroupId);
    }

    public DeviceEvidence withRbacGroupId(Integer rbacGroupId) {
        DeviceEvidence _x = _copy();
        _x.odataType = Util.nvl(odataType, "microsoft.graph.security.deviceEvidence");
        _x.rbacGroupId = rbacGroupId;
        return _x;
    }

    @Property(name="rbacGroupName")
    @JsonIgnore
    public Optional getRbacGroupName() {
        return Optional.ofNullable(rbacGroupName);
    }

    public DeviceEvidence withRbacGroupName(String rbacGroupName) {
        DeviceEvidence _x = _copy();
        _x.odataType = Util.nvl(odataType, "microsoft.graph.security.deviceEvidence");
        _x.rbacGroupName = rbacGroupName;
        return _x;
    }

    @Property(name="riskScore")
    @JsonIgnore
    public Optional getRiskScore() {
        return Optional.ofNullable(riskScore);
    }

    public DeviceEvidence withRiskScore(DeviceRiskScore riskScore) {
        DeviceEvidence _x = _copy();
        _x.odataType = Util.nvl(odataType, "microsoft.graph.security.deviceEvidence");
        _x.riskScore = riskScore;
        return _x;
    }

    @Property(name="version")
    @JsonIgnore
    public Optional getVersion() {
        return Optional.ofNullable(version);
    }

    public DeviceEvidence withVersion(String version) {
        DeviceEvidence _x = _copy();
        _x.odataType = Util.nvl(odataType, "microsoft.graph.security.deviceEvidence");
        _x.version = version;
        return _x;
    }

    @Property(name="vmMetadata")
    @JsonIgnore
    public Optional getVmMetadata() {
        return Optional.ofNullable(vmMetadata);
    }

    public DeviceEvidence withVmMetadata(VmMetadata vmMetadata) {
        DeviceEvidence _x = _copy();
        _x.odataType = Util.nvl(odataType, "microsoft.graph.security.deviceEvidence");
        _x.vmMetadata = vmMetadata;
        return _x;
    }

    public DeviceEvidence withUnmappedField(String name, Object value) {
        DeviceEvidence _x = _copy();
        _x.setUnmappedField(name, value);
        return _x;
    }

    @JsonAnySetter
    private void setUnmappedField(String name, Object value) {
        if (unmappedFields == null) {
            unmappedFields = new UnmappedFieldsImpl();
        }
        unmappedFields.put(name, value);
    }

    @JsonAnyGetter
    private UnmappedFieldsImpl unmappedFields() {
        return unmappedFields == null ? UnmappedFieldsImpl.EMPTY : unmappedFields;
    }

    @Override
    public UnmappedFields getUnmappedFields() {
        return unmappedFields();
    }

    @Override
    public void postInject(boolean addKeysToContextPath) {
        // do nothing;
    }

    /**
     * Returns a builder which is used to create a new
     * instance of this class (given that this class is immutable).
     *
     * @return a new Builder for this class
     */
    // Suffix used on builder factory method to differentiate the method
    // from static builder methods on superclasses
    public static Builder builderDeviceEvidence() {
        return new Builder();
    }

    public static final class Builder {
        private OffsetDateTime createdDateTime;
        private List detailedRoles;
        private String detailedRolesNextLink;
        private EvidenceRemediationStatus remediationStatus;
        private String remediationStatusDetails;
        private List roles;
        private String rolesNextLink;
        private List tags;
        private String tagsNextLink;
        private EvidenceVerdict verdict;
        private String azureAdDeviceId;
        private DefenderAvStatus defenderAvStatus;
        private String deviceDnsName;
        private OffsetDateTime firstSeenDateTime;
        private DeviceHealthStatus healthStatus;
        private List ipInterfaces;
        private String ipInterfacesNextLink;
        private List loggedOnUsers;
        private String loggedOnUsersNextLink;
        private String mdeDeviceId;
        private OnboardingStatus onboardingStatus;
        private Long osBuild;
        private String osPlatform;
        private Integer rbacGroupId;
        private String rbacGroupName;
        private DeviceRiskScore riskScore;
        private String version;
        private VmMetadata vmMetadata;
        private ChangedFields changedFields = ChangedFields.EMPTY;

        Builder() {
            // prevent instantiation
        }

        public Builder createdDateTime(OffsetDateTime createdDateTime) {
            this.createdDateTime = createdDateTime;
            this.changedFields = changedFields.add("createdDateTime");
            return this;
        }

        public Builder detailedRoles(List detailedRoles) {
            this.detailedRoles = detailedRoles;
            this.changedFields = changedFields.add("detailedRoles");
            return this;
        }

        public Builder detailedRoles(String... detailedRoles) {
            return detailedRoles(Arrays.asList(detailedRoles));
        }

        public Builder detailedRolesNextLink(String detailedRolesNextLink) {
            this.detailedRolesNextLink = detailedRolesNextLink;
            this.changedFields = changedFields.add("detailedRoles");
            return this;
        }

        public Builder remediationStatus(EvidenceRemediationStatus remediationStatus) {
            this.remediationStatus = remediationStatus;
            this.changedFields = changedFields.add("remediationStatus");
            return this;
        }

        public Builder remediationStatusDetails(String remediationStatusDetails) {
            this.remediationStatusDetails = remediationStatusDetails;
            this.changedFields = changedFields.add("remediationStatusDetails");
            return this;
        }

        public Builder roles(List roles) {
            this.roles = roles;
            this.changedFields = changedFields.add("roles");
            return this;
        }

        public Builder roles(EvidenceRole... roles) {
            return roles(Arrays.asList(roles));
        }

        public Builder rolesNextLink(String rolesNextLink) {
            this.rolesNextLink = rolesNextLink;
            this.changedFields = changedFields.add("roles");
            return this;
        }

        public Builder tags(List tags) {
            this.tags = tags;
            this.changedFields = changedFields.add("tags");
            return this;
        }

        public Builder tags(String... tags) {
            return tags(Arrays.asList(tags));
        }

        public Builder tagsNextLink(String tagsNextLink) {
            this.tagsNextLink = tagsNextLink;
            this.changedFields = changedFields.add("tags");
            return this;
        }

        public Builder verdict(EvidenceVerdict verdict) {
            this.verdict = verdict;
            this.changedFields = changedFields.add("verdict");
            return this;
        }

        public Builder azureAdDeviceId(String azureAdDeviceId) {
            this.azureAdDeviceId = azureAdDeviceId;
            this.changedFields = changedFields.add("azureAdDeviceId");
            return this;
        }

        public Builder defenderAvStatus(DefenderAvStatus defenderAvStatus) {
            this.defenderAvStatus = defenderAvStatus;
            this.changedFields = changedFields.add("defenderAvStatus");
            return this;
        }

        public Builder deviceDnsName(String deviceDnsName) {
            this.deviceDnsName = deviceDnsName;
            this.changedFields = changedFields.add("deviceDnsName");
            return this;
        }

        public Builder firstSeenDateTime(OffsetDateTime firstSeenDateTime) {
            this.firstSeenDateTime = firstSeenDateTime;
            this.changedFields = changedFields.add("firstSeenDateTime");
            return this;
        }

        public Builder healthStatus(DeviceHealthStatus healthStatus) {
            this.healthStatus = healthStatus;
            this.changedFields = changedFields.add("healthStatus");
            return this;
        }

        public Builder ipInterfaces(List ipInterfaces) {
            this.ipInterfaces = ipInterfaces;
            this.changedFields = changedFields.add("ipInterfaces");
            return this;
        }

        public Builder ipInterfaces(String... ipInterfaces) {
            return ipInterfaces(Arrays.asList(ipInterfaces));
        }

        public Builder ipInterfacesNextLink(String ipInterfacesNextLink) {
            this.ipInterfacesNextLink = ipInterfacesNextLink;
            this.changedFields = changedFields.add("ipInterfaces");
            return this;
        }

        public Builder loggedOnUsers(List loggedOnUsers) {
            this.loggedOnUsers = loggedOnUsers;
            this.changedFields = changedFields.add("loggedOnUsers");
            return this;
        }

        public Builder loggedOnUsers(LoggedOnUser... loggedOnUsers) {
            return loggedOnUsers(Arrays.asList(loggedOnUsers));
        }

        public Builder loggedOnUsersNextLink(String loggedOnUsersNextLink) {
            this.loggedOnUsersNextLink = loggedOnUsersNextLink;
            this.changedFields = changedFields.add("loggedOnUsers");
            return this;
        }

        public Builder mdeDeviceId(String mdeDeviceId) {
            this.mdeDeviceId = mdeDeviceId;
            this.changedFields = changedFields.add("mdeDeviceId");
            return this;
        }

        public Builder onboardingStatus(OnboardingStatus onboardingStatus) {
            this.onboardingStatus = onboardingStatus;
            this.changedFields = changedFields.add("onboardingStatus");
            return this;
        }

        public Builder osBuild(Long osBuild) {
            this.osBuild = osBuild;
            this.changedFields = changedFields.add("osBuild");
            return this;
        }

        public Builder osPlatform(String osPlatform) {
            this.osPlatform = osPlatform;
            this.changedFields = changedFields.add("osPlatform");
            return this;
        }

        public Builder rbacGroupId(Integer rbacGroupId) {
            this.rbacGroupId = rbacGroupId;
            this.changedFields = changedFields.add("rbacGroupId");
            return this;
        }

        public Builder rbacGroupName(String rbacGroupName) {
            this.rbacGroupName = rbacGroupName;
            this.changedFields = changedFields.add("rbacGroupName");
            return this;
        }

        public Builder riskScore(DeviceRiskScore riskScore) {
            this.riskScore = riskScore;
            this.changedFields = changedFields.add("riskScore");
            return this;
        }

        public Builder version(String version) {
            this.version = version;
            this.changedFields = changedFields.add("version");
            return this;
        }

        public Builder vmMetadata(VmMetadata vmMetadata) {
            this.vmMetadata = vmMetadata;
            this.changedFields = changedFields.add("vmMetadata");
            return this;
        }

        public DeviceEvidence build() {
            DeviceEvidence _x = new DeviceEvidence();
            _x.contextPath = null;
            _x.unmappedFields = new UnmappedFieldsImpl();
            _x.odataType = "microsoft.graph.security.deviceEvidence";
            _x.createdDateTime = createdDateTime;
            _x.detailedRoles = detailedRoles;
            _x.detailedRolesNextLink = detailedRolesNextLink;
            _x.remediationStatus = remediationStatus;
            _x.remediationStatusDetails = remediationStatusDetails;
            _x.roles = roles;
            _x.rolesNextLink = rolesNextLink;
            _x.tags = tags;
            _x.tagsNextLink = tagsNextLink;
            _x.verdict = verdict;
            _x.azureAdDeviceId = azureAdDeviceId;
            _x.defenderAvStatus = defenderAvStatus;
            _x.deviceDnsName = deviceDnsName;
            _x.firstSeenDateTime = firstSeenDateTime;
            _x.healthStatus = healthStatus;
            _x.ipInterfaces = ipInterfaces;
            _x.ipInterfacesNextLink = ipInterfacesNextLink;
            _x.loggedOnUsers = loggedOnUsers;
            _x.loggedOnUsersNextLink = loggedOnUsersNextLink;
            _x.mdeDeviceId = mdeDeviceId;
            _x.onboardingStatus = onboardingStatus;
            _x.osBuild = osBuild;
            _x.osPlatform = osPlatform;
            _x.rbacGroupId = rbacGroupId;
            _x.rbacGroupName = rbacGroupName;
            _x.riskScore = riskScore;
            _x.version = version;
            _x.vmMetadata = vmMetadata;
            return _x;
        }
    }

    private DeviceEvidence _copy() {
        DeviceEvidence _x = new DeviceEvidence();
        _x.contextPath = contextPath;
        _x.unmappedFields = unmappedFields.copy();
        _x.odataType = odataType;
        _x.createdDateTime = createdDateTime;
        _x.detailedRoles = detailedRoles;
        _x.remediationStatus = remediationStatus;
        _x.remediationStatusDetails = remediationStatusDetails;
        _x.roles = roles;
        _x.tags = tags;
        _x.verdict = verdict;
        _x.azureAdDeviceId = azureAdDeviceId;
        _x.defenderAvStatus = defenderAvStatus;
        _x.deviceDnsName = deviceDnsName;
        _x.firstSeenDateTime = firstSeenDateTime;
        _x.healthStatus = healthStatus;
        _x.ipInterfaces = ipInterfaces;
        _x.loggedOnUsers = loggedOnUsers;
        _x.mdeDeviceId = mdeDeviceId;
        _x.onboardingStatus = onboardingStatus;
        _x.osBuild = osBuild;
        _x.osPlatform = osPlatform;
        _x.rbacGroupId = rbacGroupId;
        _x.rbacGroupName = rbacGroupName;
        _x.riskScore = riskScore;
        _x.version = version;
        _x.vmMetadata = vmMetadata;
        return _x;
    }

    @Override
    public String toString() {
        StringBuilder b = new StringBuilder();
        b.append("DeviceEvidence[");
        b.append("createdDateTime=");
        b.append(this.createdDateTime);
        b.append(", ");
        b.append("detailedRoles=");
        b.append(this.detailedRoles);
        b.append(", ");
        b.append("remediationStatus=");
        b.append(this.remediationStatus);
        b.append(", ");
        b.append("remediationStatusDetails=");
        b.append(this.remediationStatusDetails);
        b.append(", ");
        b.append("roles=");
        b.append(this.roles);
        b.append(", ");
        b.append("tags=");
        b.append(this.tags);
        b.append(", ");
        b.append("verdict=");
        b.append(this.verdict);
        b.append(", ");
        b.append("azureAdDeviceId=");
        b.append(this.azureAdDeviceId);
        b.append(", ");
        b.append("defenderAvStatus=");
        b.append(this.defenderAvStatus);
        b.append(", ");
        b.append("deviceDnsName=");
        b.append(this.deviceDnsName);
        b.append(", ");
        b.append("firstSeenDateTime=");
        b.append(this.firstSeenDateTime);
        b.append(", ");
        b.append("healthStatus=");
        b.append(this.healthStatus);
        b.append(", ");
        b.append("ipInterfaces=");
        b.append(this.ipInterfaces);
        b.append(", ");
        b.append("loggedOnUsers=");
        b.append(this.loggedOnUsers);
        b.append(", ");
        b.append("mdeDeviceId=");
        b.append(this.mdeDeviceId);
        b.append(", ");
        b.append("onboardingStatus=");
        b.append(this.onboardingStatus);
        b.append(", ");
        b.append("osBuild=");
        b.append(this.osBuild);
        b.append(", ");
        b.append("osPlatform=");
        b.append(this.osPlatform);
        b.append(", ");
        b.append("rbacGroupId=");
        b.append(this.rbacGroupId);
        b.append(", ");
        b.append("rbacGroupName=");
        b.append(this.rbacGroupName);
        b.append(", ");
        b.append("riskScore=");
        b.append(this.riskScore);
        b.append(", ");
        b.append("version=");
        b.append(this.version);
        b.append(", ");
        b.append("vmMetadata=");
        b.append(this.vmMetadata);
        b.append("]");
        b.append(",unmappedFields=");
        b.append(unmappedFields);
        b.append(",odataType=");
        b.append(odataType);
        return b.toString();
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy