class TransparentMessageDecodeRequest extends TransparentMessageCodecRequest {

    // headers:{
    // "topic":"/xxxx",
    // "url":"/xxx"
    // }
    private Map<String, Object> headers;

    @NotBlank
    private String payload;

    @SneakyThrows
    public DirectDeviceMessage toMessage() {<FILL_FUNCTION_BODY>}
}

        ValidatorUtils.tryValidate(this);

        DirectDeviceMessage message = new DirectDeviceMessage();
        message.setDeviceId("test");
        if (MapUtils.isNotEmpty(headers)) {
            headers.forEach(message::addHeader);
        }
        byte[] data;
        if (payload.startsWith("0x")) {
            data = Hex.decodeHex(payload.substring(2));
        } else {
            data = payload.getBytes(StandardCharsets.UTF_8);
        }
        message.setPayload(data);

        return message;
    
<methods>public non-sealed void <init>() <variables>private Map<java.lang.String,java.lang.Object> configuration,private @NotBlank String provider