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

package com.azure.resourcemanager.databoxedge.models;

import com.azure.resourcemanager.databoxedge.fluent.models.JobInner;
import java.time.OffsetDateTime;

/** An immutable client-side representation of Job. */
public interface Job {
    /**
     * Gets the id property: The path ID that uniquely identifies the object.
     *
     * @return the id value.
     */
    String id();

    /**
     * Gets the name property: The name of the object.
     *
     * @return the name value.
     */
    String name();

    /**
     * Gets the type property: The hierarchical type of the object.
     *
     * @return the type value.
     */
    String type();

    /**
     * Gets the status property: The current status of the job.
     *
     * @return the status value.
     */
    JobStatus status();

    /**
     * Gets the startTime property: The UTC date and time at which the job started.
     *
     * @return the startTime value.
     */
    OffsetDateTime startTime();

    /**
     * Gets the endTime property: The UTC date and time at which the job completed.
     *
     * @return the endTime value.
     */
    OffsetDateTime endTime();

    /**
     * Gets the percentComplete property: The percentage of the job that is complete.
     *
     * @return the percentComplete value.
     */
    Integer percentComplete();

    /**
     * Gets the error property: The error details.
     *
     * @return the error value.
     */
    JobErrorDetails error();

    /**
     * Gets the jobType property: The type of the job.
     *
     * @return the jobType value.
     */
    JobType jobType();

    /**
     * Gets the currentStage property: Current stage of the update operation.
     *
     * @return the currentStage value.
     */
    UpdateOperationStage currentStage();

    /**
     * Gets the downloadProgress property: The download progress.
     *
     * @return the downloadProgress value.
     */
    UpdateDownloadProgress downloadProgress();

    /**
     * Gets the installProgress property: The install progress.
     *
     * @return the installProgress value.
     */
    UpdateInstallProgress installProgress();

    /**
     * Gets the totalRefreshErrors property: Total number of errors encountered during the refresh process.
     *
     * @return the totalRefreshErrors value.
     */
    Integer totalRefreshErrors();

    /**
     * Gets the errorManifestFile property: Local share/remote container relative path to the error manifest file of the
     * refresh.
     *
     * @return the errorManifestFile value.
     */
    String errorManifestFile();

    /**
     * Gets the refreshedEntityId property: ARM ID of the entity that was refreshed.
     *
     * @return the refreshedEntityId value.
     */
    String refreshedEntityId();

    /**
     * Gets the folder property: If only subfolders need to be refreshed, then the subfolder path inside the share or
     * container. (The path is empty if there are no subfolders.).
     *
     * @return the folder value.
     */
    String folder();

    /**
     * Gets the inner com.azure.resourcemanager.databoxedge.fluent.models.JobInner object.
     *
     * @return the inner object.
     */
    JobInner innerModel();
}
