将自定义全局数据保存到租户中

Save custom global data into a tenant

我想要实现的是拥有一个带有自定义数据的全局片段。此数据片段必须可随时从中央源访问,并且租户之间可以不同。所有设备都需要此数据

我有两个想法

租户: 将自定义数据保存到租户片段中的最佳方式是什么?我试过使用以下请求但没有运气。

PUT /tenant/tenants/tenant1 HTTP/1.1
Host: tenant1.enterpise.com
Content-Type: application/json
Accept: application/json
Authorization: Basic 

{
 "customFragment:{
  "forms":[
     {
      "type": ....,
      "inputa" : ...
     },
     .....
   ],
   "products":[
     {
      "name": ....,
      "stock" : ...
     }
   ],
   .....
  }
}

我能做什么?

将 managementObject 与自定义数据片段一起使用。

我可以在数据库中使用管理对象来实现这一点吗?如果这个管理对象没有isDevice属性会收费吗?

提前致谢!

两种方法在这里都有效

将其存储在租户对象中

你的请求(几乎)是正确的,但是这个请求不能用 tenant1 的用户来执行。租户不能更新自己的租户对象。您需要从父租户执行此请求(管理租户或者如果它是另一个租户的子租户,您也可以从那里执行)。 现在几乎是:对于租户,您不能直接创建任意片段。您需要将自定义数据放入名为 "customProperties" 的片段中。你在那个片段里放什么又取决于你。

{
   "customProperties" : {
        "test": "test",
        "abc": {
            "test": 1
        }
   }
}

要访问此数据,您可以使用 API /tenant/currentTenant。这个 API 对于每个经过身份验证的用户始终可用,无论访问权限如何。它将 return 租户信息(包括 customProperties)。这个 API 也是只读的,就像 /user/currentUser API.

存储在托管对象中

在清单 API 中,您可以向对象添加片段 "c8y_Global"。这将使每个用户都可以使用此 managedObject,而不管访问权限如何(当然,您仍然需要租户的有效凭据。

{
   "c8y_Global": {},
   "myConfig": {
        ...
   }
}

关于收费,最好直接与您的平台提供商联系,但通常只有设备是收费的一部分,这不会被视为设备。顺便说一句,仪表板也是这种带有 c8y_Global 标志的托管对象。