// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.gcp.dataloss.outputs;

import com.pulumi.core.annotations.CustomType;
import com.pulumi.gcp.dataloss.outputs.PreventionJobTriggerInspectJobActionDeidentify;
import com.pulumi.gcp.dataloss.outputs.PreventionJobTriggerInspectJobActionJobNotificationEmails;
import com.pulumi.gcp.dataloss.outputs.PreventionJobTriggerInspectJobActionPubSub;
import com.pulumi.gcp.dataloss.outputs.PreventionJobTriggerInspectJobActionPublishFindingsToCloudDataCatalog;
import com.pulumi.gcp.dataloss.outputs.PreventionJobTriggerInspectJobActionPublishSummaryToCscc;
import com.pulumi.gcp.dataloss.outputs.PreventionJobTriggerInspectJobActionPublishToStackdriver;
import com.pulumi.gcp.dataloss.outputs.PreventionJobTriggerInspectJobActionSaveFindings;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;

@CustomType
public final class PreventionJobTriggerInspectJobAction {
    /**
     * @return Create a de-identified copy of the requested table or files.
     * Structure is documented below.
     * 
     */
    private @Nullable PreventionJobTriggerInspectJobActionDeidentify deidentify;
    /**
     * @return Sends an email when the job completes. The email goes to IAM project owners and technical Essential Contacts.
     * 
     */
    private @Nullable PreventionJobTriggerInspectJobActionJobNotificationEmails jobNotificationEmails;
    /**
     * @return Publish a message into a given Pub/Sub topic when the job completes.
     * Structure is documented below.
     * 
     */
    private @Nullable PreventionJobTriggerInspectJobActionPubSub pubSub;
    /**
     * @return Publish findings of a DlpJob to Data Catalog.
     * 
     */
    private @Nullable PreventionJobTriggerInspectJobActionPublishFindingsToCloudDataCatalog publishFindingsToCloudDataCatalog;
    /**
     * @return Publish the result summary of a DlpJob to the Cloud Security Command Center.
     * 
     */
    private @Nullable PreventionJobTriggerInspectJobActionPublishSummaryToCscc publishSummaryToCscc;
    /**
     * @return Enable Stackdriver metric dlp.googleapis.com/findingCount.
     * 
     */
    private @Nullable PreventionJobTriggerInspectJobActionPublishToStackdriver publishToStackdriver;
    /**
     * @return If set, the detailed findings will be persisted to the specified OutputStorageConfig. Only a single instance of this action can be specified. Compatible with: Inspect, Risk
     * Structure is documented below.
     * 
     */
    private @Nullable PreventionJobTriggerInspectJobActionSaveFindings saveFindings;

    private PreventionJobTriggerInspectJobAction() {}
    /**
     * @return Create a de-identified copy of the requested table or files.
     * Structure is documented below.
     * 
     */
    public Optional<PreventionJobTriggerInspectJobActionDeidentify> deidentify() {
        return Optional.ofNullable(this.deidentify);
    }
    /**
     * @return Sends an email when the job completes. The email goes to IAM project owners and technical Essential Contacts.
     * 
     */
    public Optional<PreventionJobTriggerInspectJobActionJobNotificationEmails> jobNotificationEmails() {
        return Optional.ofNullable(this.jobNotificationEmails);
    }
    /**
     * @return Publish a message into a given Pub/Sub topic when the job completes.
     * Structure is documented below.
     * 
     */
    public Optional<PreventionJobTriggerInspectJobActionPubSub> pubSub() {
        return Optional.ofNullable(this.pubSub);
    }
    /**
     * @return Publish findings of a DlpJob to Data Catalog.
     * 
     */
    public Optional<PreventionJobTriggerInspectJobActionPublishFindingsToCloudDataCatalog> publishFindingsToCloudDataCatalog() {
        return Optional.ofNullable(this.publishFindingsToCloudDataCatalog);
    }
    /**
     * @return Publish the result summary of a DlpJob to the Cloud Security Command Center.
     * 
     */
    public Optional<PreventionJobTriggerInspectJobActionPublishSummaryToCscc> publishSummaryToCscc() {
        return Optional.ofNullable(this.publishSummaryToCscc);
    }
    /**
     * @return Enable Stackdriver metric dlp.googleapis.com/findingCount.
     * 
     */
    public Optional<PreventionJobTriggerInspectJobActionPublishToStackdriver> publishToStackdriver() {
        return Optional.ofNullable(this.publishToStackdriver);
    }
    /**
     * @return If set, the detailed findings will be persisted to the specified OutputStorageConfig. Only a single instance of this action can be specified. Compatible with: Inspect, Risk
     * Structure is documented below.
     * 
     */
    public Optional<PreventionJobTriggerInspectJobActionSaveFindings> saveFindings() {
        return Optional.ofNullable(this.saveFindings);
    }

    public static Builder builder() {
        return new Builder();
    }

    public static Builder builder(PreventionJobTriggerInspectJobAction defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private @Nullable PreventionJobTriggerInspectJobActionDeidentify deidentify;
        private @Nullable PreventionJobTriggerInspectJobActionJobNotificationEmails jobNotificationEmails;
        private @Nullable PreventionJobTriggerInspectJobActionPubSub pubSub;
        private @Nullable PreventionJobTriggerInspectJobActionPublishFindingsToCloudDataCatalog publishFindingsToCloudDataCatalog;
        private @Nullable PreventionJobTriggerInspectJobActionPublishSummaryToCscc publishSummaryToCscc;
        private @Nullable PreventionJobTriggerInspectJobActionPublishToStackdriver publishToStackdriver;
        private @Nullable PreventionJobTriggerInspectJobActionSaveFindings saveFindings;
        public Builder() {}
        public Builder(PreventionJobTriggerInspectJobAction defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.deidentify = defaults.deidentify;
    	      this.jobNotificationEmails = defaults.jobNotificationEmails;
    	      this.pubSub = defaults.pubSub;
    	      this.publishFindingsToCloudDataCatalog = defaults.publishFindingsToCloudDataCatalog;
    	      this.publishSummaryToCscc = defaults.publishSummaryToCscc;
    	      this.publishToStackdriver = defaults.publishToStackdriver;
    	      this.saveFindings = defaults.saveFindings;
        }

        @CustomType.Setter
        public Builder deidentify(@Nullable PreventionJobTriggerInspectJobActionDeidentify deidentify) {
            this.deidentify = deidentify;
            return this;
        }
        @CustomType.Setter
        public Builder jobNotificationEmails(@Nullable PreventionJobTriggerInspectJobActionJobNotificationEmails jobNotificationEmails) {
            this.jobNotificationEmails = jobNotificationEmails;
            return this;
        }
        @CustomType.Setter
        public Builder pubSub(@Nullable PreventionJobTriggerInspectJobActionPubSub pubSub) {
            this.pubSub = pubSub;
            return this;
        }
        @CustomType.Setter
        public Builder publishFindingsToCloudDataCatalog(@Nullable PreventionJobTriggerInspectJobActionPublishFindingsToCloudDataCatalog publishFindingsToCloudDataCatalog) {
            this.publishFindingsToCloudDataCatalog = publishFindingsToCloudDataCatalog;
            return this;
        }
        @CustomType.Setter
        public Builder publishSummaryToCscc(@Nullable PreventionJobTriggerInspectJobActionPublishSummaryToCscc publishSummaryToCscc) {
            this.publishSummaryToCscc = publishSummaryToCscc;
            return this;
        }
        @CustomType.Setter
        public Builder publishToStackdriver(@Nullable PreventionJobTriggerInspectJobActionPublishToStackdriver publishToStackdriver) {
            this.publishToStackdriver = publishToStackdriver;
            return this;
        }
        @CustomType.Setter
        public Builder saveFindings(@Nullable PreventionJobTriggerInspectJobActionSaveFindings saveFindings) {
            this.saveFindings = saveFindings;
            return this;
        }
        public PreventionJobTriggerInspectJobAction build() {
            final var o = new PreventionJobTriggerInspectJobAction();
            o.deidentify = deidentify;
            o.jobNotificationEmails = jobNotificationEmails;
            o.pubSub = pubSub;
            o.publishFindingsToCloudDataCatalog = publishFindingsToCloudDataCatalog;
            o.publishSummaryToCscc = publishSummaryToCscc;
            o.publishToStackdriver = publishToStackdriver;
            o.saveFindings = saveFindings;
            return o;
        }
    }
}
