ProjectAres/API/api/src/main/java/tc/oc/api/docs/virtual/PunishmentDoc.java

69 lines
1.5 KiB
Java

package tc.oc.api.docs.virtual;
import tc.oc.api.annotations.Serialize;
import tc.oc.api.docs.PlayerId;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.time.Instant;
public interface PunishmentDoc {
interface Partial extends PartialModel {}
@Serialize
interface Base extends Model, Partial {
@Nullable String match_id();
@Nullable String server_id();
@Nullable Instant expire();
@Nullable String family();
@Nonnull String reason();
@Nonnull Instant date();
boolean debatable();
boolean silent();
boolean automatic();
boolean active();
}
@Serialize
interface Creation extends Base {
@Nullable String punisher_id();
@Nullable String punished_id();
@Nullable Type type();
boolean off_record();
}
@Serialize
interface Complete extends Base, Enforce, Evidence {
@Nullable PlayerId punisher();
@Nullable PlayerId punished();
@Nonnull Type type();
boolean stale();
}
@Serialize
interface Enforce extends Partial {
boolean enforced();
}
@Serialize
interface Evidence extends Partial {
@Nullable String evidence();
}
enum Type {
WARN,
KICK,
BAN,
FORUM_WARN,
FORUM_BAN,
TOURNEY_BAN,
UNKNOWN;
public String permission() {
return name().toLowerCase();
}
}
}