Wunderlist tasks - how do I get tasks for a list using curl in php

I have already searched quite a lot and cannot get an overview of tasks from one list using the Wunderlist endpoint: https://a.wunderlist.com/api/v1/tasks

I can get lists, folders, and create a list, folders, tasks, so that this works fine. But how do I get tasks from the list? I tried to interpret the documentation found here: https://developer.wunderlist.com/documentation/endpoints/task

When I do the GET method, I get the following error message:

{"error":{"type":"missing_parameter","translation_key":"api_error_missing_params","message":"Missing parameter.","title":["required"]}} 

However, I do not want to add a title, since I do not want to create a new task, I just need the tasks in this list.

What am I doing wrong here?

Here is my code:

 function doCall($endPoint, $parameters = array(), $method = 'GET') { // check if curl is available if (!function_exists('curl_init')) { print "This method requires cURL (http://php.net/curl), it seems like the extension isn't installed. ".__LINE__; exit(); } //prepare content $parametersdata = json_encode($parameters); // define url $url = 'https://a.wunderlist.com/api/v1/' . $endPoint; // init curl $curl = curl_init(); // set options curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_TIMEOUT, 10); // init headers $headers = array(); // add to header $headers[] = 'X-Access-Token: XXX'; $headers[] = 'X-Client-ID: XXX'; // method is POST, used for login or inserts if ($method == 'POST') { // define post method curl_setopt($curl, CURLOPT_POST, 1); // method is DELETE } elseif ($method == 'DELETE') { curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETE'); } else { curl_setopt($curl, CURLOPT_HTTPGET, 1); } // parameters are set if (!empty($parameters)) { $headers[] = 'Content-Type: application/json'; $headers[] = 'Content-Length: ' . strlen($parametersdata); curl_setopt($curl, CURLOPT_POSTFIELDS, $parametersdata ); } // define headers with the request if (!empty($headers)) { // add headers curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); } // execute $response = curl_exec($curl); // debug is on if (true) { echo $method." ".$url . '<br/><pre>'; print"\n--headers--\n"; print_r($headers); print"\n--parameters--\n"; print_r($parameters); print"\n--parametersdata--\n"; print_r($parametersdata); print"\n--response--\n"; print_r($response); echo '</pre><br/><br/>'; } // get HTTP response code $httpCode = (int) curl_getinfo($curl, CURLINFO_HTTP_CODE); // close curl_close($curl); // response is empty or false if (empty($response)) { //throw new Exception('Error: ' . $response); print "Error: ". $response." ".__LINE__; } // init result $result = false; // successfull response if (($httpCode == 200) || ($httpCode == 201)) { $result = json_decode($response, true); } // return return $result; } $listid = 123; $url = 'tasks'; $tasks = doCall($url,array('list_id' => $listid), 'GET'); echo $tasks; 

- EDIT ADDITION --- I also tried these options if someone is wondering. They all give the same bad_request error

 GET a.wunderlist.com/api/v1/tasks{"list_id":"141329591"} GET a.wunderlist.com/api/v1/tasks{"list_id":141329591} GET a.wunderlist.com/api/v1/tasks/{"list_id":"141329591"} 
+5
source share
1 answer

As Rotem pointed out, you add the $parameters array as CURLOPT_POSTFIELDS . As the name implies, this is for HTTP POST requests only.

Putting parameters as query parameters in $url and passing null for query parameters made your example work for me.

 $listid = 123; $url = 'tasks?list_id=123'; $tasks = doCall($url,null,'GET'); echo $tasks; 

Note. I used list_id, I have access instead of 123

+8
source

All Articles