关系属性所需的 SoftLayer 权限

SoftLayer permissions required for relational properties

更新:感谢 Ruber 的帮助,已确定使用 SoftLayer 提供的 Legacy Object Mask. This is unintended behavior and has been escalated within SoftLayer for fixing. The 'fix' Ruber suggested was to upgrade and use the newer style 对象掩码查询关系属性时会出现此问题。

我正在调试使用 SoftLayer SOAP API v3 SoftLayer_Hardware_Server::getObject() 方法查询 billingItem->package 关系 属性 时遇到的问题超过 PHP。我的直觉告诉我,这可能与 API 用户权限有关,因为这段代码从大约 2010 年开始一直在生产中运行,直到大约 2 个月前,而我们的 API 用户权限似乎以某种频率发生变化.

下面是我们用来查询这些关系属性的代码片段,删除了一些专有位:

$client = getSoapClient("Hardware_Server");
$init = new stdClass();
$init->id = some_id_here;
$objectMask = new SoftLayer_ObjectMask();
$objectMask->operatingSystem->partitionTemplates->partitionTemplatePartition;
$objectMask->billingItem->package->items->prices->categories;
$objectMask->hardDrives;
$client->setObjectMask($objectMask);
$client->setInitParameters($init);
$data = $client->getObject();

如果我检查请求和响应数据,我可以看到 billingItem 以及 billingItem->package 对象被请求,但是 package 对象响应中缺少。尝试检索其他看似与销售相关的项目,例如 billingItem->upgradeItems returns 也是一个空数组。

我对 SoftLayer(或之前遇到过此问题的任何人)的问题是:是否需要一组特定的权限来查询关系属性,例如 billingItem->packagebillingItem->upgradeItems?如果有,它们是什么?另外,是否有列表或图表可以回答 "If I wish to query x propery, I need y permissions"?

提前致谢!

没有任何允许获取关系属性的权限,例如 billingItem -> packagebillingItem -> upgradeItems

You just need the "View Hardware Details" permission enabled and access to the device

无论如何,你能试试这个面膜吗?

$objectMask->billingItem -> package;
$objectMask->billingItem -> upgradeItems;

请告诉我,如果您无法获取包裹信息,并且如果您继续面临此问题,请提供更多信息,您正在使用的确切掩码以及您的期望是什么.服务器的标识符也可用于进一步调查。

权限及其操作暂无相关文档,但您可以使用以下方法:

它将显示所有可用的权限,名称描述了它们允许的操作