diff --git a/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/ThingActionsResource.java b/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/ThingActionsResource.java
index 0c4ac5ccc..e09887906 100644
--- a/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/ThingActionsResource.java
+++ b/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/ThingActionsResource.java
@@ -273,13 +273,16 @@ public class ThingActionsResource implements RESTResource {
return scopeAnnotation.name();
}
+ @Schema(name = "ThingAction")
private static class ThingActionDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String actionUid = "";
public @Nullable String label;
public @Nullable String description;
public @Nullable Visibility visibility;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public List inputs = new ArrayList<>();
public @Nullable List inputConfigDescriptions;
diff --git a/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/dto/EnrichedRuleDTO.java b/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/dto/EnrichedRuleDTO.java
index f0fc9460a..9afd563bc 100644
--- a/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/dto/EnrichedRuleDTO.java
+++ b/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/dto/EnrichedRuleDTO.java
@@ -15,13 +15,17 @@ package org.openhab.core.automation.rest.internal.dto;
import org.openhab.core.automation.RuleStatusInfo;
import org.openhab.core.automation.dto.RuleDTO;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize rules with dynamic data like the status.
*
* @author Kai Kreuzer - Initial contribution
*/
+@Schema(name = "EnrichedRule")
public class EnrichedRuleDTO extends RuleDTO {
public RuleStatusInfo status;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public Boolean editable;
}
diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/ActionDTO.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/ActionDTO.java
index 9d289309b..00c99a320 100644
--- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/ActionDTO.java
+++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/ActionDTO.java
@@ -14,12 +14,16 @@ package org.openhab.core.automation.dto;
import java.util.Map;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize the respective class.
*
* @author Markus Rathgeb - Initial contribution
*/
+@Schema(name = "Action")
public class ActionDTO extends ModuleDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public Map inputs;
}
diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/ConditionDTO.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/ConditionDTO.java
index a5fc88e57..68e6d5fa1 100644
--- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/ConditionDTO.java
+++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/ConditionDTO.java
@@ -14,12 +14,16 @@ package org.openhab.core.automation.dto;
import java.util.Map;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize the respective class.
*
* @author Markus Rathgeb - Initial contribution
*/
+@Schema(name = "Condition")
public class ConditionDTO extends ModuleDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public Map inputs;
}
diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/ModuleDTO.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/ModuleDTO.java
index 2ac7e833f..4983507ba 100644
--- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/ModuleDTO.java
+++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/ModuleDTO.java
@@ -14,16 +14,22 @@ package org.openhab.core.automation.dto;
import java.util.Map;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize the respective class.
*
* @author Markus Rathgeb - Initial contribution
*/
+@Schema(name = "Module")
public class ModuleDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String id;
public String label;
public String description;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public Map configuration;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String type;
}
diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/ModuleTypeDTO.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/ModuleTypeDTO.java
index 7425c6a40..1b90b5efc 100644
--- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/ModuleTypeDTO.java
+++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/ModuleTypeDTO.java
@@ -18,17 +18,24 @@ import java.util.Set;
import org.openhab.core.automation.Visibility;
import org.openhab.core.config.core.dto.ConfigDescriptionParameterDTO;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize the respective class.
*
* @author Markus Rathgeb - Initial contribution
*/
+@Schema(name = "ModuleType")
public class ModuleTypeDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String uid;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public Visibility visibility;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public Set tags;
public String label;
public String description;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public List configDescriptions;
}
diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/RuleDTO.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/RuleDTO.java
index 2e9369b2e..f552a424f 100644
--- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/RuleDTO.java
+++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/RuleDTO.java
@@ -20,23 +20,35 @@ import org.eclipse.jdt.annotation.NonNull;
import org.openhab.core.automation.Visibility;
import org.openhab.core.config.core.dto.ConfigDescriptionParameterDTO;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize rules.
*
* @author Markus Rathgeb - Initial contribution
*/
+@Schema(name = "Rule")
public class RuleDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public List<@NonNull TriggerDTO> triggers;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public List<@NonNull ConditionDTO> conditions;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public List<@NonNull ActionDTO> actions;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public Map<@NonNull String, @NonNull Object> configuration;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public List<@NonNull ConfigDescriptionParameterDTO> configDescriptions;
public String templateUID;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String templateState;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String uid;
public String name;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public Set<@NonNull String> tags;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public Visibility visibility;
public String description;
}
diff --git a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/TriggerDTO.java b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/TriggerDTO.java
index 2932ea443..7ba79c67d 100644
--- a/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/TriggerDTO.java
+++ b/bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/dto/TriggerDTO.java
@@ -12,11 +12,14 @@
*/
package org.openhab.core.automation.dto;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize the respective class.
*
* @author Markus Rathgeb - Initial contribution
*/
+@Schema(name = "Trigger")
public class TriggerDTO extends ModuleDTO {
}
diff --git a/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/ConfigDescriptionParameterGroup.java b/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/ConfigDescriptionParameterGroup.java
index d70124167..3c12487c8 100644
--- a/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/ConfigDescriptionParameterGroup.java
+++ b/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/ConfigDescriptionParameterGroup.java
@@ -29,7 +29,6 @@ import org.eclipse.jdt.annotation.Nullable;
*/
@NonNullByDefault
public class ConfigDescriptionParameterGroup {
-
private final String name;
private final @Nullable String context;
private final boolean advanced;
diff --git a/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/dto/ConfigDescriptionDTO.java b/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/dto/ConfigDescriptionDTO.java
index 27d2c93c2..17b3bebf8 100644
--- a/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/dto/ConfigDescriptionDTO.java
+++ b/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/dto/ConfigDescriptionDTO.java
@@ -16,17 +16,20 @@ import java.util.List;
import org.openhab.core.config.core.ConfigDescription;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* {@link ConfigDescriptionDTO} is a data transfer object for {@link ConfigDescription}.
*
* @author Dennis Nobel - Initial contribution
*/
+@Schema(name = "ConfigDescription")
public class ConfigDescriptionDTO {
public String uri;
-
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public List parameters;
-
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public List parameterGroups;
public ConfigDescriptionDTO() {
diff --git a/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/dto/ConfigDescriptionParameterDTO.java b/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/dto/ConfigDescriptionParameterDTO.java
index 5fd617308..0e7635823 100644
--- a/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/dto/ConfigDescriptionParameterDTO.java
+++ b/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/dto/ConfigDescriptionParameterDTO.java
@@ -19,6 +19,8 @@ import org.openhab.core.config.core.ConfigDescriptionParameter.Type;
import com.google.gson.annotations.SerializedName;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize parameter of a configuration description.
*
@@ -27,6 +29,7 @@ import com.google.gson.annotations.SerializedName;
* @author Chris Jackson - Added group, advanced, limitToOptions, multipleLimit, verify attributes
* @author Thomas Höfer - Added unit
*/
+@Schema(name = "ConfigDescriptionParameter")
public class ConfigDescriptionParameterDTO {
public String context;
@@ -34,8 +37,10 @@ public class ConfigDescriptionParameterDTO {
public String defaultValue;
public String description;
public String label;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String name;
public boolean required;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public Type type;
public BigDecimal min;
public BigDecimal max;
diff --git a/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/dto/ConfigDescriptionParameterGroupDTO.java b/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/dto/ConfigDescriptionParameterGroupDTO.java
index 5bdc06dba..f979e05e4 100644
--- a/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/dto/ConfigDescriptionParameterGroupDTO.java
+++ b/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/dto/ConfigDescriptionParameterGroupDTO.java
@@ -12,16 +12,21 @@
*/
package org.openhab.core.config.core.dto;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize options of a
* parameter group.
*
* @author Chris Jackson - Initial contribution
*/
+@Schema(name = "ConfigDescriptionParameterGroup")
public class ConfigDescriptionParameterGroupDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String name;
public String context;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public Boolean advanced;
public String label;
public String description;
diff --git a/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/dto/FilterCriteriaDTO.java b/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/dto/FilterCriteriaDTO.java
index be5e2f5fe..1ff6af1f0 100644
--- a/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/dto/FilterCriteriaDTO.java
+++ b/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/dto/FilterCriteriaDTO.java
@@ -12,12 +12,15 @@
*/
package org.openhab.core.config.core.dto;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize filter criteria of a
* parameter.
*
* @author Alex Tugarev - Initial contribution
*/
+@Schema(name = "FilterCriteria")
public class FilterCriteriaDTO {
public String value;
diff --git a/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/dto/ParameterOptionDTO.java b/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/dto/ParameterOptionDTO.java
index fd28083f2..01027e69f 100644
--- a/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/dto/ParameterOptionDTO.java
+++ b/bundles/org.openhab.core.config.core/src/main/java/org/openhab/core/config/core/dto/ParameterOptionDTO.java
@@ -12,12 +12,15 @@
*/
package org.openhab.core.config.core.dto;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize options of a
* parameter.
*
* @author Alex Tugarev - Initial contribution
*/
+@Schema(name = "ParameterOption")
public class ParameterOptionDTO {
public String label;
diff --git a/bundles/org.openhab.core.config.discovery/bnd.bnd b/bundles/org.openhab.core.config.discovery/bnd.bnd
deleted file mode 100644
index b66b82440..000000000
--- a/bundles/org.openhab.core.config.discovery/bnd.bnd
+++ /dev/null
@@ -1,4 +0,0 @@
-Bundle-SymbolicName: ${project.artifactId}
-Import-Package: \
- org.jupnp.*;resolution:=optional,\
- *
\ No newline at end of file
diff --git a/bundles/org.openhab.core.config.discovery/src/main/java/org/openhab/core/config/discovery/dto/DiscoveryResultDTO.java b/bundles/org.openhab.core.config.discovery/src/main/java/org/openhab/core/config/discovery/dto/DiscoveryResultDTO.java
index f35c08fa5..de00fd2d6 100644
--- a/bundles/org.openhab.core.config.discovery/src/main/java/org/openhab/core/config/discovery/dto/DiscoveryResultDTO.java
+++ b/bundles/org.openhab.core.config.discovery/src/main/java/org/openhab/core/config/discovery/dto/DiscoveryResultDTO.java
@@ -18,24 +18,33 @@ import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.openhab.core.config.discovery.DiscoveryResultFlag;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize discovery results.
*
* @author Dennis Nobel - Initial contribution
* @author Thomas Höfer - Added representation
*/
+@Schema(name = "DiscoveryResult")
@NonNullByDefault
public class DiscoveryResultDTO {
public @Nullable String bridgeUID;
- public @Nullable DiscoveryResultFlag flag;
- public @Nullable String label;
- public @Nullable Map properties;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
+ public DiscoveryResultFlag flag;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
+ public String label;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
+ public Map properties;
public @Nullable String representationProperty;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public @NonNullByDefault({}) String thingUID;
public @Nullable String thingTypeUID;
+ // do not remove - needed by GSON
public DiscoveryResultDTO() {
+ this("", null, null, "", DiscoveryResultFlag.NEW, Map.of(), null);
}
public DiscoveryResultDTO(String thingUID, @Nullable String bridgeUID, @Nullable String thingTypeUID, String label,
diff --git a/bundles/org.openhab.core.io.rest.audio/src/main/java/org/openhab/core/io/rest/audio/internal/AudioSinkDTO.java b/bundles/org.openhab.core.io.rest.audio/src/main/java/org/openhab/core/io/rest/audio/internal/AudioSinkDTO.java
index afe05b293..154bc82e7 100644
--- a/bundles/org.openhab.core.io.rest.audio/src/main/java/org/openhab/core/io/rest/audio/internal/AudioSinkDTO.java
+++ b/bundles/org.openhab.core.io.rest.audio/src/main/java/org/openhab/core/io/rest/audio/internal/AudioSinkDTO.java
@@ -16,13 +16,17 @@ import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.openhab.core.audio.AudioSink;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* A DTO that is used on the REST API to provide infos about {@link AudioSink} to UIs.
*
* @author Laurent Garnier - Initial contribution
*/
+@Schema(name = "AudioSink")
@NonNullByDefault
public class AudioSinkDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String id;
public @Nullable String label;
diff --git a/bundles/org.openhab.core.io.rest.audio/src/main/java/org/openhab/core/io/rest/audio/internal/AudioSourceDTO.java b/bundles/org.openhab.core.io.rest.audio/src/main/java/org/openhab/core/io/rest/audio/internal/AudioSourceDTO.java
index 86fbe50ca..1699b375f 100644
--- a/bundles/org.openhab.core.io.rest.audio/src/main/java/org/openhab/core/io/rest/audio/internal/AudioSourceDTO.java
+++ b/bundles/org.openhab.core.io.rest.audio/src/main/java/org/openhab/core/io/rest/audio/internal/AudioSourceDTO.java
@@ -16,13 +16,17 @@ import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.openhab.core.audio.AudioSource;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* A DTO that is used on the REST API to provide infos about {@link AudioSource} to UIs.
*
* @author Laurent Garnier - Initial contribution
*/
+@Schema(name = "AudioSource")
@NonNullByDefault
public class AudioSourceDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String id;
public @Nullable String label;
diff --git a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/TokenResponseDTO.java b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/TokenResponseDTO.java
index 7187a9c82..b7e261214 100644
--- a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/TokenResponseDTO.java
+++ b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/TokenResponseDTO.java
@@ -14,6 +14,8 @@ package org.openhab.core.io.rest.auth.internal;
import org.openhab.core.auth.User;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* A DTO object for a successful token endpoint response, as per RFC 6749, Section 5.1.
*
@@ -22,6 +24,7 @@ import org.openhab.core.auth.User;
*
* @author Yannick Schaus - initial contribution
*/
+@Schema(name = "TokenResponse")
public class TokenResponseDTO {
public String access_token;
public String token_type;
diff --git a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/UserApiTokenDTO.java b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/UserApiTokenDTO.java
index fcb85ae97..a2796eb1d 100644
--- a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/UserApiTokenDTO.java
+++ b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/UserApiTokenDTO.java
@@ -14,11 +14,14 @@ package org.openhab.core.io.rest.auth.internal;
import java.util.Date;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* A DTO representing a user API token, without the sensible information.
*
* @author Yannick Schaus - initial contribution
*/
+@Schema(name = "UserApiToken")
public class UserApiTokenDTO {
public String name;
public Date createdTime;
diff --git a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/UserDTO.java b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/UserDTO.java
index 674d53333..4c2abd9a7 100644
--- a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/UserDTO.java
+++ b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/UserDTO.java
@@ -16,11 +16,14 @@ import java.util.Collection;
import org.openhab.core.auth.User;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* A DTO representing a {@link User}.
*
* @author Yannick Schaus - initial contribution
*/
+@Schema(name = "User")
public class UserDTO {
public String name;
public Collection roles;
diff --git a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/UserSessionDTO.java b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/UserSessionDTO.java
index 94e6758b9..0f258fc88 100644
--- a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/UserSessionDTO.java
+++ b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/UserSessionDTO.java
@@ -14,11 +14,14 @@ package org.openhab.core.io.rest.auth.internal;
import java.util.Date;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* A DTO representing a user session, without the sensible information.
*
* @author Yannick Schaus - initial contribution
*/
+@Schema(name = "UserSession")
public class UserSessionDTO {
public String sessionId;
public Date createdTime;
diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/discovery/DiscoveryInfoDTO.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/discovery/DiscoveryInfoDTO.java
index 5284b649b..47e480668 100644
--- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/discovery/DiscoveryInfoDTO.java
+++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/discovery/DiscoveryInfoDTO.java
@@ -15,14 +15,18 @@ package org.openhab.core.io.rest.core.discovery;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize the information about binding discovery.
*
* @author Laurent Garnier - Initial contribution
*/
+@Schema(name = "DiscoveryInfo")
@NonNullByDefault
public class DiscoveryInfoDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public boolean inputSupported;
public @Nullable String inputLabel;
public @Nullable String inputDescription;
diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/fileformat/ExtendedFileFormatDTO.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/fileformat/ExtendedFileFormatDTO.java
index 50af8d84d..60fb179f7 100644
--- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/fileformat/ExtendedFileFormatDTO.java
+++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/fileformat/ExtendedFileFormatDTO.java
@@ -14,13 +14,17 @@ package org.openhab.core.io.rest.core.fileformat;
import java.util.List;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object to serialize the different components that can be contained
* in a file format (items, things, ...) including an optional list of warnings.
*
* @author Laurent Garnier - Initial contribution
*/
+@Schema(name = "ExtendedFileFormat")
public class ExtendedFileFormatDTO extends FileFormatDTO {
+ @Schema(requiredMode = Schema.RequiredMode.NOT_REQUIRED)
public List warnings;
}
diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/fileformat/FileFormatChannelLinkDTO.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/fileformat/FileFormatChannelLinkDTO.java
index 746abe6de..1f95944c2 100644
--- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/fileformat/FileFormatChannelLinkDTO.java
+++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/fileformat/FileFormatChannelLinkDTO.java
@@ -14,17 +14,25 @@ package org.openhab.core.io.rest.core.fileformat;
import java.util.Map;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object to serialize a channel link for an item contained in a file format.
*
* @author Laurent Garnier - Initial contribution
*/
+@Schema(name = "FileFormatChannelLink")
+@NonNullByDefault
public class FileFormatChannelLinkDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String channelUID;
- public Map configuration;
+ public @Nullable Map configuration;
- public FileFormatChannelLinkDTO(String channelUID, Map configuration) {
+ public FileFormatChannelLinkDTO(String channelUID, @Nullable Map configuration) {
this.channelUID = channelUID;
this.configuration = configuration;
}
diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/fileformat/FileFormatDTO.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/fileformat/FileFormatDTO.java
index 97efedffb..490e4994c 100644
--- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/fileformat/FileFormatDTO.java
+++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/fileformat/FileFormatDTO.java
@@ -16,14 +16,19 @@ import java.util.List;
import org.openhab.core.thing.dto.ThingDTO;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object to serialize the different components that can be contained
* in a file format (items, things, ...).
*
* @author Laurent Garnier - Initial contribution
*/
+@Schema(name = "FileFormat")
public class FileFormatDTO {
+ @Schema(requiredMode = Schema.RequiredMode.NOT_REQUIRED)
public List items;
+ @Schema(requiredMode = Schema.RequiredMode.NOT_REQUIRED)
public List things;
}
diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/fileformat/FileFormatItemDTO.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/fileformat/FileFormatItemDTO.java
index 4736ee3e8..c8269cb81 100644
--- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/fileformat/FileFormatItemDTO.java
+++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/fileformat/FileFormatItemDTO.java
@@ -20,11 +20,14 @@ import org.openhab.core.items.dto.GroupItemDTO;
import org.openhab.core.items.dto.ItemDTO;
import org.openhab.core.items.dto.MetadataDTO;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object to serialize an item contained in a file format.
*
* @author Laurent Garnier - Initial contribution
*/
+@Schema(name = "FileFormatItem")
public class FileFormatItemDTO extends ItemDTO {
public String groupType;
diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/item/ItemResource.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/item/ItemResource.java
index e544462ab..3acee8a18 100644
--- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/item/ItemResource.java
+++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/item/ItemResource.java
@@ -250,7 +250,8 @@ public class ItemResource implements RESTResource {
@RolesAllowed({ Role.USER, Role.ADMIN })
@Produces(MediaType.APPLICATION_JSON)
@Operation(operationId = "getItems", summary = "Get all available items.", responses = {
- @ApiResponse(responseCode = "200", description = "OK", content = @Content(array = @ArraySchema(schema = @Schema(implementation = EnrichedItemDTO.class)))) })
+ @ApiResponse(responseCode = "200", description = "OK", content = @Content(array = @ArraySchema(schema = @Schema(oneOf = {
+ EnrichedItemDTO.class, EnrichedGroupItemDTO.class })))) })
public Response getItems(final @Context UriInfo uriInfo, final @Context HttpHeaders httpHeaders,
@Context Request request,
@HeaderParam(HttpHeaders.ACCEPT_LANGUAGE) @Parameter(description = "language") @Nullable String language,
diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/tag/EnrichedSemanticTagDTO.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/tag/EnrichedSemanticTagDTO.java
index 53d8a9546..788a9632b 100644
--- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/tag/EnrichedSemanticTagDTO.java
+++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/tag/EnrichedSemanticTagDTO.java
@@ -16,12 +16,15 @@ import java.util.List;
import org.openhab.core.semantics.SemanticTag;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* A DTO representing a {@link SemanticTag}.
*
* @author Jimmy Tanagra - initial contribution
* @author Laurent Garnier - Class renamed and members uid, description and editable added
*/
+@Schema(name = "EnrichedSemanticTag")
public class EnrichedSemanticTagDTO {
public String uid;
public String name;
diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/item/EnrichedGroupItemDTO.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/item/EnrichedGroupItemDTO.java
index 65aedaf36..f46a0bf11 100644
--- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/item/EnrichedGroupItemDTO.java
+++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/item/EnrichedGroupItemDTO.java
@@ -17,11 +17,14 @@ import org.openhab.core.items.dto.GroupItemDTO;
import org.openhab.core.items.dto.ItemDTO;
import org.openhab.core.types.StateDescription;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is an enriched data transfer object that is used to serialize group items.
*
* @author Dennis Nobel - Initial contribution
*/
+@Schema(name = "EnrichedGroupItem")
public class EnrichedGroupItemDTO extends EnrichedItemDTO {
public EnrichedGroupItemDTO(ItemDTO itemDTO, EnrichedItemDTO[] members, String link, String state, String lastState,
diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/item/EnrichedItemDTO.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/item/EnrichedItemDTO.java
index 89c1c2769..8334907b5 100644
--- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/item/EnrichedItemDTO.java
+++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/item/EnrichedItemDTO.java
@@ -18,6 +18,8 @@ import org.openhab.core.items.dto.ItemDTO;
import org.openhab.core.types.CommandDescription;
import org.openhab.core.types.StateDescription;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is an enriched data transfer object that is used to serialize items with dynamic data like the state, the state
* description and the link.
@@ -27,9 +29,11 @@ import org.openhab.core.types.StateDescription;
* @author Mark Herwege - Added default unit symbol
* @author Mark Herwege - Added parent groups
*/
+@Schema(name = "EnrichedItem")
public class EnrichedItemDTO extends ItemDTO {
public String link;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String state;
public String transformedState;
public StateDescription stateDescription;
@@ -40,6 +44,7 @@ public class EnrichedItemDTO extends ItemDTO {
public String unitSymbol;
public Map metadata;
public EnrichedItemDTO[] parents = null;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public Boolean editable;
public EnrichedItemDTO(ItemDTO itemDTO, String link, String state, String lastState, Long lastStateUpdate,
diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/link/BrokenItemChannelLinkDTO.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/link/BrokenItemChannelLinkDTO.java
index f47bec65f..c8e8cae9e 100644
--- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/link/BrokenItemChannelLinkDTO.java
+++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/link/BrokenItemChannelLinkDTO.java
@@ -12,13 +12,18 @@
*/
package org.openhab.core.io.rest.core.link;
+import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.core.thing.link.ItemChannelLinkRegistry.ItemChannelLinkProblem;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* Transfer object for broken item channel links.
*
* @author Arne Seime - Initial contribution
*/
+@Schema(name = "BrokenItemChannelLink")
+@NonNullByDefault
public class BrokenItemChannelLinkDTO {
public EnrichedItemChannelLinkDTO itemChannelLink;
diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/link/EnrichedItemChannelLinkDTO.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/link/EnrichedItemChannelLinkDTO.java
index cc803a90c..c88e5da1e 100644
--- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/link/EnrichedItemChannelLinkDTO.java
+++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/link/EnrichedItemChannelLinkDTO.java
@@ -14,14 +14,19 @@ package org.openhab.core.io.rest.core.link;
import java.util.Map;
+import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.core.thing.link.dto.ItemChannelLinkDTO;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is an enriched data transfer object that is used to serialize items channel links with dynamic data like the
* editable flag.
*
* @author Christoph Weitkamp - Initial contribution
*/
+@Schema(name = "EnrichedItemChannelLink")
+@NonNullByDefault
public class EnrichedItemChannelLinkDTO extends ItemChannelLinkDTO {
public Boolean editable;
diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/service/ConfigurableServiceDTO.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/service/ConfigurableServiceDTO.java
index a1a3202f2..9b710c700 100644
--- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/service/ConfigurableServiceDTO.java
+++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/service/ConfigurableServiceDTO.java
@@ -12,21 +12,32 @@
*/
package org.openhab.core.io.rest.core.service;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* {@link ConfigurableServiceDTO} is a data transfer object for configurable services.
*
* @author Dennis Nobel - Initial contribution
* @author Stefan Triller - added multiple field
*/
+@Schema(name = "ConfigurableService")
+@NonNullByDefault
public class ConfigurableServiceDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String id;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String label;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String category;
- public String configDescriptionURI;
+ public @Nullable String configDescriptionURI;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public boolean multiple;
- public ConfigurableServiceDTO(String id, String label, String category, String configDescriptionURI,
+ public ConfigurableServiceDTO(String id, String label, String category, @Nullable String configDescriptionURI,
boolean multiple) {
this.id = id;
this.label = label;
diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/thing/EnrichedChannelDTO.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/thing/EnrichedChannelDTO.java
index 775af2532..9ebf50f65 100644
--- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/thing/EnrichedChannelDTO.java
+++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/thing/EnrichedChannelDTO.java
@@ -17,13 +17,17 @@ import java.util.Set;
import org.openhab.core.thing.dto.ChannelDTO;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize channels with dynamic data like linked items.
*
* @author Kai Kreuzer - Initial contribution
*/
+@Schema(name = "EnrichedChannel")
public class EnrichedChannelDTO extends ChannelDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public final Set linkedItems;
public EnrichedChannelDTO(ChannelDTO channelDTO, Set linkedItems) {
diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/thing/EnrichedThingDTO.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/thing/EnrichedThingDTO.java
index 3eeb7bd45..d9b0238ad 100644
--- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/thing/EnrichedThingDTO.java
+++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/thing/EnrichedThingDTO.java
@@ -14,11 +14,15 @@ package org.openhab.core.io.rest.core.thing;
import java.util.List;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
import org.openhab.core.thing.ThingStatusInfo;
import org.openhab.core.thing.dto.AbstractThingDTO;
import org.openhab.core.thing.dto.ThingDTO;
import org.openhab.core.thing.firmware.dto.FirmwareStatusDTO;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize things with dynamic data like the status.
*
@@ -28,11 +32,16 @@ import org.openhab.core.thing.firmware.dto.FirmwareStatusDTO;
* @author Wouter Born - Let (Enriched)ThingDTO extend AbstractThingDTO so both can define their own "channels" type
* @author Andrew Fiddian-Green - Added semanticEquipmentTag
*/
+@Schema(name = "EnrichedThing")
+@NonNullByDefault
public class EnrichedThingDTO extends AbstractThingDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public List channels;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public ThingStatusInfo statusInfo;
- public FirmwareStatusDTO firmwareStatus;
+ public @Nullable FirmwareStatusDTO firmwareStatus;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public boolean editable;
/**
@@ -45,7 +54,7 @@ public class EnrichedThingDTO extends AbstractThingDTO {
* @param editable true if this thing can be edited
*/
EnrichedThingDTO(ThingDTO thingDTO, List channels, ThingStatusInfo statusInfo,
- FirmwareStatusDTO firmwareStatus, boolean editable) {
+ @Nullable FirmwareStatusDTO firmwareStatus, boolean editable) {
super(thingDTO.thingTypeUID, thingDTO.UID, thingDTO.label, thingDTO.bridgeUID, thingDTO.configuration,
thingDTO.properties, thingDTO.location, thingDTO.semanticEquipmentTag);
this.channels = channels;
diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/thing/EnrichedThingDTOMapper.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/thing/EnrichedThingDTOMapper.java
index 47d9867d7..2f702ae2b 100644
--- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/thing/EnrichedThingDTOMapper.java
+++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/thing/EnrichedThingDTOMapper.java
@@ -17,6 +17,8 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
import org.openhab.core.thing.Thing;
import org.openhab.core.thing.ThingStatusInfo;
import org.openhab.core.thing.dto.ChannelDTO;
@@ -30,6 +32,7 @@ import org.openhab.core.thing.firmware.dto.FirmwareStatusDTO;
*
* @author Dennis Nobel - Initial contribution
*/
+@NonNullByDefault
public class EnrichedThingDTOMapper extends ThingDTOMapper {
/**
@@ -42,8 +45,9 @@ public class EnrichedThingDTOMapper extends ThingDTOMapper {
* @param editable true if this thing can be edited
* @return the enriched thing DTO object
*/
- public static EnrichedThingDTO map(Thing thing, ThingStatusInfo thingStatusInfo, FirmwareStatusDTO firmwareStatus,
- Map> linkedItemsMap, boolean editable) {
+ public static EnrichedThingDTO map(Thing thing, ThingStatusInfo thingStatusInfo,
+ @Nullable FirmwareStatusDTO firmwareStatus, @Nullable Map> linkedItemsMap,
+ boolean editable) {
ThingDTO thingDTO = ThingDTOMapper.map(thing);
List channels = new ArrayList<>();
diff --git a/bundles/org.openhab.core.io.rest.sitemap/src/main/java/org/openhab/core/io/rest/sitemap/internal/MappingDTO.java b/bundles/org.openhab.core.io.rest.sitemap/src/main/java/org/openhab/core/io/rest/sitemap/internal/MappingDTO.java
index fa9b05c8b..37c2e7dbb 100644
--- a/bundles/org.openhab.core.io.rest.sitemap/src/main/java/org/openhab/core/io/rest/sitemap/internal/MappingDTO.java
+++ b/bundles/org.openhab.core.io.rest.sitemap/src/main/java/org/openhab/core/io/rest/sitemap/internal/MappingDTO.java
@@ -12,6 +12,8 @@
*/
package org.openhab.core.io.rest.sitemap.internal;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize command mappings.
*
@@ -20,6 +22,7 @@ package org.openhab.core.io.rest.sitemap.internal;
* @author Laurent Garnier - Replace field position by fields row and column
* @author Laurent Garnier - New field releaseCommand
*/
+@Schema(name = "Mapping")
public class MappingDTO {
public Integer row;
diff --git a/bundles/org.openhab.core.io.rest.sitemap/src/main/java/org/openhab/core/io/rest/sitemap/internal/PageDTO.java b/bundles/org.openhab.core.io.rest.sitemap/src/main/java/org/openhab/core/io/rest/sitemap/internal/PageDTO.java
index 9aac062f5..ed312203f 100644
--- a/bundles/org.openhab.core.io.rest.sitemap/src/main/java/org/openhab/core/io/rest/sitemap/internal/PageDTO.java
+++ b/bundles/org.openhab.core.io.rest.sitemap/src/main/java/org/openhab/core/io/rest/sitemap/internal/PageDTO.java
@@ -15,11 +15,14 @@ package org.openhab.core.io.rest.sitemap.internal;
import java.util.ArrayList;
import java.util.List;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize page content.
*
* @author Kai Kreuzer - Initial contribution
*/
+@Schema(name = "Page")
public class PageDTO {
public String id;
diff --git a/bundles/org.openhab.core.io.rest.sitemap/src/main/java/org/openhab/core/io/rest/sitemap/internal/SitemapDTO.java b/bundles/org.openhab.core.io.rest.sitemap/src/main/java/org/openhab/core/io/rest/sitemap/internal/SitemapDTO.java
index 3fc9ae52a..7ff093ea0 100644
--- a/bundles/org.openhab.core.io.rest.sitemap/src/main/java/org/openhab/core/io/rest/sitemap/internal/SitemapDTO.java
+++ b/bundles/org.openhab.core.io.rest.sitemap/src/main/java/org/openhab/core/io/rest/sitemap/internal/SitemapDTO.java
@@ -12,12 +12,15 @@
*/
package org.openhab.core.io.rest.sitemap.internal;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize sitemaps.
*
* @author Kai Kreuzer - Initial contribution
* @author Chris Jackson - Initial contribution
*/
+@Schema(name = "Sitemap")
public class SitemapDTO {
public String name;
diff --git a/bundles/org.openhab.core.io.rest.sitemap/src/main/java/org/openhab/core/io/rest/sitemap/internal/WidgetDTO.java b/bundles/org.openhab.core.io.rest.sitemap/src/main/java/org/openhab/core/io/rest/sitemap/internal/WidgetDTO.java
index 629830189..a66fd8e22 100644
--- a/bundles/org.openhab.core.io.rest.sitemap/src/main/java/org/openhab/core/io/rest/sitemap/internal/WidgetDTO.java
+++ b/bundles/org.openhab.core.io.rest.sitemap/src/main/java/org/openhab/core/io/rest/sitemap/internal/WidgetDTO.java
@@ -18,6 +18,8 @@ import java.util.List;
import org.openhab.core.io.rest.core.item.EnrichedItemDTO;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize widgets.
*
@@ -30,6 +32,7 @@ import org.openhab.core.io.rest.core.item.EnrichedItemDTO;
* @author Laurent Garnier - Remove field columns
* @author Laurent Garnier - New fields row, column, command, releaseCommand and stateless for Button element
*/
+@Schema(name = "Widget")
public class WidgetDTO {
public String widgetId;
diff --git a/bundles/org.openhab.core.io.rest.transform/src/main/java/org/openhab/core/io/rest/transform/TransformationDTO.java b/bundles/org.openhab.core.io.rest.transform/src/main/java/org/openhab/core/io/rest/transform/TransformationDTO.java
index 5e4049a37..55b849249 100644
--- a/bundles/org.openhab.core.io.rest.transform/src/main/java/org/openhab/core/io/rest/transform/TransformationDTO.java
+++ b/bundles/org.openhab.core.io.rest.transform/src/main/java/org/openhab/core/io/rest/transform/TransformationDTO.java
@@ -17,11 +17,14 @@ import java.util.Map;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.core.transform.Transformation;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* The {@link TransformationDTO} wraps a {@link Transformation}
*
* @author Jan N. Klug - Initial contribution
*/
+@Schema(name = "Transformation")
@NonNullByDefault
public class TransformationDTO {
public String uid;
diff --git a/bundles/org.openhab.core.io.rest.ui/src/main/java/org/openhab/core/io/rest/ui/TileDTO.java b/bundles/org.openhab.core.io.rest.ui/src/main/java/org/openhab/core/io/rest/ui/TileDTO.java
index 77d34a487..0d83b1615 100644
--- a/bundles/org.openhab.core.io.rest.ui/src/main/java/org/openhab/core/io/rest/ui/TileDTO.java
+++ b/bundles/org.openhab.core.io.rest.ui/src/main/java/org/openhab/core/io/rest/ui/TileDTO.java
@@ -15,17 +15,23 @@ package org.openhab.core.io.rest.ui;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object for a UI tile.
*
* @author Yannick Schaus - Initial contribution
*/
+@Schema(name = "Tile")
@NonNullByDefault
public class TileDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String name;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String url;
public @Nullable String overlay;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String imageUrl;
public TileDTO(String name, String url, @Nullable String overlay, String imageUrl) {
diff --git a/bundles/org.openhab.core.io.rest.voice/src/main/java/org/openhab/core/io/rest/voice/internal/HumanLanguageInterpreterDTO.java b/bundles/org.openhab.core.io.rest.voice/src/main/java/org/openhab/core/io/rest/voice/internal/HumanLanguageInterpreterDTO.java
index f820061f1..e9fee0446 100644
--- a/bundles/org.openhab.core.io.rest.voice/src/main/java/org/openhab/core/io/rest/voice/internal/HumanLanguageInterpreterDTO.java
+++ b/bundles/org.openhab.core.io.rest.voice/src/main/java/org/openhab/core/io/rest/voice/internal/HumanLanguageInterpreterDTO.java
@@ -16,13 +16,18 @@ import java.util.Set;
import org.openhab.core.voice.text.HumanLanguageInterpreter;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* A DTO that is used on the REST API to provide infos about {@link HumanLanguageInterpreter} to UIs.
*
* @author Kai Kreuzer - Initial contribution
*/
+@Schema(name = "HumanLanguageInterpreter")
public class HumanLanguageInterpreterDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String id;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String label;
public Set locales;
}
diff --git a/bundles/org.openhab.core.io.rest.voice/src/main/java/org/openhab/core/io/rest/voice/internal/VoiceDTO.java b/bundles/org.openhab.core.io.rest.voice/src/main/java/org/openhab/core/io/rest/voice/internal/VoiceDTO.java
index daff9ab30..0e079dd95 100644
--- a/bundles/org.openhab.core.io.rest.voice/src/main/java/org/openhab/core/io/rest/voice/internal/VoiceDTO.java
+++ b/bundles/org.openhab.core.io.rest.voice/src/main/java/org/openhab/core/io/rest/voice/internal/VoiceDTO.java
@@ -14,11 +14,14 @@ package org.openhab.core.io.rest.voice.internal;
import org.openhab.core.voice.Voice;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* A DTO that is used on the REST API to provide infos about {@link Voice} to UIs.
*
* @author Laurent Garnier - Initial contribution
*/
+@Schema(name = "Voice")
public class VoiceDTO {
public String id;
public String label;
diff --git a/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/resources/beans/RootBean.java b/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/resources/beans/RootBean.java
index ba8c85724..1835f53c0 100644
--- a/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/resources/beans/RootBean.java
+++ b/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/resources/beans/RootBean.java
@@ -22,6 +22,8 @@ import org.openhab.core.i18n.TimeZoneProvider;
import org.openhab.core.i18n.UnitProvider;
import org.openhab.core.io.rest.RESTConstants;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a java bean that is used to define the root entry
* page of the REST interface.
@@ -36,6 +38,7 @@ public class RootBean {
public final String locale;
+ @Schema(allowableValues = { "SI", "US" })
public final String measurementSystem;
public final String timezone;
diff --git a/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/ItemHistoryDTO.java b/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/ItemHistoryDTO.java
index 4347bede0..a12016b7a 100644
--- a/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/ItemHistoryDTO.java
+++ b/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/ItemHistoryDTO.java
@@ -20,15 +20,17 @@ import org.openhab.core.library.types.DecimalType;
import org.openhab.core.library.types.QuantityType;
import org.openhab.core.types.State;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a java bean that is used to serialize items to JSON.
*
* @author Chris Jackson - Initial contribution
*/
+@Schema(name = "ItemHistory")
public class ItemHistoryDTO {
public String name;
- public String totalrecords;
public String datapoints;
public List data = new ArrayList<>();
diff --git a/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceCronStrategyDTO.java b/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceCronStrategyDTO.java
index 2290d4f49..dbf2b2aff 100644
--- a/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceCronStrategyDTO.java
+++ b/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceCronStrategyDTO.java
@@ -14,12 +14,15 @@ package org.openhab.core.persistence.dto;
import org.eclipse.jdt.annotation.NonNullByDefault;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* The {@link PersistenceCronStrategyDTO} is used for transferring persistence cron
* strategies
*
* @author Jan N. Klug - Initial contribution
*/
+@Schema(name = "PersistenceCronStrategy")
@NonNullByDefault
public class PersistenceCronStrategyDTO {
public String name = "";
diff --git a/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceFilterDTO.java b/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceFilterDTO.java
index 4f06c8400..0b88885a1 100644
--- a/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceFilterDTO.java
+++ b/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceFilterDTO.java
@@ -15,13 +15,17 @@ package org.openhab.core.persistence.dto;
import java.math.BigDecimal;
import java.util.List;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* The {@link org.openhab.core.persistence.dto.PersistenceFilterDTO} is used for transferring persistence filter
* configurations
*
* @author Jan N. Klug - Initial contribution
*/
+@Schema(name = "PersistenceFilter")
public class PersistenceFilterDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String name;
// threshold and time
diff --git a/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceItemConfigurationDTO.java b/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceItemConfigurationDTO.java
index f8289d408..54763b1d9 100644
--- a/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceItemConfigurationDTO.java
+++ b/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceItemConfigurationDTO.java
@@ -17,12 +17,15 @@ import java.util.List;
import org.eclipse.jdt.annotation.NonNullByDefault;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* The {@link org.openhab.core.persistence.dto.PersistenceItemConfigurationDTO} is used for transferring persistence
* item configurations
*
* @author Jan N. Klug - Initial contribution
*/
+@Schema(name = "PersistenceItemConfiguration")
@NonNullByDefault
public class PersistenceItemConfigurationDTO {
public Collection items = List.of();
diff --git a/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceServiceConfigurationDTO.java b/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceServiceConfigurationDTO.java
index f6f3776ef..d8e72efc8 100644
--- a/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceServiceConfigurationDTO.java
+++ b/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceServiceConfigurationDTO.java
@@ -19,12 +19,15 @@ import java.util.Map;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* The {@link PersistenceServiceConfigurationDTO} is used for transferring persistence service configurations
*
* @author Jan N. Klug - Initial contribution
* @author Mark Herwege - Make default strategy to be only a configuration suggestion
*/
+@Schema(name = "PersistenceServiceConfiguration")
@NonNullByDefault
public class PersistenceServiceConfigurationDTO {
public String serviceId = "";
diff --git a/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceServiceDTO.java b/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceServiceDTO.java
index d4d9e7e96..855c123d8 100644
--- a/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceServiceDTO.java
+++ b/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceServiceDTO.java
@@ -12,11 +12,14 @@
*/
package org.openhab.core.persistence.dto;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a java bean that is used to serialize services to JSON.
*
* @author Chris Jackson - Initial contribution
*/
+@Schema(name = "PersistenceService")
public class PersistenceServiceDTO {
public PersistenceServiceDTO() {
}
diff --git a/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceStrategyDTO.java b/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceStrategyDTO.java
index 642e55320..da412768d 100644
--- a/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceStrategyDTO.java
+++ b/bundles/org.openhab.core.persistence/src/main/java/org/openhab/core/persistence/dto/PersistenceStrategyDTO.java
@@ -14,11 +14,14 @@ package org.openhab.core.persistence.dto;
import org.eclipse.jdt.annotation.NonNullByDefault;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* The {@link PersistenceStrategyDTO} is used for transferring persistence strategies.
*
* @author Jan N. Klug - Initial contribution
*/
+@Schema(name = "PersistenceStrategy")
@NonNullByDefault
public class PersistenceStrategyDTO {
public String type;
diff --git a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/ThingStatusInfo.java b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/ThingStatusInfo.java
index e5cce7156..3aae8e7d5 100644
--- a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/ThingStatusInfo.java
+++ b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/ThingStatusInfo.java
@@ -17,6 +17,8 @@ import java.util.Objects;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* A {@link ThingStatusInfo} represents status information of a thing which consists of
*
@@ -31,8 +33,10 @@ import org.eclipse.jdt.annotation.Nullable;
@NonNullByDefault
public class ThingStatusInfo {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
private final ThingStatus status;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
private final ThingStatusDetail statusDetail;
private @Nullable String description;
diff --git a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/AbstractThingDTO.java b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/AbstractThingDTO.java
index 7f5e57326..9a1e0b508 100644
--- a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/AbstractThingDTO.java
+++ b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/AbstractThingDTO.java
@@ -14,6 +14,8 @@ package org.openhab.core.thing.dto;
import java.util.Map;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize things.
*
@@ -28,9 +30,13 @@ public abstract class AbstractThingDTO {
public String label;
public String bridgeUID;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public Map configuration;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public Map properties;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String UID;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String thingTypeUID;
public String location;
public String semanticEquipmentTag;
diff --git a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ChannelDTO.java b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ChannelDTO.java
index eec974a0a..d4a83ab99 100644
--- a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ChannelDTO.java
+++ b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ChannelDTO.java
@@ -22,6 +22,8 @@ import org.openhab.core.thing.ChannelUID;
import org.openhab.core.thing.type.AutoUpdatePolicy;
import org.openhab.core.thing.type.ChannelKind;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize channels.
*
@@ -29,17 +31,24 @@ import org.openhab.core.thing.type.ChannelKind;
* @author Chris Jackson - Added properties and configuration
* @author Kai Kreuzer - Added default tags
*/
+@Schema(name = "Channel")
public class ChannelDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String uid;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String id;
public String channelTypeUID;
public String itemType;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String kind;
public String label;
public String description;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public Set defaultTags;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public Map properties;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public Map configuration;
public String autoUpdatePolicy;
diff --git a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ChannelDefinitionDTO.java b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ChannelDefinitionDTO.java
index afaa30284..fba709437 100644
--- a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ChannelDefinitionDTO.java
+++ b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ChannelDefinitionDTO.java
@@ -15,31 +15,46 @@ package org.openhab.core.thing.dto;
import java.util.Map;
import java.util.Set;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
import org.openhab.core.types.StateDescription;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize channel definitions.
*
* @author Dennis Nobel - Initial contribution
* @author Chris Jackson - Added properties
*/
+@Schema(name = "ChannelDefinition")
+@NonNullByDefault
public class ChannelDefinitionDTO {
- public String description;
+ public @Nullable String description;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String id;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String label;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public Set tags;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public Map properties;
- public String category;
- public StateDescription stateDescription;
+ public @Nullable String category;
+ public @Nullable StateDescription stateDescription;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public boolean advanced;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String typeUID;
+ // do not remove - needed by GSON
public ChannelDefinitionDTO() {
+ this("", "", "", null, Set.of(), null, null, false, Map.of());
}
- public ChannelDefinitionDTO(String id, String typeUID, String label, String description, Set tags,
- String category, StateDescription stateDescription, boolean advanced, Map properties) {
+ public ChannelDefinitionDTO(String id, String typeUID, String label, @Nullable String description, Set tags,
+ @Nullable String category, @Nullable StateDescription stateDescription, boolean advanced,
+ Map properties) {
this.description = description;
this.label = label;
this.id = id;
diff --git a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ChannelGroupDefinitionDTO.java b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ChannelGroupDefinitionDTO.java
index b3a0c5c80..a31905900 100644
--- a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ChannelGroupDefinitionDTO.java
+++ b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ChannelGroupDefinitionDTO.java
@@ -14,22 +14,34 @@ package org.openhab.core.thing.dto;
import java.util.List;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize channel group definitions.
*
* @author Dennis Nobel - Initial contribution
*/
+@Schema(name = "ChannelGroupDefinition")
+@NonNullByDefault
public class ChannelGroupDefinitionDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String id;
- public String description;
- public String label;
+ public @Nullable String description;
+ public @Nullable String label;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public List channels;
+ // do not remove - needed by GSON
public ChannelGroupDefinitionDTO() {
+ this("", null, null, List.of());
}
- public ChannelGroupDefinitionDTO(String id, String label, String description, List channels) {
+ public ChannelGroupDefinitionDTO(String id, @Nullable String label, @Nullable String description,
+ List channels) {
this.id = id;
this.label = label;
this.description = description;
diff --git a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ChannelTypeDTO.java b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ChannelTypeDTO.java
index aee107bac..0ad40da8f 100644
--- a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ChannelTypeDTO.java
+++ b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ChannelTypeDTO.java
@@ -15,41 +15,57 @@ package org.openhab.core.thing.dto;
import java.util.List;
import java.util.Set;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
import org.openhab.core.config.core.dto.ConfigDescriptionParameterDTO;
import org.openhab.core.config.core.dto.ConfigDescriptionParameterGroupDTO;
import org.openhab.core.thing.type.ChannelKind;
import org.openhab.core.types.CommandDescription;
import org.openhab.core.types.StateDescription;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used with to serialize channel types.
*
* @author Chris Jackson - Initial contribution
* @author Mark Herwege - added unit hint
*/
+@Schema(name = "ChannelType")
+@NonNullByDefault
public class ChannelTypeDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public List parameters;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public List parameterGroups;
- public String description;
+ public @Nullable String description;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String label;
- public String category;
- public String itemType;
- public String unitHint;
+ public @Nullable String category;
+ public @Nullable String itemType;
+ public @Nullable String unitHint;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED, allowableValues = { "STATE", "TRIGGER" })
public String kind;
- public StateDescription stateDescription;
+ public @Nullable StateDescription stateDescription;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public Set tags;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String UID;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public boolean advanced;
- public CommandDescription commandDescription;
+ public @Nullable CommandDescription commandDescription;
+ // do not remove - needed by GSON
public ChannelTypeDTO() {
+ this("", "", null, null, null, null, ChannelKind.STATE, List.of(), List.of(), null, Set.of(), false, null);
}
- public ChannelTypeDTO(String uid, String label, String description, String category, String itemType,
- String unitHint, ChannelKind kind, List parameters,
- List parameterGroups, StateDescription stateDescription,
- Set tags, boolean advanced, CommandDescription commandDescription) {
+ public ChannelTypeDTO(String uid, String label, @Nullable String description, @Nullable String category,
+ @Nullable String itemType, @Nullable String unitHint, ChannelKind kind,
+ List parameters, List parameterGroups,
+ @Nullable StateDescription stateDescription, Set tags, boolean advanced,
+ @Nullable CommandDescription commandDescription) {
this.UID = uid;
this.label = label;
this.description = description;
diff --git a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/StrippedThingTypeDTO.java b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/StrippedThingTypeDTO.java
index da707e0ef..20086b6ca 100644
--- a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/StrippedThingTypeDTO.java
+++ b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/StrippedThingTypeDTO.java
@@ -14,6 +14,11 @@ package org.openhab.core.thing.dto;
import java.util.List;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize stripped thing types.
* Stripped thing types exclude the parameters, configDescription and channels
@@ -21,22 +26,32 @@ import java.util.List;
* @author Miki Jankov - Initial contribution
* @author Andrew Fiddian-Green - Added semanticEquipmentTag
*/
+@Schema(name = "StrippedThingType")
+@NonNullByDefault
public class StrippedThingTypeDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String UID;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String label;
- public String description;
- public String category;
+ public @Nullable String description;
+ public @Nullable String category;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public boolean listed;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public List supportedBridgeTypeUIDs;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public boolean bridge;
- public String semanticEquipmentTag;
+ public @Nullable String semanticEquipmentTag;
+ // do not remove - needed by GSON
public StrippedThingTypeDTO() {
+ this("", "", null, null, true, List.of(), false, null);
}
- public StrippedThingTypeDTO(String uid, String label, String description, String category, boolean listed,
- List supportedBridgeTypeUIDs, boolean bridge, String semanticEquipmentTag) {
+ public StrippedThingTypeDTO(String uid, String label, @Nullable String description, @Nullable String category,
+ boolean listed, List supportedBridgeTypeUIDs, boolean bridge,
+ @Nullable String semanticEquipmentTag) {
this.UID = uid;
this.label = label;
this.description = description;
diff --git a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ThingDTO.java b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ThingDTO.java
index c9b4b70f2..b954b46fa 100644
--- a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ThingDTO.java
+++ b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ThingDTO.java
@@ -15,6 +15,8 @@ package org.openhab.core.thing.dto;
import java.util.List;
import java.util.Map;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize things.
*
@@ -25,8 +27,10 @@ import java.util.Map;
* @author Wouter Born - Let (Enriched)ThingDTO extend AbstractThingDTO so both can define their own "channels" type
* @author Andrew Fiddian-Green - Added semanticEquipmentTag
*/
+@Schema(name = "Thing")
public class ThingDTO extends AbstractThingDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public List channels;
public ThingDTO() {
diff --git a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ThingTypeDTO.java b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ThingTypeDTO.java
index c3adcffb5..c4406d808 100644
--- a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ThingTypeDTO.java
+++ b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/dto/ThingTypeDTO.java
@@ -15,9 +15,13 @@ package org.openhab.core.thing.dto;
import java.util.List;
import java.util.Map;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
import org.openhab.core.config.core.dto.ConfigDescriptionParameterDTO;
import org.openhab.core.config.core.dto.ConfigDescriptionParameterGroupDTO;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used with to serialize thing types.
*
@@ -27,6 +31,8 @@ import org.openhab.core.config.core.dto.ConfigDescriptionParameterGroupDTO;
* @author Miki Jankov - Introducing StrippedThingTypeDTO
* @author Andrew Fiddian-Green - Added semanticEquipmentTag
*/
+@Schema(name = "ThingType")
+@NonNullByDefault
public class ThingTypeDTO extends StrippedThingTypeDTO {
public List channels;
@@ -36,14 +42,17 @@ public class ThingTypeDTO extends StrippedThingTypeDTO {
public Map properties;
public List extensibleChannelTypeIds;
+ // do not remove - needed by GSON
public ThingTypeDTO() {
+ this("", "", null, null, true, List.of(), List.of(), List.of(), List.of(), Map.of(), false, List.of(),
+ List.of(), null);
}
- public ThingTypeDTO(String uid, String label, String description, String category, boolean listed,
- List configParameters, List channels,
+ public ThingTypeDTO(String uid, String label, @Nullable String description, @Nullable String category,
+ boolean listed, List configParameters, List channels,
List channelGroups, List supportedBridgeTypeUIDs,
Map properties, boolean bridge, List parameterGroups,
- List extensibleChannelTypeIds, String semanticEquipmentTag) {
+ List extensibleChannelTypeIds, @Nullable String semanticEquipmentTag) {
this.UID = uid;
this.label = label;
this.description = description;
diff --git a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/firmware/dto/FirmwareDTO.java b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/firmware/dto/FirmwareDTO.java
index bfd91ae58..7615bfe7c 100644
--- a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/firmware/dto/FirmwareDTO.java
+++ b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/firmware/dto/FirmwareDTO.java
@@ -15,19 +15,25 @@ package org.openhab.core.thing.firmware.dto;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize firmware information.
*
* @author Aoun Bukhari - Initial contribution
* @author Dimitar Ivanov - enriched with thing type UID
*/
+@Schema(name = "Firmware")
@NonNullByDefault
public class FirmwareDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public final String thingTypeUID;
public final @Nullable String vendor;
public final @Nullable String model;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public final boolean modelRestricted;
public final @Nullable String description;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public final String version;
public final @Nullable String changelog;
public final @Nullable String prerequisiteVersion;
diff --git a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/firmware/dto/FirmwareStatusDTO.java b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/firmware/dto/FirmwareStatusDTO.java
index 65b1a8cb5..9fc0e8ff5 100644
--- a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/firmware/dto/FirmwareStatusDTO.java
+++ b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/firmware/dto/FirmwareStatusDTO.java
@@ -15,14 +15,18 @@ package org.openhab.core.thing.firmware.dto;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize firmware status information.
*
* @author Aoun Bukhari - Initial contribution
*/
+@Schema(name = "FirmwareStatus")
@NonNullByDefault
public class FirmwareStatusDTO {
public final String status;
+ @Schema(requiredMode = Schema.RequiredMode.NOT_REQUIRED)
public final @Nullable String updatableVersion;
public FirmwareStatusDTO(String status, @Nullable String updatableVersion) {
diff --git a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/link/dto/AbstractLinkDTO.java b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/link/dto/AbstractLinkDTO.java
index 127c11f02..3060b70e3 100644
--- a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/link/dto/AbstractLinkDTO.java
+++ b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/link/dto/AbstractLinkDTO.java
@@ -12,11 +12,14 @@
*/
package org.openhab.core.thing.link.dto;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+
/**
* This is an abstract class for link data transfer object that is used to serialize links.
*
* @author Dennis Nobel - Initial contribution
*/
+@NonNullByDefault
public abstract class AbstractLinkDTO {
public String itemName;
@@ -25,6 +28,7 @@ public abstract class AbstractLinkDTO {
* Default constructor for deserialization e.g. by Gson.
*/
protected AbstractLinkDTO() {
+ this("");
}
protected AbstractLinkDTO(String itemName) {
diff --git a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/link/dto/ItemChannelLinkDTO.java b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/link/dto/ItemChannelLinkDTO.java
index 472d5cb4f..51d0e8529 100644
--- a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/link/dto/ItemChannelLinkDTO.java
+++ b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/link/dto/ItemChannelLinkDTO.java
@@ -14,11 +14,17 @@ package org.openhab.core.thing.link.dto;
import java.util.Map;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize links.
*
* @author Dennis Nobel - Initial contribution
*/
+@Schema(name = "ItemChannelLink")
+@NonNullByDefault
public class ItemChannelLinkDTO extends AbstractLinkDTO {
public String channelUID;
@@ -28,6 +34,7 @@ public class ItemChannelLinkDTO extends AbstractLinkDTO {
* Default constructor for deserialization e.g. by Gson.
*/
protected ItemChannelLinkDTO() {
+ this("", "", Map.of());
}
public ItemChannelLinkDTO(String itemName, String channelUID, Map configuration) {
diff --git a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/profiles/dto/ProfileTypeDTO.java b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/profiles/dto/ProfileTypeDTO.java
index 95eb25f64..680b7a831 100644
--- a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/profiles/dto/ProfileTypeDTO.java
+++ b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/profiles/dto/ProfileTypeDTO.java
@@ -13,12 +13,19 @@
package org.openhab.core.thing.profiles.dto;
import java.util.Collection;
+import java.util.Set;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+
+import io.swagger.v3.oas.annotations.media.Schema;
/**
* DTO for profile types
*
* @author Stefan Triller - Initial contribution
*/
+@Schema(name = "ProfileType")
+@NonNullByDefault
public class ProfileTypeDTO {
public String uid;
@@ -26,7 +33,9 @@ public class ProfileTypeDTO {
public String kind;
public Collection supportedItemTypes;
+ // do not remove - needed by GSON
public ProfileTypeDTO() {
+ this("", "", "", Set.of());
}
public ProfileTypeDTO(String uid, String label, String kind, Collection supportedItemTypes) {
diff --git a/bundles/org.openhab.core.ui/bnd.bnd b/bundles/org.openhab.core.ui/bnd.bnd
index d6f226152..c4212d20c 100644
--- a/bundles/org.openhab.core.ui/bnd.bnd
+++ b/bundles/org.openhab.core.ui/bnd.bnd
@@ -3,8 +3,9 @@ Bundle-Activator: org.openhab.core.ui.internal.UIActivator
Private-Package: \
org.knowm.xchart.*
Import-Package: \
+ io.swagger.v3.oas.annotations.*;resolution:=optional,\
de.erichseifert.vectorgraphics2d.*;resolution:=optional,\
de.rototor.pdfbox.*;resolution:=optional,\
com.madgag.*;resolution:=optional,\
org.apache.pdfbox.*;resolution:=optional,\
- *
\ No newline at end of file
+ *
diff --git a/bundles/org.openhab.core.ui/src/main/java/org/openhab/core/ui/components/UIComponent.java b/bundles/org.openhab.core.ui/src/main/java/org/openhab/core/ui/components/UIComponent.java
index f92d0399b..bfb145d13 100644
--- a/bundles/org.openhab.core.ui/src/main/java/org/openhab/core/ui/components/UIComponent.java
+++ b/bundles/org.openhab.core.ui/src/main/java/org/openhab/core/ui/components/UIComponent.java
@@ -17,6 +17,9 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.media.Schema.AdditionalPropertiesValue;
+
/**
* A UIComponent represents a piece of UI element for a client frontend to render; it is kept very simple and delegates
* the actual rendering and behavior to the frontend.
@@ -33,6 +36,7 @@ import java.util.Map;
public class UIComponent {
String component;
+ @Schema(additionalProperties = AdditionalPropertiesValue.TRUE)
Map config;
Map> slots = null;
@@ -59,6 +63,7 @@ public class UIComponent {
*
* @return the component type
*/
+ @Schema(hidden = true)
public String getType() {
return component;
}
diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/items/dto/GroupFunctionDTO.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/items/dto/GroupFunctionDTO.java
index 46852ab85..44469e0bd 100644
--- a/bundles/org.openhab.core/src/main/java/org/openhab/core/items/dto/GroupFunctionDTO.java
+++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/items/dto/GroupFunctionDTO.java
@@ -12,13 +12,17 @@
*/
package org.openhab.core.items.dto;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize group functions.
*
* @author Kai Kreuzer - Initial contribution
*/
+@Schema(name = "GroupFunction")
public class GroupFunctionDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String name;
public String[] params;
}
diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/items/dto/GroupItemDTO.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/items/dto/GroupItemDTO.java
index 92199b224..e8ce0d698 100644
--- a/bundles/org.openhab.core/src/main/java/org/openhab/core/items/dto/GroupItemDTO.java
+++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/items/dto/GroupItemDTO.java
@@ -12,11 +12,14 @@
*/
package org.openhab.core.items.dto;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize group items.
*
* @author Kai Kreuzer - Initial contribution
*/
+@Schema(name = "GroupItem")
public class GroupItemDTO extends ItemDTO {
public String groupType;
diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/items/dto/ItemDTO.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/items/dto/ItemDTO.java
index 4a0150535..368c90823 100644
--- a/bundles/org.openhab.core/src/main/java/org/openhab/core/items/dto/ItemDTO.java
+++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/items/dto/ItemDTO.java
@@ -15,15 +15,19 @@ package org.openhab.core.items.dto;
import java.util.List;
import java.util.Set;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize items.
*
* @author Kai Kreuzer - Initial contribution
* @author Andre Fuechsel - added tag support
*/
+@Schema(name = "Item")
public class ItemDTO {
-
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String type;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public String name;
public String label;
public String category;
diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/items/dto/MetadataDTO.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/items/dto/MetadataDTO.java
index 1c61a2d07..853dc6dbe 100644
--- a/bundles/org.openhab.core/src/main/java/org/openhab/core/items/dto/MetadataDTO.java
+++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/items/dto/MetadataDTO.java
@@ -17,15 +17,20 @@ import java.util.Map;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
+import io.swagger.v3.oas.annotations.media.Schema;
+
/**
* This is a data transfer object that is used to serialize metadata for a certain namespace and item.
*
* @author Kai Kreuzer - Initial contribution
*/
+@Schema(name = "Metadata")
@NonNullByDefault
public class MetadataDTO {
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public @Nullable String value;
public @Nullable Map config;
+ @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
public @Nullable Boolean editable;
}
diff --git a/pom.xml b/pom.xml
index fa324dab6..68489a7b2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -80,6 +80,7 @@
4.254.21.0
+ 2.2.35
@@ -367,6 +368,14 @@ Import-Package: \\
Implementation note:
+
+
+ io.swagger.core.v3
+ swagger-annotations
+ ${swagger.version}
+ compile
+
+