// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.resourcemanager.securityinsights.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;

/** Represents Codeless API Polling data connector. */
@Fluent
public final class DataConnectorConnectBody {
    /*
     * The authentication kind used to poll the data
     */
    @JsonProperty(value = "kind")
    private ConnectAuthKind kind;

    /*
     * The API key of the audit server.
     */
    @JsonProperty(value = "apiKey")
    private String apiKey;

    /*
     * Used in v2 logs connector. Represents the data collection ingestion endpoint in log analytics.
     */
    @JsonProperty(value = "dataCollectionEndpoint")
    private String dataCollectionEndpoint;

    /*
     * Used in v2 logs connector. The data collection rule immutable id, the rule defines the transformation and data
     * destination.
     */
    @JsonProperty(value = "dataCollectionRuleImmutableId")
    private String dataCollectionRuleImmutableId;

    /*
     * Used in v2 logs connector. The stream we are sending the data to, this is the name of the streamDeclarations
     * defined in the DCR.
     */
    @JsonProperty(value = "outputStream")
    private String outputStream;

    /*
     * The client secret of the OAuth 2.0 application.
     */
    @JsonProperty(value = "clientSecret")
    private String clientSecret;

    /*
     * The client id of the OAuth 2.0 application.
     */
    @JsonProperty(value = "clientId")
    private String clientId;

    /*
     * The authorization code used in OAuth 2.0 code flow to issue a token.
     */
    @JsonProperty(value = "authorizationCode")
    private String authorizationCode;

    /*
     * The user name in the audit log server.
     */
    @JsonProperty(value = "userName")
    private String username;

    /*
     * The user password in the audit log server.
     */
    @JsonProperty(value = "password")
    private String password;

    /*
     * The requestConfigUserInputValues property.
     */
    @JsonProperty(value = "requestConfigUserInputValues")
    private List<Object> requestConfigUserInputValues;

    /**
     * Get the kind property: The authentication kind used to poll the data.
     *
     * @return the kind value.
     */
    public ConnectAuthKind kind() {
        return this.kind;
    }

    /**
     * Set the kind property: The authentication kind used to poll the data.
     *
     * @param kind the kind value to set.
     * @return the DataConnectorConnectBody object itself.
     */
    public DataConnectorConnectBody withKind(ConnectAuthKind kind) {
        this.kind = kind;
        return this;
    }

    /**
     * Get the apiKey property: The API key of the audit server.
     *
     * @return the apiKey value.
     */
    public String apiKey() {
        return this.apiKey;
    }

    /**
     * Set the apiKey property: The API key of the audit server.
     *
     * @param apiKey the apiKey value to set.
     * @return the DataConnectorConnectBody object itself.
     */
    public DataConnectorConnectBody withApiKey(String apiKey) {
        this.apiKey = apiKey;
        return this;
    }

    /**
     * Get the dataCollectionEndpoint property: Used in v2 logs connector. Represents the data collection ingestion
     * endpoint in log analytics.
     *
     * @return the dataCollectionEndpoint value.
     */
    public String dataCollectionEndpoint() {
        return this.dataCollectionEndpoint;
    }

    /**
     * Set the dataCollectionEndpoint property: Used in v2 logs connector. Represents the data collection ingestion
     * endpoint in log analytics.
     *
     * @param dataCollectionEndpoint the dataCollectionEndpoint value to set.
     * @return the DataConnectorConnectBody object itself.
     */
    public DataConnectorConnectBody withDataCollectionEndpoint(String dataCollectionEndpoint) {
        this.dataCollectionEndpoint = dataCollectionEndpoint;
        return this;
    }

    /**
     * Get the dataCollectionRuleImmutableId property: Used in v2 logs connector. The data collection rule immutable id,
     * the rule defines the transformation and data destination.
     *
     * @return the dataCollectionRuleImmutableId value.
     */
    public String dataCollectionRuleImmutableId() {
        return this.dataCollectionRuleImmutableId;
    }

    /**
     * Set the dataCollectionRuleImmutableId property: Used in v2 logs connector. The data collection rule immutable id,
     * the rule defines the transformation and data destination.
     *
     * @param dataCollectionRuleImmutableId the dataCollectionRuleImmutableId value to set.
     * @return the DataConnectorConnectBody object itself.
     */
    public DataConnectorConnectBody withDataCollectionRuleImmutableId(String dataCollectionRuleImmutableId) {
        this.dataCollectionRuleImmutableId = dataCollectionRuleImmutableId;
        return this;
    }

    /**
     * Get the outputStream property: Used in v2 logs connector. The stream we are sending the data to, this is the name
     * of the streamDeclarations defined in the DCR.
     *
     * @return the outputStream value.
     */
    public String outputStream() {
        return this.outputStream;
    }

    /**
     * Set the outputStream property: Used in v2 logs connector. The stream we are sending the data to, this is the name
     * of the streamDeclarations defined in the DCR.
     *
     * @param outputStream the outputStream value to set.
     * @return the DataConnectorConnectBody object itself.
     */
    public DataConnectorConnectBody withOutputStream(String outputStream) {
        this.outputStream = outputStream;
        return this;
    }

    /**
     * Get the clientSecret property: The client secret of the OAuth 2.0 application.
     *
     * @return the clientSecret value.
     */
    public String clientSecret() {
        return this.clientSecret;
    }

    /**
     * Set the clientSecret property: The client secret of the OAuth 2.0 application.
     *
     * @param clientSecret the clientSecret value to set.
     * @return the DataConnectorConnectBody object itself.
     */
    public DataConnectorConnectBody withClientSecret(String clientSecret) {
        this.clientSecret = clientSecret;
        return this;
    }

    /**
     * Get the clientId property: The client id of the OAuth 2.0 application.
     *
     * @return the clientId value.
     */
    public String clientId() {
        return this.clientId;
    }

    /**
     * Set the clientId property: The client id of the OAuth 2.0 application.
     *
     * @param clientId the clientId value to set.
     * @return the DataConnectorConnectBody object itself.
     */
    public DataConnectorConnectBody withClientId(String clientId) {
        this.clientId = clientId;
        return this;
    }

    /**
     * Get the authorizationCode property: The authorization code used in OAuth 2.0 code flow to issue a token.
     *
     * @return the authorizationCode value.
     */
    public String authorizationCode() {
        return this.authorizationCode;
    }

    /**
     * Set the authorizationCode property: The authorization code used in OAuth 2.0 code flow to issue a token.
     *
     * @param authorizationCode the authorizationCode value to set.
     * @return the DataConnectorConnectBody object itself.
     */
    public DataConnectorConnectBody withAuthorizationCode(String authorizationCode) {
        this.authorizationCode = authorizationCode;
        return this;
    }

    /**
     * Get the username property: The user name in the audit log server.
     *
     * @return the username value.
     */
    public String username() {
        return this.username;
    }

    /**
     * Set the username property: The user name in the audit log server.
     *
     * @param username the username value to set.
     * @return the DataConnectorConnectBody object itself.
     */
    public DataConnectorConnectBody withUsername(String username) {
        this.username = username;
        return this;
    }

    /**
     * Get the password property: The user password in the audit log server.
     *
     * @return the password value.
     */
    public String password() {
        return this.password;
    }

    /**
     * Set the password property: The user password in the audit log server.
     *
     * @param password the password value to set.
     * @return the DataConnectorConnectBody object itself.
     */
    public DataConnectorConnectBody withPassword(String password) {
        this.password = password;
        return this;
    }

    /**
     * Get the requestConfigUserInputValues property: The requestConfigUserInputValues property.
     *
     * @return the requestConfigUserInputValues value.
     */
    public List<Object> requestConfigUserInputValues() {
        return this.requestConfigUserInputValues;
    }

    /**
     * Set the requestConfigUserInputValues property: The requestConfigUserInputValues property.
     *
     * @param requestConfigUserInputValues the requestConfigUserInputValues value to set.
     * @return the DataConnectorConnectBody object itself.
     */
    public DataConnectorConnectBody withRequestConfigUserInputValues(List<Object> requestConfigUserInputValues) {
        this.requestConfigUserInputValues = requestConfigUserInputValues;
        return this;
    }

    /**
     * Validates the instance.
     *
     * @throws IllegalArgumentException thrown if the instance is not valid.
     */
    public void validate() {
    }
}
