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

package com.azure.resourcemanager.agrifood.fluent.models;

import com.azure.core.annotation.Fluent;
import com.azure.core.management.ProxyResource;
import com.azure.core.management.SystemData;
import com.azure.resourcemanager.agrifood.models.DetailedInformation;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;

/** FarmBeats extension resource. */
@Fluent
public final class FarmBeatsExtensionInner extends ProxyResource {
    /*
     * FarmBeatsExtension properties.
     */
    @JsonProperty(value = "properties")
    private FarmBeatsExtensionProperties innerProperties;

    /*
     * Azure Resource Manager metadata containing createdBy and modifiedBy information.
     */
    @JsonProperty(value = "systemData", access = JsonProperty.Access.WRITE_ONLY)
    private SystemData systemData;

    /**
     * Get the innerProperties property: FarmBeatsExtension properties.
     *
     * @return the innerProperties value.
     */
    private FarmBeatsExtensionProperties innerProperties() {
        return this.innerProperties;
    }

    /**
     * Get the systemData property: Azure Resource Manager metadata containing createdBy and modifiedBy information.
     *
     * @return the systemData value.
     */
    public SystemData systemData() {
        return this.systemData;
    }

    /**
     * Get the targetResourceType property: Target ResourceType of the farmBeatsExtension.
     *
     * @return the targetResourceType value.
     */
    public String targetResourceType() {
        return this.innerProperties() == null ? null : this.innerProperties().targetResourceType();
    }

    /**
     * Get the farmBeatsExtensionId property: FarmBeatsExtension ID.
     *
     * @return the farmBeatsExtensionId value.
     */
    public String farmBeatsExtensionId() {
        return this.innerProperties() == null ? null : this.innerProperties().farmBeatsExtensionId();
    }

    /**
     * Get the farmBeatsExtensionName property: FarmBeatsExtension name.
     *
     * @return the farmBeatsExtensionName value.
     */
    public String farmBeatsExtensionName() {
        return this.innerProperties() == null ? null : this.innerProperties().farmBeatsExtensionName();
    }

    /**
     * Get the farmBeatsExtensionVersion property: FarmBeatsExtension version.
     *
     * @return the farmBeatsExtensionVersion value.
     */
    public String farmBeatsExtensionVersion() {
        return this.innerProperties() == null ? null : this.innerProperties().farmBeatsExtensionVersion();
    }

    /**
     * Get the publisherId property: Publisher ID.
     *
     * @return the publisherId value.
     */
    public String publisherId() {
        return this.innerProperties() == null ? null : this.innerProperties().publisherId();
    }

    /**
     * Get the description property: Textual description.
     *
     * @return the description value.
     */
    public String description() {
        return this.innerProperties() == null ? null : this.innerProperties().description();
    }

    /**
     * Get the extensionCategory property: Category of the extension. e.g. weather/sensor/satellite.
     *
     * @return the extensionCategory value.
     */
    public String extensionCategory() {
        return this.innerProperties() == null ? null : this.innerProperties().extensionCategory();
    }

    /**
     * Get the extensionAuthLink property: FarmBeatsExtension auth link.
     *
     * @return the extensionAuthLink value.
     */
    public String extensionAuthLink() {
        return this.innerProperties() == null ? null : this.innerProperties().extensionAuthLink();
    }

    /**
     * Get the extensionApiDocsLink property: FarmBeatsExtension api docs link.
     *
     * @return the extensionApiDocsLink value.
     */
    public String extensionApiDocsLink() {
        return this.innerProperties() == null ? null : this.innerProperties().extensionApiDocsLink();
    }

    /**
     * Get the detailedInformation property: Detailed information which shows summary of requested data. Used in
     * descriptive get extension metadata call. Information for weather category per api included are apisSupported,
     * customParameters, PlatformParameters and Units supported.
     *
     * @return the detailedInformation value.
     */
    public List<DetailedInformation> detailedInformation() {
        return this.innerProperties() == null ? null : this.innerProperties().detailedInformation();
    }

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