mirror of
				https://github.com/Telecominfraproject/wlan-cloud-ucentralsec.git
				synced 2025-10-31 18:57:51 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			722 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			722 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //
 | |
| //	License type: BSD 3-Clause License
 | |
| //	License copy: https://github.com/Telecominfraproject/wlan-cloud-ucentralgw/blob/master/LICENSE
 | |
| //
 | |
| //	Created by Stephane Bourque on 2021-03-04.
 | |
| //	Arilia Wireless Inc.
 | |
| //
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include "RESTObjects/RESTAPI_SecurityObjects.h"
 | |
| 
 | |
| namespace OpenWifi::ProvObjects {
 | |
| 
 | |
|     enum FIRMWARE_UPGRADE_RULES {
 | |
|         dont_upgrade,
 | |
|         upgrade_inherit,
 | |
|         upgrade_release_only,
 | |
|         upgrade_latest
 | |
|     };
 | |
| 
 | |
|     struct ObjectInfo {
 | |
|         Types::UUID_t   id;
 | |
|         std::string     name;
 | |
|         std::string     description;
 | |
|         SecurityObjects::NoteInfoVec notes;
 | |
|         uint64_t        created=0;
 | |
|         uint64_t        modified=0;
 | |
|         Types::TagList  tags;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct SerialNumberList {
 | |
|         Types::UUIDvec_t    serialNumbers;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ManagementPolicyEntry {
 | |
|         Types::UUIDvec_t users;
 | |
|         Types::UUIDvec_t resources;
 | |
|         Types::StringVec access;
 | |
|         std::string policy;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ManagementPolicy {
 | |
|         ObjectInfo          info;
 | |
|         std::vector<ManagementPolicyEntry>  entries;
 | |
|         Types::StringVec    inUse;
 | |
|         Types::UUID_t       entity;
 | |
|         Types::UUID_t       venue;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
|     typedef std::vector<ManagementPolicy>      ManagementPolicyVec;
 | |
| 
 | |
|     struct RRMAlgorithmDetails {
 | |
|         std::string     name;
 | |
|         std::string     parameters;
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct RRMDetails {
 | |
|         std::string     vendor;
 | |
|         std::string     schedule;
 | |
|         std::vector<RRMAlgorithmDetails>    algorithms;
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct DeviceRules {
 | |
|         std::string     rcOnly{"inherit"};
 | |
|         std::string     rrm{"inherit"};
 | |
|         std::string     firmwareUpgrade{"inherit"};
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct Entity {
 | |
|         ObjectInfo              info;
 | |
|         Types::UUID_t           parent;
 | |
|         Types::UUIDvec_t        children;
 | |
|         Types::UUIDvec_t        venues;
 | |
|         Types::UUIDvec_t        contacts;       // all contacts associated in this entity
 | |
|         Types::UUIDvec_t        locations;      // all locations associated in this entity
 | |
|         Types::UUID_t           managementPolicy;
 | |
|         Types::UUIDvec_t        deviceConfiguration;
 | |
|         Types::UUIDvec_t        devices;
 | |
|         DeviceRules             deviceRules;
 | |
|         Types::StringVec        sourceIP;
 | |
|         Types::UUIDvec_t        variables;
 | |
|         Types::UUIDvec_t        managementPolicies;
 | |
|         Types::UUIDvec_t        managementRoles;
 | |
|         Types::UUIDvec_t        maps;
 | |
|         Types::UUIDvec_t        configurations;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
|     typedef std::vector<Entity>      EntityVec;
 | |
| 
 | |
|     struct DiGraphEntry {
 | |
|         Types::UUID_t parent;
 | |
|         Types::UUID_t child;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     typedef std::vector<DiGraphEntry>   DiGraph;
 | |
| 
 | |
|     struct Venue {
 | |
|         ObjectInfo          info;
 | |
|         Types::UUID_t       entity;
 | |
|         Types::UUID_t       parent;
 | |
|         Types::UUIDvec_t    children;
 | |
|         Types::UUID_t       managementPolicy;
 | |
|         Types::UUIDvec_t    devices;
 | |
|         DiGraph             topology;
 | |
|         std::string         design;
 | |
|         Types::UUIDvec_t    deviceConfiguration;
 | |
|         Types::UUIDvec_t    contacts;
 | |
|         std::string         location;
 | |
|         DeviceRules         deviceRules;
 | |
|         Types::StringVec    sourceIP;
 | |
|         Types::UUIDvec_t    variables;
 | |
|         Types::UUIDvec_t    configurations;
 | |
|         Types::UUIDvec_t    maps;
 | |
|         Types::UUIDvec_t    managementPolicies;
 | |
|         Types::UUIDvec_t    managementRoles;
 | |
|         Types::UUIDvec_t    boards;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
|     typedef std::vector<Venue>      VenueVec;
 | |
| 
 | |
|     struct UserInfoDigest {
 | |
|         std::string     id;
 | |
|         std::string     loginId;
 | |
|         std::string     userType;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ManagementRole {
 | |
|         ObjectInfo          info;
 | |
|         Types::UUID_t       managementPolicy;
 | |
|         Types::UUIDvec_t    users;
 | |
|         Types::StringVec    inUse;
 | |
|         Types::UUID_t       entity;
 | |
|         Types::UUID_t       venue;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
|     typedef std::vector<ManagementRole>      ManagementRoleVec;
 | |
| 
 | |
|     enum LocationType {
 | |
|         LT_SERVICE, LT_EQUIPMENT, LT_AUTO, LT_MANUAL,
 | |
|         LT_SPECIAL, LT_UNKNOWN, LT_CORPORATE
 | |
|     };
 | |
| 
 | |
|     inline std::string to_string(LocationType L) {
 | |
|         switch(L) {
 | |
|             case LT_SERVICE: return "SERVICE";
 | |
|             case LT_EQUIPMENT: return "EQUIPMENT";
 | |
|             case LT_AUTO: return "AUTO";
 | |
|             case LT_MANUAL: return "MANUAL";
 | |
|             case LT_SPECIAL: return "SPECIAL";
 | |
|             case LT_UNKNOWN: return "UNKNOWN";
 | |
|             case LT_CORPORATE: return "CORPORATE";
 | |
|             default: return "UNKNOWN";
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     inline LocationType location_from_string(const std::string &S) {
 | |
|         if(!Poco::icompare(S,"SERVICE"))
 | |
|             return LT_SERVICE;
 | |
|         else if(!Poco::icompare(S,"EQUIPMENT"))
 | |
|             return LT_EQUIPMENT;
 | |
|         else if(!Poco::icompare(S,"AUTO"))
 | |
|             return LT_AUTO;
 | |
|         else if(!Poco::icompare(S,"MANUAL"))
 | |
|             return LT_MANUAL;
 | |
|         else if(!Poco::icompare(S,"SPECIAL"))
 | |
|             return LT_SPECIAL;
 | |
|         else if(!Poco::icompare(S,"UNKNOWN"))
 | |
|             return LT_UNKNOWN;
 | |
|         else if(!Poco::icompare(S,"CORPORATE"))
 | |
|             return LT_CORPORATE;
 | |
|         return LT_UNKNOWN;
 | |
|     }
 | |
| 
 | |
|     struct Location {
 | |
|         ObjectInfo          info;
 | |
|         LocationType        type;
 | |
|         std::string         buildingName;
 | |
|         Types::StringVec    addressLines;
 | |
|         std::string         city;
 | |
|         std::string         state;
 | |
|         std::string         postal;
 | |
|         std::string         country;
 | |
|         Types::StringVec    phones;
 | |
|         Types::StringVec    mobiles;
 | |
|         std::string         geoCode;
 | |
|         Types::StringVec    inUse;
 | |
|         Types::UUID_t       entity;
 | |
|         Types::UUID_t       managementPolicy;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
|     typedef std::vector<Location>      LocationVec;
 | |
| 
 | |
|     struct OperatorLocation {
 | |
|         ObjectInfo          info;
 | |
|         std::string         type;
 | |
|         std::string         buildingName;
 | |
|         Types::StringVec    addressLines;
 | |
|         std::string         city;
 | |
|         std::string         state;
 | |
|         std::string         postal;
 | |
|         std::string         country;
 | |
|         Types::StringVec    phones;
 | |
|         Types::StringVec    mobiles;
 | |
|         std::string         geoCode;
 | |
|         Types::UUID_t       operatorId;
 | |
|         Types::UUID_t       subscriberDeviceId;
 | |
|         Types::UUID_t       managementPolicy;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
|     typedef std::vector<Location>      LocationVec;
 | |
| 
 | |
|     struct SubLocation {
 | |
|         std::string         type;
 | |
|         std::string         buildingName;
 | |
|         Types::StringVec    addressLines;
 | |
|         std::string         city;
 | |
|         std::string         state;
 | |
|         std::string         postal;
 | |
|         std::string         country;
 | |
|         Types::StringVec    phones;
 | |
|         Types::StringVec    mobiles;
 | |
|         std::string         geoCode;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct OperatorLocationList {
 | |
|         std::vector<OperatorLocation>    locations;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
| 
 | |
|     enum ContactType {
 | |
|         CT_SUBSCRIBER, CT_USER, CT_INSTALLER, CT_CSR, CT_MANAGER,
 | |
|         CT_BUSINESSOWNER, CT_TECHNICIAN, CT_CORPORATE, CT_UNKNOWN
 | |
|     };
 | |
| 
 | |
|     inline std::string to_string(ContactType L) {
 | |
|         switch(L) {
 | |
|             case CT_SUBSCRIBER: return "SUBSCRIBER";
 | |
|             case CT_USER: return "USER";
 | |
|             case CT_INSTALLER: return "INSTALLER";
 | |
|             case CT_CSR: return "CSR";
 | |
|             case CT_MANAGER: return "MANAGER";
 | |
|             case CT_BUSINESSOWNER: return "BUSINESSOWNER";
 | |
|             case CT_TECHNICIAN: return "TECHNICIAN";
 | |
|             case CT_CORPORATE: return "CORPORATE";
 | |
|             case CT_UNKNOWN: return "UNKNOWN";
 | |
|             default: return "UNKNOWN";
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     inline ContactType contact_from_string(const std::string &S) {
 | |
|         if(!Poco::icompare(S,"SUBSCRIBER"))
 | |
|             return CT_SUBSCRIBER;
 | |
|         else if(!Poco::icompare(S,"USER"))
 | |
|             return CT_USER;
 | |
|         else if(!Poco::icompare(S,"INSTALLER"))
 | |
|             return CT_INSTALLER;
 | |
|         else if(!Poco::icompare(S,"CSR"))
 | |
|             return CT_CSR;
 | |
|         else if(!Poco::icompare(S,"BUSINESSOWNER"))
 | |
|             return CT_BUSINESSOWNER;
 | |
|         else if(!Poco::icompare(S,"TECHNICIAN"))
 | |
|             return CT_TECHNICIAN;
 | |
|         else if(!Poco::icompare(S,"CORPORATE"))
 | |
|             return CT_CORPORATE;
 | |
|         else if(!Poco::icompare(S,"UNKNOWN"))
 | |
|             return CT_UNKNOWN;
 | |
|         return CT_UNKNOWN;
 | |
|     }
 | |
| 
 | |
|     struct Contact {
 | |
|         ObjectInfo  info;
 | |
|         ContactType type=CT_USER;
 | |
|         std::string title;
 | |
|         std::string salutation;
 | |
|         std::string firstname;
 | |
|         std::string lastname;
 | |
|         std::string initials;
 | |
|         std::string visual;
 | |
|         Types::StringVec mobiles;
 | |
|         Types::StringVec phones;
 | |
|         std::string primaryEmail;
 | |
|         std::string secondaryEmail;
 | |
|         std::string accessPIN;
 | |
|         Types::StringVec inUse;
 | |
|         Types::UUID_t   entity;
 | |
|         Types::UUID_t   managementPolicy;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
|     typedef std::vector<Contact>      ContactVec;
 | |
| 
 | |
|     struct OperatorContact {
 | |
|         ObjectInfo      info;
 | |
|         std::string     type;
 | |
|         std::string     title;
 | |
|         std::string     salutation;
 | |
|         std::string     firstname;
 | |
|         std::string     lastname;
 | |
|         std::string     initials;
 | |
|         std::string     visual;
 | |
|         Types::StringVec mobiles;
 | |
|         Types::StringVec phones;
 | |
|         std::string     primaryEmail;
 | |
|         std::string     secondaryEmail;
 | |
|         std::string     accessPIN;
 | |
|         Types::UUID_t   operatorId;
 | |
|         Types::UUID_t   subscriberDeviceId;
 | |
|         Types::UUID_t   managementPolicy;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct SubContact {
 | |
|         std::string     type;
 | |
|         std::string     title;
 | |
|         std::string     salutation;
 | |
|         std::string     firstname;
 | |
|         std::string     lastname;
 | |
|         std::string     initials;
 | |
|         std::string     visual;
 | |
|         Types::StringVec mobiles;
 | |
|         Types::StringVec phones;
 | |
|         std::string     primaryEmail;
 | |
|         std::string     secondaryEmail;
 | |
|         std::string     accessPIN;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct OperatorContactList {
 | |
|         std::vector<OperatorContact>    contacts;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     typedef std::vector<OperatorContact>      OperatorContactVec;
 | |
| 
 | |
|     struct DeviceConfigurationElement {
 | |
|         std::string name;
 | |
|         std::string description;
 | |
|         uint64_t    weight;
 | |
|         std::string configuration;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
|     typedef std::vector<DeviceConfigurationElement> DeviceConfigurationElementVec;
 | |
| 
 | |
|     struct DeviceConfiguration {
 | |
|         ObjectInfo                      info;
 | |
|         Types::UUID_t                   managementPolicy;
 | |
|         Types::StringVec                deviceTypes;
 | |
|         DeviceConfigurationElementVec   configuration;
 | |
|         Types::StringVec                inUse;
 | |
|         Types::UUIDvec_t                variables;
 | |
|         DeviceRules                     deviceRules;
 | |
|         bool                            subscriberOnly=false;
 | |
|         std::string                     venue;
 | |
|         std::string                     entity;
 | |
|         std::string                     subscriber;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
|     typedef std::vector<DeviceConfiguration>      DeviceConfigurationVec;
 | |
| 
 | |
| 
 | |
|     struct InventoryTag {
 | |
|         ObjectInfo      info;
 | |
|         std::string     serialNumber;
 | |
|         std::string     venue;
 | |
|         std::string     entity;
 | |
|         std::string     subscriber;
 | |
|         std::string     deviceType;
 | |
|         std::string     qrCode;
 | |
|         std::string     geoCode;
 | |
|         std::string     location;
 | |
|         std::string     contact;
 | |
|         std::string     deviceConfiguration;
 | |
|         DeviceRules     deviceRules;
 | |
|         Types::UUID_t   managementPolicy;
 | |
|         std::string     state;
 | |
|         std::string     devClass;
 | |
|         std::string     locale;
 | |
|         std::string     realMacAddress;
 | |
|         bool            doNotAllowOverrides=false;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     typedef std::vector<InventoryTag>      InventoryTagVec;
 | |
| 
 | |
|     struct InventoryTagList {
 | |
|         InventoryTagVec     taglist;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct InventoryConfigApplyResult {
 | |
|         std::string         appliedConfiguration;
 | |
|         Types::StringVec    errors;
 | |
|         Types::StringVec    warnings;
 | |
|         uint64_t            errorCode;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct Report {
 | |
|         uint64_t            snapShot=0;
 | |
|         Types::CountedMap   tenants;
 | |
| 
 | |
|         void        reset();
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|     };
 | |
| 
 | |
|     struct ExpandedUseEntry {
 | |
|         std::string uuid;
 | |
|         std::string name;
 | |
|         std::string description;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ExpandedUseEntryList {
 | |
|         std::string                     type;
 | |
|         std::vector<ExpandedUseEntry>   entries;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ExpandedUseEntryMapList {
 | |
|         std::vector<ExpandedUseEntryList>    entries;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct UuidList {
 | |
|         Types::UUIDvec_t    list;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     enum ACLACCESS {
 | |
|         NONE = 0, READ=1, MODIFY=2, CREATE=3, DELETE=4
 | |
|     };
 | |
| 
 | |
|     struct ObjectACL {
 | |
|         UuidList        users;
 | |
|         UuidList        roles;
 | |
|         uint64_t        access = (uint64_t) NONE;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ObjectACLList {
 | |
|         std::vector<ObjectACL>  list;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct Map {
 | |
|         ObjectInfo          info;
 | |
|         std::string         data;
 | |
|         std::string         entity;
 | |
|         std::string         creator;
 | |
|         std::string         visibility{"private"};
 | |
|         ObjectACLList       access;
 | |
|         Types::UUID_t       managementPolicy;
 | |
|         std::string         venue;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct MapList {
 | |
|         std::vector<Map>    list;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     enum SignupStatusCodes {
 | |
|         SignupCreated = 0 ,
 | |
|         SignupWaitingForEmail,
 | |
|         SignupWaitingForDevice,
 | |
|         SignupSuccess,
 | |
|         SignupFailure,
 | |
|         SignupCanceled,
 | |
|         SignupTimedOut
 | |
|     };
 | |
| 
 | |
|     struct SignupEntry {
 | |
|         ObjectInfo          info;
 | |
|         std::string         email;
 | |
|         std::string         userId;
 | |
|         std::string         macAddress;
 | |
|         std::string         serialNumber;
 | |
|         uint64_t            submitted = 0 ;
 | |
|         uint64_t            completed = 0 ;
 | |
|         std::string         status;
 | |
|         uint64_t            error=0;
 | |
|         uint64_t            statusCode=0;
 | |
|         std::string         deviceID;
 | |
|         std::string         registrationId;
 | |
|         std::string         operatorId;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct Variable {
 | |
|         std::string         type;
 | |
|         uint64_t            weight=0;
 | |
|         std::string         prefix;
 | |
|         std::string         value;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct VariableList {
 | |
|         std::vector<Variable>   variables;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct VariableBlock {
 | |
|         ObjectInfo                  info;
 | |
|         std::vector<Variable>       variables;
 | |
|         std::string                 entity;
 | |
|         std::string                 venue;
 | |
|         std::string                 subscriber;
 | |
|         std::string                 inventory;
 | |
|         Types::UUIDvec_t            configurations;
 | |
|         Types::UUID_t               managementPolicy;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct VariableBlockList {
 | |
|         std::vector<VariableBlock>      variableBlocks;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct Operator {
 | |
|         ObjectInfo                      info;
 | |
|         Types::UUID_t                   managementPolicy;
 | |
|         Types::UUIDvec_t                managementRoles;
 | |
|         DeviceRules                     deviceRules;
 | |
|         std::vector<Variable>           variables;
 | |
|         bool                            defaultOperator=false;
 | |
|         Types::StringVec                sourceIP;
 | |
|         std::string                     registrationId;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct OperatorList {
 | |
|         std::vector<Operator>            operators;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct VenueDeviceList {
 | |
|         std::string         id;
 | |
|         std::string         name;
 | |
|         std::string         description;
 | |
|         Types::UUIDvec_t    devices;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ServiceClass {
 | |
|         ObjectInfo                      info;
 | |
|         Types::UUID_t                   operatorId;
 | |
|         Types::UUID_t                   managementPolicy;
 | |
|         double                          cost=0.0;
 | |
|         std::string                     currency;
 | |
|         std::string                     period;
 | |
|         std::string                     billingCode;
 | |
|         std::vector<Variable>           variables;
 | |
|         bool                            defaultService=false;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ServiceClassList {
 | |
|         std::vector<ServiceClass>            serviceClasses;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ConfigurationDetails {
 | |
|         DeviceConfigurationElementVec   configuration;
 | |
|         std::string                     rrm{"inherit"};
 | |
|         std::string                     firmwareUpgrade{"inherit"};
 | |
|         std::string                     firmwareRCOnly{"inherit"};
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct SubscriberDevice {
 | |
|         ObjectInfo                      info;
 | |
|         std::string                     serialNumber;
 | |
|         std::string                     deviceType;
 | |
|         Types::UUID_t                   operatorId;
 | |
|         Types::UUID_t                   subscriberId;
 | |
|         SubLocation                     location;
 | |
|         SubContact                      contact;
 | |
|         Types::UUID_t                   managementPolicy;
 | |
|         Types::UUID_t                   serviceClass;
 | |
|         std::string                     qrCode;
 | |
|         std::string                     geoCode;
 | |
|         DeviceRules                     deviceRules;
 | |
|         std::string                     state;
 | |
|         std::string                     locale;
 | |
|         std::string                     billingCode;
 | |
|         DeviceConfigurationElementVec   configuration;
 | |
|         bool                            suspended=false;
 | |
|         std::string                     realMacAddress;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct SubscriberDeviceList {
 | |
|         std::vector<SubscriberDevice>       subscriberDevices;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ConfigurationOverride {
 | |
|         std::string     source;
 | |
|         std::string     reason;
 | |
|         std::string     parameterName;
 | |
|         std::string     parameterType;
 | |
|         std::string     parameterValue;
 | |
|         std::uint64_t   modified;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ConfigurationOverrideList {
 | |
|         std::string     serialNumber;
 | |
|         Types::UUID_t   managementPolicy;
 | |
|         std::vector<ConfigurationOverride>  overrides;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     bool UpdateObjectInfo(const Poco::JSON::Object::Ptr &O, const SecurityObjects::UserInfo &U, ObjectInfo &I);
 | |
|     bool CreateObjectInfo(const Poco::JSON::Object::Ptr &O, const SecurityObjects::UserInfo &U, ObjectInfo &I);
 | |
|     bool CreateObjectInfo(const SecurityObjects::UserInfo &U, ObjectInfo &I);
 | |
| };
 | 
