package de.twomartens.oparlservice.entity; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonInclude; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.time.ZonedDateTime; import java.util.List; @Builder @Getter @ToString @EqualsAndHashCode @AllArgsConstructor(access = AccessLevel.PRIVATE) @NoArgsConstructor(force = true, access = AccessLevel.PRIVATE) @JsonInclude(JsonInclude.Include.NON_NULL) public class Meeting { @NonNull @Schema(required = true, description = "The unique identifier of the object") private final String id; @NonNull @Schema(required = true, description = "Namespace URL to the object type schema") private final String type; @NonNull @JsonFormat(shape = JsonFormat.Shape.STRING) @Schema(required = true, description = "Date and time of the creation of the object") private final ZonedDateTime created; @NonNull @JsonFormat(shape = JsonFormat.Shape.STRING) @Schema(required = true, description = "Date and time of the last update of the object") private final ZonedDateTime modified; @Schema(description = "URL to the license", nullable = true) private String license; @Schema(description = "Categorization of the object", nullable = true) private String keyword; @Schema(description = "URL of a website that presents the object in the browser", nullable = true) private String web; @Schema(description = "True, if the object was deleted") private final boolean deleted; @Schema(description = "name of the meeting") private final String name; @Schema(description = "current status of the meeting", allowableValues = "terminiert, eingeladen, durchgeführt", nullable = true) private final String meetingState; @Schema(description = "True if this meeting was cancelled") private final boolean cancelled; @JsonFormat(shape = JsonFormat.Shape.STRING) @Schema(description = "date and time of the begin of the meeting", nullable = true) private final ZonedDateTime start; @JsonFormat(shape = JsonFormat.Shape.STRING) @Schema(description = "date and time of the end of the meeting", nullable = true) private final ZonedDateTime end; @Schema(description = "location of the meeting", nullable = true) private final Location location; @Schema(description = "List of URLs to organizations that have this meeting", nullable = true) private final List organization; @Schema(description = "List of URLs to persons that participated in the meeting", nullable = true) private final List participant; @Schema(description = "invitation document of the meeting", nullable = true) private final File invitation; @Schema(description = "results protocol of the meeting", nullable = true) private final File resultsProtocol; @Schema(description = "verbatim protocol of the meeting", nullable = true) private final File verbatimProtocol; @Schema(description = "List of appendices to the invitation that are not part of agenda items", nullable = true) private final List auxiliaryFile; @Schema(description = "List of agenda items in this meeting. Order is relevant", nullable = true) private final List agendaItem; }