// SPDX-License-Identifier: GPL-3.0-or-later

// This file is auto-generated by scripts/generate_nymea_api.py
// Any changes made here will be lost when the files are regenerated.
// Do not edit manually.

#pragma once

#include "apiutils.h"
#include "param.h"
#include "state.h"

namespace nymea::api {

class Thing {
public:
    // wire: 'setupComplete' (required, deprecated)
    bool setupComplete{};
    // wire: 'name' (optional)
    std::optional<QString> name;
    // wire: 'settings' (optional)
    std::optional<ParamList> settings;
    // wire: 'id' (required)
    QUuid id{};
    // wire: 'loggedActionTypeIds' (optional, required)
    std::optional<QList<QUuid>> loggedActionTypeIds;
    // wire: 'loggedEventTypeIds' (optional, required)
    std::optional<QList<QUuid>> loggedEventTypeIds;
    // wire: 'loggedStateTypeIds' (optional, required)
    std::optional<QList<QUuid>> loggedStateTypeIds;
    // wire: 'parentId' (optional, required)
    std::optional<QUuid> parentId;
    // wire: 'setupDisplayMessage' (optional, required)
    std::optional<QString> setupDisplayMessage;
    // wire: 'params' (required)
    ParamList params{};
    // wire: 'setupError' (required)
    ThingError setupError{};
    // wire: 'setupStatus' (required)
    ThingSetupStatus setupStatus{};
    // wire: 'states' (required)
    States states{};
    // wire: 'thingClassId' (required)
    QUuid thingClassId{};

    static Thing fromJson(const QJsonObject &object);
    QJsonObject toJson() const;
};

} // namespace nymea::api
