001/*
002 * SPDX-FileCopyrightText: none
003 * SPDX-License-Identifier: CC0-1.0
004 */
005
006package gov.nist.secauto.metaschema.databind.model.annotations;
007
008import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
009import static java.lang.annotation.RetentionPolicy.RUNTIME;
010
011import java.lang.annotation.Documented;
012import java.lang.annotation.Retention;
013import java.lang.annotation.Target;
014
015import edu.umd.cs.findbugs.annotations.NonNull;
016
017/**
018 * This annotation provides an enumerated value that is used as part of an
019 * {@link AllowedValues} annotation.
020 */
021@Documented
022@Retention(RUNTIME)
023@Target(ANNOTATION_TYPE)
024public @interface AllowedValue {
025  /**
026   * The specific enumerated value.
027   *
028   * @return the value
029   */
030  @NonNull
031  String value();
032
033  /**
034   * A description, encoded as a line of Markdown.
035   *
036   * @return an encoded markdown string
037   */
038  @NonNull
039  String description();
040
041  /**
042   * The version this value was deprecated in.
043   *
044   * @return the version or an empty string if the value is not deprecated
045   */
046  @NonNull
047  String deprecatedVersion() default "";
048}