特定の期間のPipedrive APIから取引を引き出そうとしています。私は、私が望む日付範囲のAPIを介してフィルタを編集(または作成/削除)してから、すべての取引を引き出すためにそのフィルタを渡します。Pipedrive API PUTおよびPOSTリクエストのフィルタエンドポイントが機能しない
"deals"エンドポイントは完全に機能します。私の問題は、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);
そして、これは、「フィルタを作成」エンドポイントの「条件」パラメータの説明です:
「フィルタ条件。これは、最小の構造を必要とするJSONオブジェクトとして次のように
{"glue":"and","conditions":[{"glue":"and","conditions": [CONDITION_OBJECTS]},{"glue":"or","conditions":[CONDITION_OBJECTS]}]}
は、以下の構造のJSONオブジェクトとCONDITION_OBJECTSを交換:
{"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 '%$'".
方法の理解を得るために、あなたが選ぶことができるオブジェクトの5種類があります。フィルタワークはPipedriveアプリケーションから直接作成してみてください」
POSTエンドポイントの「条件」パラメータは同じです。また、大きなJSONオブジェクトをAPIドキュメントテストに貼り付けると、両方のエンドポイントが完全に機能します。私のコードで。どんな助けもappre ciated。
編集:これは私が「フィルタを作成」のエンドポイントのためのcURLから得る応答である:
{#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ラッパーを試したところ、同じ結果が得られました。
Curlがスローするエラーを表示します。 http://stackoverflow.com/questions/3987006/how-to-catch-curl-errors-in-php – Samir
@Samirは私が得ている回答でOPを編集しました。エラーはスローされません。 –