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

package com.azure.resourcemanager.mediaservices.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.time.OffsetDateTime;

/** Akamai Signature Header authentication key. */
@Fluent
public final class AkamaiSignatureHeaderAuthenticationKey {
    /*
     * identifier of the key
     */
    @JsonProperty(value = "identifier")
    private String identifier;

    /*
     * authentication key
     */
    @JsonProperty(value = "base64Key")
    private String base64Key;

    /*
     * The expiration time of the authentication key.
     */
    @JsonProperty(value = "expiration")
    private OffsetDateTime expiration;

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

    /**
     * Get the identifier property: identifier of the key.
     *
     * @return the identifier value.
     */
    public String identifier() {
        return this.identifier;
    }

    /**
     * Set the identifier property: identifier of the key.
     *
     * @param identifier the identifier value to set.
     * @return the AkamaiSignatureHeaderAuthenticationKey object itself.
     */
    public AkamaiSignatureHeaderAuthenticationKey withIdentifier(String identifier) {
        this.identifier = identifier;
        return this;
    }

    /**
     * Get the base64Key property: authentication key.
     *
     * @return the base64Key value.
     */
    public String base64Key() {
        return this.base64Key;
    }

    /**
     * Set the base64Key property: authentication key.
     *
     * @param base64Key the base64Key value to set.
     * @return the AkamaiSignatureHeaderAuthenticationKey object itself.
     */
    public AkamaiSignatureHeaderAuthenticationKey withBase64Key(String base64Key) {
        this.base64Key = base64Key;
        return this;
    }

    /**
     * Get the expiration property: The expiration time of the authentication key.
     *
     * @return the expiration value.
     */
    public OffsetDateTime expiration() {
        return this.expiration;
    }

    /**
     * Set the expiration property: The expiration time of the authentication key.
     *
     * @param expiration the expiration value to set.
     * @return the AkamaiSignatureHeaderAuthenticationKey object itself.
     */
    public AkamaiSignatureHeaderAuthenticationKey withExpiration(OffsetDateTime expiration) {
        this.expiration = expiration;
        return this;
    }

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