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

package com.azure.analytics.purview.sharing.models;

import java.time.OffsetDateTime;

import com.azure.core.annotation.Fluent;
import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * A tenant email registration data transfer object.
 */
@JsonFlatten
@Fluent
public class TenantEmailRegistration extends ProxyResource {
    /*
     * Activation code for the registration.
     */
    @JsonProperty(value = "properties.activationCode")
    private String activationCode;

    /*
     * Date of the activation expiration. Represented in the standard date-time format as defined by [RFC
     * 3339](https://www.rfc-editor.org/rfc/rfc3339)
     */
    @JsonProperty(value = "properties.activationExpiration", access = JsonProperty.Access.WRITE_ONLY)
    private OffsetDateTime activationExpiration;

    /*
     * The email to register.
     */
    @JsonProperty(value = "properties.email", access = JsonProperty.Access.WRITE_ONLY)
    private String email;

    /*
     * Defines the supported types for registration.
     */
    @JsonProperty(value = "properties.registrationStatus", access = JsonProperty.Access.WRITE_ONLY)
    private TenantEmailRegistrationStatus registrationStatus;

    /*
     * State of the resource
     */
    @JsonProperty(value = "properties.state", access = JsonProperty.Access.WRITE_ONLY)
    private State state;

    /*
     * The tenant id to register.
     */
    @JsonProperty(value = "properties.tenantId", access = JsonProperty.Access.WRITE_ONLY)
    private String tenantId;

    /**
     * Creates an instance of TenantEmailRegistration class.
     */
    public TenantEmailRegistration() {
    }

    /**
     * Get the activationCode property: Activation code for the registration.
     * 
     * @return the activationCode value.
     */
    public String getActivationCode() {
        return this.activationCode;
    }

    /**
     * Set the activationCode property: Activation code for the registration.
     * 
     * @param activationCode the activationCode value to set.
     * @return the TenantEmailRegistration object itself.
     */
    public TenantEmailRegistration setActivationCode(String activationCode) {
        this.activationCode = activationCode;
        return this;
    }

    /**
     * Get the activationExpiration property: Date of the activation expiration. Represented in the standard date-time
     * format as defined by [RFC 3339](https://www.rfc-editor.org/rfc/rfc3339).
     * 
     * @return the activationExpiration value.
     */
    public OffsetDateTime getActivationExpiration() {
        return this.activationExpiration;
    }

    /**
     * Get the email property: The email to register.
     * 
     * @return the email value.
     */
    public String getEmail() {
        return this.email;
    }

    /**
     * Get the registrationStatus property: Defines the supported types for registration.
     * 
     * @return the registrationStatus value.
     */
    public TenantEmailRegistrationStatus getRegistrationStatus() {
        return this.registrationStatus;
    }

    /**
     * Get the state property: State of the resource.
     * 
     * @return the state value.
     */
    public State getState() {
        return this.state;
    }

    /**
     * Get the tenantId property: The tenant id to register.
     * 
     * @return the tenantId value.
     */
    public String getTenantId() {
        return this.tenantId;
    }
}
