Workfront 和 popt API
Workfront and the popt API
好的,这是我的问题。如果有人问过这个问题,请原谅我。我在该网站上进行了搜索,但找不到我要找的东西。我对 Workfront 非常、非常、非常陌生,他们的文档在我想做的事情方面似乎相当有限。
我知道如何从我的数据库中获取查询并将其转换为 JSON。
我可以登录 Workfront 并创建自定义表单。我可以给它添加一个下拉列表。
我需要做的是将 JSON 放入页面的下拉列表中。所以我什至不知道 popt 是否适合 API 使用。
我知道我可能需要使用
/attask/api/v7.0/popt?method=post&updates=[{json obj 1}, {json obj 2}]
但我不知道如何将它与正确的下拉菜单相关联。
如果有人能指出正确的方向,我将不胜感激。
根据 Brian 的以下请求:
有办法"bulk add"吗?你能解释一下参数吗? $option 是将显示在下拉列表中的字符串吗?标签值呢?如何找到下拉列表的ID?
编辑添加
感谢@Brian R 的帮助。
我想知道下拉列表中的选择数量是否有限制。我的列表将包含一千多个 "rows",因此我需要它能够包含一千多个条目。
另外,有没有办法 "bulk insert",一次将多个 JSON 元素传递给 api?
看起来我应该使用 PUT 而不是 POST 来保存 new 数据,但是我如何摆脱 旧数据?
我很惊讶 popt 是一个标签...
明确地说,您不想在下拉列表中创建新选项(它的大小有限且内容固定),但您确实想为每个项目分配值,因此如果有人选择选项 'bob' 作为人类可读的选择,它将被分配一个您生成的 JSON 对象。是吗?
在这种情况下,您需要单独更新每个 popt。因此,您首先需要通过以下调用获取下拉列表中每个选项的列表:
GET https://<url>.my.workfront.com/attask/api/v7.0/PARAM/<ID of the parameter(dropdown list)>?fields=parameterOptions&apiKey=<key>
然后,您将遍历每个 result.parameterOptions 并设置值:
foreach($option in $result.parameterOptions){
{
PUT https://<url>.my.workfront.com/attask/api/v7.0/POPT/<$option>?value=<json value>&label=<human readable choice>&apiKey=<key>
}
要解决您在下面的响应中,其中参数为空(具有空值的下拉列表),您只需要自己创建 popt。您首先需要确定如何从 JSON 对象中提取数据,因为每个下拉选项至少有一个且不超过两个条目(人类可读的选择,这是强制性的,以及分配给所述选择的可选值)。
foreach $element in $JSON
{
$label = <extract label from $element>
[$value = <optional, extract value from $element>]
POST https://<url>.my.workfront.com/attask/api/v7.0/POPT?<label=$label>[<&value=$value>]¶meterID=<ID of dropdown list>&apiKey=<key>
}
好的,这是我的问题。如果有人问过这个问题,请原谅我。我在该网站上进行了搜索,但找不到我要找的东西。我对 Workfront 非常、非常、非常陌生,他们的文档在我想做的事情方面似乎相当有限。
我知道如何从我的数据库中获取查询并将其转换为 JSON。
我可以登录 Workfront 并创建自定义表单。我可以给它添加一个下拉列表。
我需要做的是将 JSON 放入页面的下拉列表中。所以我什至不知道 popt 是否适合 API 使用。
我知道我可能需要使用
/attask/api/v7.0/popt?method=post&updates=[{json obj 1}, {json obj 2}]
但我不知道如何将它与正确的下拉菜单相关联。
如果有人能指出正确的方向,我将不胜感激。
根据 Brian 的以下请求:
有办法"bulk add"吗?你能解释一下参数吗? $option 是将显示在下拉列表中的字符串吗?标签值呢?如何找到下拉列表的ID?
编辑添加
感谢@Brian R 的帮助。
我想知道下拉列表中的选择数量是否有限制。我的列表将包含一千多个 "rows",因此我需要它能够包含一千多个条目。
另外,有没有办法 "bulk insert",一次将多个 JSON 元素传递给 api?
看起来我应该使用 PUT 而不是 POST 来保存 new 数据,但是我如何摆脱 旧数据?
我很惊讶 popt 是一个标签...
明确地说,您不想在下拉列表中创建新选项(它的大小有限且内容固定),但您确实想为每个项目分配值,因此如果有人选择选项 'bob' 作为人类可读的选择,它将被分配一个您生成的 JSON 对象。是吗?
在这种情况下,您需要单独更新每个 popt。因此,您首先需要通过以下调用获取下拉列表中每个选项的列表:
GET https://<url>.my.workfront.com/attask/api/v7.0/PARAM/<ID of the parameter(dropdown list)>?fields=parameterOptions&apiKey=<key>
然后,您将遍历每个 result.parameterOptions 并设置值:
foreach($option in $result.parameterOptions){
{
PUT https://<url>.my.workfront.com/attask/api/v7.0/POPT/<$option>?value=<json value>&label=<human readable choice>&apiKey=<key>
}
要解决您在下面的响应中,其中参数为空(具有空值的下拉列表),您只需要自己创建 popt。您首先需要确定如何从 JSON 对象中提取数据,因为每个下拉选项至少有一个且不超过两个条目(人类可读的选择,这是强制性的,以及分配给所述选择的可选值)。
foreach $element in $JSON
{
$label = <extract label from $element>
[$value = <optional, extract value from $element>]
POST https://<url>.my.workfront.com/attask/api/v7.0/POPT?<label=$label>[<&value=$value>]¶meterID=<ID of dropdown list>&apiKey=<key>
}