package org.jsondoc.core.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.jsondoc.core.pojo.ApiStage;
import org.jsondoc.core.pojo.ApiVisibility;
/**
* This annotation is to be used on your "service" class, for example controller classes in Spring MVC.
* @author Fabio Maffioletti
*
*/
@Documented
@Target(value=ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Api {
/**
* A description of what the API does
* @return
*/
public String description();
/**
* The name of the API
* @return
*/
public String name();
/**
* With this it is possible to specify the logical grouping of this API. For example, if you have APIs like city services or country services, you can group them
* in the "Geography" group, while if you have author services and book services you can group them in the "Library" group.
* @return
*/
public String group() default "";
/**
* Indicates the visibility of the api
* @return
*/
public ApiVisibility visibility() default ApiVisibility.UNDEFINED;
/**
* Indicates the stage of development or release
* @return
*/
public ApiStage stage() default ApiStage.UNDEFINED;
}