// 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.Immutable;
import com.azure.resourcemanager.agrifood.models.DetailedInformation;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;

/** FarmBeatsExtension properties. */
@Immutable
public final class FarmBeatsExtensionProperties {
    /*
     * Target ResourceType of the farmBeatsExtension.
     */
    @JsonProperty(value = "targetResourceType", access = JsonProperty.Access.WRITE_ONLY)
    private String targetResourceType;

    /*
     * FarmBeatsExtension ID.
     */
    @JsonProperty(value = "farmBeatsExtensionId", access = JsonProperty.Access.WRITE_ONLY)
    private String farmBeatsExtensionId;

    /*
     * FarmBeatsExtension name.
     */
    @JsonProperty(value = "farmBeatsExtensionName", access = JsonProperty.Access.WRITE_ONLY)
    private String farmBeatsExtensionName;

    /*
     * FarmBeatsExtension version.
     */
    @JsonProperty(value = "farmBeatsExtensionVersion", access = JsonProperty.Access.WRITE_ONLY)
    private String farmBeatsExtensionVersion;

    /*
     * Publisher ID.
     */
    @JsonProperty(value = "publisherId", access = JsonProperty.Access.WRITE_ONLY)
    private String publisherId;

    /*
     * Textual description.
     */
    @JsonProperty(value = "description", access = JsonProperty.Access.WRITE_ONLY)
    private String description;

    /*
     * Category of the extension. e.g. weather/sensor/satellite.
     */
    @JsonProperty(value = "extensionCategory", access = JsonProperty.Access.WRITE_ONLY)
    private String extensionCategory;

    /*
     * FarmBeatsExtension auth link.
     */
    @JsonProperty(value = "extensionAuthLink", access = JsonProperty.Access.WRITE_ONLY)
    private String extensionAuthLink;

    /*
     * FarmBeatsExtension api docs link.
     */
    @JsonProperty(value = "extensionApiDocsLink", access = JsonProperty.Access.WRITE_ONLY)
    private String extensionApiDocsLink;

    /*
     * 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.
     */
    @JsonProperty(value = "detailedInformation", access = JsonProperty.Access.WRITE_ONLY)
    private List<DetailedInformation> detailedInformation;

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

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

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

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

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

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

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

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

    /**
     * Get the extensionApiDocsLink property: FarmBeatsExtension api docs link.
     *
     * @return the extensionApiDocsLink value.
     */
    public String extensionApiDocsLink() {
        return this.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.detailedInformation;
    }

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