我试图在特定日期范围内从Pipedrive API中提取优惠。我通过使用我想要的日期范围编辑(或创建/删除)过滤器来完成此操作,然后在后续请求中传入该过滤器以提取所有交易。
"交易"端点工作完美。我的问题是API似乎并不喜欢"条件"我为"过滤器"传入的参数端点 - 但仅限于我使用cURL(在我自己的代码中)或Postman。如果我测试"编辑过滤器"或者"创建过滤器" API文档中的端点,当我将JSON对象从我的代码复制并粘贴到"条件"中时,它们都完全按预期工作。参数。但是,如果我使用cURL或Postman,PUT端点只返回编辑过滤器而不进行编辑,POST端点创建一个空条件的新过滤器。
这是我用于POST端点的PHP代码:
$data = [
'name' => 'Custom date range',
'type' => 'deals',
'conditions' => '{
"glue": "and",
"conditions": [
{
"glue": "and",
"conditions": [
{
"object": "deal",
"field_id": "12449",
"operator": "=",
"value": "won",
"extra_value": "null"
},
{
"object": "deal",
"field_id": "12455",
"operator": ">=",
"value": "2017-03-01",
"extra_value": "null"
},
{
"object": "deal",
"field_id": "12455",
"operator": "<=",
"value": "2017-03-10",
"extra_value": "null"
}
]
},
{
"glue": "or",
"conditions": []
}
]
}'
];
$ch = curl_init("https://api.pipedrive.com/v1/filters?api_token=$apiKey");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: application/json;"));
curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));
$response = curl_exec($ch);
这是&#34;条件&#34;的描述。 &#34;创建过滤器的参数&#34;端点:
&#34;过滤条件作为JSON对象。它需要一个最小结构如下:
{"glue":"and","conditions":[{"glue":"and","conditions": [CONDITION_OBJECTS]},{"glue":"or","conditions":[CONDITION_OBJECTS]}]}
将CONDITION_OBJECTS替换为以下结构的JSON对象:
{"object":"","field_id":"", "operator":"","value":"", "extra_value":""} or leave the array empty.
根据对象类型,您应该使用另一个API端点来获取field_id。您可以选择五种类型的对象:
"person", "deal", "organization", "product", "activity"
您可以根据您拥有的字段类型使用这些类型的运算符:
"IS NOT NULL", "IS NULL", "<=", ">=", "<", ">", "!=", "=", "LIKE '%$%'", "NOT LIKE '%$%'", "LIKE '$%'", "NOT LIKE '$%'", "LIKE '%$'", "NOT LIKE '%$'".
要更好地了解过滤器的工作原理,请尝试直接从Pipedrive应用程序创建它们。&#34;
POST端点&#34;条件&#34;参数是一样的。同样,当我将这个大JSON对象粘贴到API文档测试中时,两个端点都可以完美地工作 - 但不是在我自己的代码中。任何帮助将不胜感激。
编辑:这是我从cURL获得的&#34;创建过滤器&#34;端点:
{#233 ▼
+"id": 60
+"name": "Custom date range"
+"active_flag": true
+"type": "deals"
+"temporary_flag": null
+"user_id": 504569
+"add_time": "2017-04-19 11:18:10"
+"update_time": "2017-04-19 11:18:10"
+"visible_to": "7"
+"custom_view_id": null
+"conditions": {#219 ▼
+"glue": "and"
+"conditions": array:2 [▼
0 => {#230 ▼
+"glue": "and"
+"conditions": []
}
1 => {#223 ▼
+"glue": "or"
+"conditions": []
}
]
}
}
没有错误,但正如您所见,条件为空。我还尝试了为Pipedrive API创建的PHP包装器,并得到了相同的结果。
答案 0 :(得分:3)
Pipedrive工程师在这里。这是我测试的一个例子..
WFM <- tibble(Date = rep("04/12/2017", 3), Vol = c(NA, 23, 40), Open = c(33.9, NA, 32))
请注意
过滤API非常复杂,我们正致力于改进文档。希望这有帮助
答案 1 :(得分:0)
要提取交易,您应该使用GET
方法。 POST
用于添加交易。
将CURL
从POST
更改为GET
方法,它应该有效。