microsoftarchive / api Goto Github PK
View Code? Open in Web Editor NEWThe Wunderlist API Documentation
The Wunderlist API Documentation
How can I use the sockets created in wunderlist sdk js? In IE11, the socket.readyState is always 0 and in Chrome it is 3, so it seems like the socket is never truly open. Any help would be appreciated.
From wunderlist.sdk.js:
'isConnected': function () {
var socket = this.socket;
return !!(socket && socket.readyState === 1);
},
Thanks you,
Jason
Trying to get a note from a task via PHP, but cannot get it to work.
Adding tasks, updating tasks, retrieving lists, and adding a note works flawlessly.
But when is want to get (retrieve) a note for a specific task, I get a 400-Bad-Request.
//result of var_dump($context)
/*
array(1) {
["http"]=>
array(3) {
["method"]=>
string(3) "GET"
["header"]=>
string(178) "X-Client-ID: /* XXXXXMY-CLIENT-IDXXXXX */
X-Access-Token: /* XXXXXXMY-ACCESS-TOKENXXXX */
Content-Type: application/json; charset=utf-8
Content-Length: 22"
["content"]=>
string(22) "{"task_id":1234567890}"
}
}
*/
then i use
$url = 'https://a.wunderlist.com/api/v1/notes';
$result = file_get_contents($url, false, stream_context_create($context));
return json_decode($result, true);
It returns:
Warning: file_get_contents(https://a.wunderlist.com/api/v1/notes): failed to open stream:
HTTP request failed! HTTP/1.1 400 Bad Request
in /home/.../public_html/wunderlist/wunderlist.php on line 90
Something i'm missing?
I played around with webhooks for some time and created a small application which I deployed on heroku, everything worked liked expected. When I moved the application to my own server, I did not receive the webhooks anymore. I am still able to communicate with the API and are able to create and receive new webhooks e.g. with a URL pointing to a Runscope Bucket, but if I add my own domain as URL, the webhook is created, but I do not receive any call when updating the corresponding list.
If I forward the request with Runscope, my application receives and handles the webhook, so my endpoint should be working correctly. According to my server logs there are no https or http calls coming from wunderlist, even though there are webhooks registered with the correct URL pointing to my application.
Now I am wondering if a domain first needs to be white listed or similar before receiving webhooks, since heroku.com and runscope.com are well known services but my domain is of course not.
Thanks a lot for your help!
edit
I managed to receive webhooks when I change the URL to http:// instead of https://. Is it possible that you do not trust SSL certificates from StartSSL?
Is there a way to find out if a user has a Pro account or not? I can't see anything on the user endpoint.
Hi,
i'm tryin to access the Wunderlist-API via PHP.
I modify an existing PHP-Class: https://github.com/jeroendesloovere/wunderlist-php-api
I do an Authenticate-Call via PHP/Curl and i'm gettin a access-token.
But when i try to get my lists, i'm just gettin an error for https://a.wunderlist.com/api/v1/lists :
_{"error":{"type":"server_error","translation_key":"api_error_unknown","message":"An unknown server error occurred","authentication":["missing"]}}
_
I set the accees-token and the Client-ID in the header.
Is there any PHP-Api which i can use instead?
Or is the anyone, who can help?
Would be awesome - Thank You!
(robdimsdale https://disqus.com/by/robdimsdale/ reports)
It appears that list_id is not presented in the returned JSON for the files/file endpoints, as it is described in the above documentation. Other files like task_id and user_id are present.
Example curl as follows:
curl
-H "X-Access-Token: $WL_ACCESS_TOKEN"
-H "X-Client-ID: $WL_CLIENT_ID"
https://a.wunderlist.com/api/v...
Hello, i want update reminder for task in Wunderlist. Use Wunderlist Api:
curl -H "Content-Type: application/json" -H "X-Access-Token: xxx" -H "X-Client-ID: xxx" a.wunderlist.com/api/v1/reminders/12345 -X PATCH -d '{"revision":1,"date":"2015-11-25T16:49:23"}'
and respone:
{"error":{"type":"not_found","translation_key":"api_error_not_found","message":"The resource you requested could not be found."}}
Hi,
please give an example of https://github.com/wunderlist/api/blob/master/endpoints/membership.md#remove-a-member-from-a-list
becase I think this method doesn't work properly. Flow:
I do request:
curl -A '' -v -X DELETE -H 'Content-Type: application/json' -H 'X-Access-Token: 94c0f5ad8a3cb4a056d25f5a63ad3d4101fa7dbcdeb78ef800e4b56776e6' -H 'X-Client-ID: 571f65134fef345aaedb' -d '{"revision":3}' https://a.wunderlist.com/api/v1/memberships/123
and server returns:
{"error":{"type":"missing_parameter","translation_key":"api_error_missing_params","message":"Missing parameter.","revision":["required"]}}
Best regards,
Maciej
Just a short question. Can I access the api with the free version?
Thanx.
Until a few days ago I could provide a port number as part of the redirect_ui parameter. As of today this i not working. I have a local desktop application that depends on being able to redirect the authentication back to http://loalhost:8094/oauth.
This was again working until recently and it appears that your server side redirect is removing the port information from the redirect.
How can I get back this functionality?
I'm having trouble authenticating with your API. I've registered an app and am following the directions found here.
I'm redirecting users to this URL:
https://www.wunderlist.com/oauth/authorize?client_id=5e545e44e8cdc3ecd428&http://localhost:3000/&state=derp
However this returns an error "Forbidden":
What am I doing wrong?
Thanks for the help - Jacob
As far as I can tell there is no way to restrict the output of https://a.wunderlist.com/api/v1/users to a single user -- I want to do this as I'm processing event data via a webhook and I'd like to convert the user_id to a name without retrieving all the users.
As suggested by Eric Mutta in https://disqus.com/home/discussion/wunderlistdeveloper/wunderlist_developer_38/#comment-2164292599
You should probably update these docs to indicate that one can get the Access Token on the MY APPS page of Wunderlist.com - this is SOOOO MUCH EASIER than doing the OAuth dance: a user just logs in, generates the access token then pastes it into the relevant app (in my case a client-side desktop app with no server-side component to supply the redirect URL).
@tobstarr @i0rek @chadfowler for stuff like that it would be good to support urn:ietf:wg:oauth:2.0:oob as described here:
https://developers.google.com/identity/protocols/OAuth2InstalledApp
(via https://twitter.com/tobstarr/status/658932793934749696)
https://developer.wunderlist.com/documentation/endpoints/webhooks
Create a Webhook
POST a.wunderlist.com/api/v1/webhoooks
There are three o's there (caused me three hours of pain:)
The PATCH a.wunderlist.com/api/v1/tasks/:id
doesn't seem to accept a list_id
parameter.
Is there a (proper) way to move a task to another list, without deleting it from one list and re-creating in another?
When going to https://developer.wunderlist.com/apps and using the following data:
Name: Zeus
Description: Something something sync
App img: none
App url: https://developer.wunderlist.com
Auth callback url: wunderlist://
then I get redirected to a page, which says:
"We're sorry, but something went wrong."
"If you are the application owner check the logs for more information."
Confirmed on Firefox and Chrome
Have a great day
Hi
I tried APIs, and found
All "starred" items in returned JSON were every time false.
Set true for "starred", however ignored every time (not starred).
Hiro
Hi there, i'm trying to use the upload api but couldnt get it worked.
Can someone help me. My code looks now like this:
Set FILE=C:\Users\..\Documents\..\tmp\tmp.jpg Set CLIENT-ID=.. Set OAUTH-TOKEN=.. call :setsize %FILE% curl -h "X-Access-Token: %OAUTH-TOKEN%" -H "X-Client-ID: %CLIENT-ID%" -H "file_name: tmp.jpg" -h "file_size: %SIZE%" -d "@%FILE%" -H "Content-Type: application/json" -H "content_type: image/jpg" -X POST https://a.wunderlist.com/api/v1/uploads
Tried everything I know, but nothing worked, always a 400 :(.
Using curl on a windows desktop.
Hi,
As part of the integration with www.gotdone.me (a time tracking assistant), I'm looking for a way to display the activity log of a user.
Typically, this would include things like the user...
Is this something that's currently possible? Or would the best approach perhaps be to look at the webhook API?
Hey,
I am using your api to connect my android app users. the problem is i want to deeplink them back to my app once auth is done but redirect link can only be a real link "http" or "https" and not some deeplinking scheme used only by me.
Do you have a solution for android integration?
Thanks
I need to be able to figure out which folder a list is in. When using the /lists
or /lists/:id
endpoint, the returned data does not include a folder
property. I see that I can query /folders
and iterate over the folders to figure out which one contains the list.
My question is, am I missing something in the API that makes it easier to find a list's folder? If not, would it be possible to add the folder property to data returned by the /lists
endpoint?
Hello, im using your API in my application and i have got an issue. All the API commands work fine, except the one with DELETE. After exactly 3 deletes, im getting stuck with timeout errors. Is there any limits on delete tasks? If yes: is there any way to avoid them? Thanks.
In our integration of Wunderlist with HipChat we allow a task to be completed by a / command -- /wunderlist complete .
At the point at which we make the REST call to Wunderlist we may be able to map the HipChat user to a Wunderlist user, but as far as I can tell there is no way to ask Wunderlist to consider the command as coming from a particular user -- just the user who originally authorised the integration's access to Wunderlist.
That is, I'd like the 'client.user_id' in the resulting webhook call to match what I gave. (I could record some state and match it up when I get the webhook, but I'd prefer a simpler solution)
Am I missing a way to do this?
On sending invalid token, getting error 400 "BadRequest". Is it supposed to be so?
Also, what is lifetime for token and what kind of error i should expect on try using expired one?
Thanks.
There appears to be an endpoint on the Wunderlist API for deleting a task-comment which does not appear in the official docs
Existing task comments can be deleted by sending a DELETE request to it, e.g. :
curl
-H "X-Access-Token: $WL_ACCESS_TOKEN"
-H "X-Client-ID: $WL_CLIENT_ID"
-XDELETE
https://a.wunderlist.com/api/v1/task_comments/12345?revision=1
Assuming the data is valid, this returns with HTTP 204.
Is this endpoint supported?
Reported by Eric Mutta: (https://disqus.com/by/ericmutta/) Does the assigner_id field still apply? I can't seem to get it when retrieving tasks (but assignee_id works as expected).
Unfortunately, this was removed from our API but not from the documentation.
Hi,
This is something which is hampering our development for quite some time now, so I wanted to raise an issue for this again. We are syncing tasks using the API, and we stumbled upon the following.
When creating a sub-object of a to-do (like a subtask), the revision of the to-do is updated in a non-synchronous manner. Our sync logic syncs changes to Wunderlist, and afterwards retrieves the to-do once again, to have the correct newest revision (we don't want to / can't calculate the increase locally, since this might change). In our JS code this looks something like this:
function testConcurrency() {
//Get current version of to-do 1312766152
wunderlistGetData(wunderlist.baseUrl + '/tasks/1312766152')
.then(function (todo) {
console.log('Original Revision:' + todo.revision);
//Add a new subtask
return wunderlistAjaxData(wunderlist.baseUrl + '/subtasks', yasoon.ajaxMethod.Post, JSON.stringify({ task_id: 1312766152, title: 'Subtask' + new Date().getTime() }));
})
.then(function (subtask) {
console.log('Created Subtask: ', subtask);
//Retrieve the to-do again
return wunderlistGetData(wunderlist.baseUrl + '/tasks/1312766152');
})
.then(function (newTodo) {
//Will still print the old revision
console.log('New Todo Revision: ' + newTodo.revision);
});
}
We are currently introducing a delay of ~1 second to cope with that behavior, but that still seems very hacky. Could you check if there is the possibility to fix this?
Thanks
Tobi
I'm trying to figure out how to get the most typical set of tasks owned by or assigned to a user. That means all tasks in un-shared lists and tasks assigned to the user in shared lists.
As of this writing, the example reply for the lists API call doesn't cover owner_type
, which seems to indicate whether a list is shared. The example response for the tasks API call mentions assignee_id
, but doesn't describe the meaning of a nil
value or the key not being present at all. After some investigation, I see that assignee_id
is not present in some cases, and I'm currently inferring that means that it's in an un-shared list. That's just a guess, though.
Given that there's no API call to request all tasks owned by or assigned to the API key owner, the next best thing would be documenting how to tell the sharing status of a list. Memberships shows ownership, but doesn't seem to show enough to infer task ownership for cases where assignee_id
is not present or nil
.
i am just using cygwin curl, and i have been able to create and update tasks with similar curls, but the delete task method just returns a missing parameter (revision). I have been sending the revision the same way as the other methods i have working... The revision id is correct.
Sample curl...
curl -H "Content-Type: application/json" -H "X-Access-Token: secret" -H "X-Client-ID: nottelling" -X DELETE -d '{"revision": 2}' https://a.wunderlist.com/api/v1/tasks/123
spits back a 400
{"error":{"type":"missing_parameter","translation_key":"api_error_missing_params","message":"Missing parameter.","revision":["required"]}}
The documentation for webhooks doesn't list which actions trigger a webhook call. For instance, my webhook seems to get called in these cases (and there may be more, but these are the ones I've observed):
However, there is no call for these actions:
A common use case for end-user authentication in apps is establishing a single-request web server to receive the authentication token from the Wunderlist API authorization. For example, a developer might have the server listen on port 6200 providing a callback URL such as http://localhost:6200
in the Wunderlist config. This may not be possible on every platform, but where it is possible, it is an extremely convenient way to access the token after authentication.
However, it is impossible to guarantee that a specific predetermined port number will be available on all end-user machines. For example, if another application is already listening on port 6200, the developer may advance the port number to 6201, 6300, 7200, etc. until an open port is discovered. Currently this is of no use with the Wunderlist API since the callback hostname and port must match exactly.
It would be excellent to be able to specify http://localhost
as the callback in the API and then respond with the actual callback url specified in the request provided that it is localhost or some port on localhost. This would maintain the ability to keep the token delivery directly between Wunderlist and the end-user machine while supporting cases where the default port is in use.
Dynamic ports in OAuth callbacks are not unprecedented; the Google OAuth 2.0 API has a special provision for localhost allowing any port.
It would be possible to set up a public static URL to receive the token in the callback and then in turn make a request to localhost (CORS, JSONP script tag, img tag, or some other means that would allow notification of success/failure without browser security issues). This would require a known sequence of ports that the application would attempt to open. If localhost:6200
fails, try localhost:6201
.
This is certainly an inferior approach as it requires more work and injects a middleman receiving and then transmitting the token. Additionally, the services listening on those in-use ports may not be robust enough to handle the unexpected data or may even return a successful response before the algorithm hits the actual token handling server.
Hopefully an application server under the developer's control is capable of receiving tokens on a dedicated port. It is easily justifiable that outside of localhost (which may also be specified as a loopback IP 127.0.0.1—technically 127.0.0.0/8—on IPv4 and ::1 on IPv6), allowing any port within the given public hostname is quite dangerous.
I can't get this to work with the optional list_id parameter. Can you give an example ?
Just a quick note: On the folder docs:
https://developer.wunderlist.com/documentation/endpoints/folder
"Updating a folder by overwriting properties" says it requires parameters, but that doesn't work for me. Instead, including the request with these parameters as data works fine, so that's likely just a typo on that page.
I'm successfully getting other webhook events -- including deleting files, subtasks and comment, but when I delete a task I don't see an event.
In the Delete Folder call, the revision is required to be a string, whereas throughout the rest of the API it is an int. I presume this is a bug?
Edit: is this because I shouldn't use Delete Folder, I should just empty the folder and it's auto-deleted? In that case, this should get removed from the API docs:
https://developer.wunderlist.com/documentation/endpoints/folder
Jos Koomen (https://disqus.com/by/disqus_JDjbwQNSdI/) reports
What is the best practice to see if a list still exists? Web hooks seems not to be triggered when deleted. If I have a list reference and I remove the list inside the wunderlist app, my own app won't know about this unless I call the get list or root methods. Is this the right way?
For some purposes, it's not necessary to have a write-enabled token, and a read-only one would be enough.
I did not see that on the documentation.
Is it although available maybe in beta form, or planned?
Per Kevin (https://disqus.com/by/mieubrisse/)
EDIT: It looks like these two bugs are tied together. Using the creation endpoint yields a note with no creation information, but the empty note that replaces my note when I call the DELETE endpoint does have a 'created_by_request_id' attribute.
(robdimsdale https://disqus.com/by/robdimsdale/) reports
There appears to be an endpoint for updating the user which does not appear on this page. User information can be updated by sending a
PUT
request to it, e.g. :
curl \
-H "X-Access-Token: $WL_ACCESS_TOKEN" \
-H "X-Client-ID: $WL_CLIENT_ID" \
-H "Content-Type: application/json" \
-XPUT -d '{"revision":1234,"name":"some-name"}' \
https://a.wunderlist.com/api/v...
Assuming the data is valid, this returns with
HTTP 200
.Is this endpoint supported?
I have a problem with the authorization concept described here: https://developer.wunderlist.com/documentation/concepts/authorization
I.e. after granting access to my application once, all other subsequent calls to the URL from "1" (https://www.wunderlist.com/oauth/authorize?client_id=ID&redirect_uri=URL&state=RANDOM) return a "403 - Forbidden".
I am unable to get user of a list (who already accepted),with this call(Fetch the users this user can access iam querying with listid)
Iam geeting internal server error - 500
Without listid it is working fine,but I want the list of user for a particular task list
Can I set recurring reminders, for example if I have a task which I need to perform daily, and I need to add daily reminders?
In the Webhook Docs it is stated that the URL to create a new webhook is:
POST a.wunderlist.com/api/v1/webhoooks
But instead it should be:
POST a.wunderlist.com/api/v1/webhooks
When I try to create a new task I get the following response:
{"error":{"type":"permission_error","translation_key":"api_error_permission_error","message":"You've not enough permissions.","permissions":"failed"}}
Status code is 404.
Here's the code that send the request (Google apps script):
function addTask(title) {
var url = 'https://a.wunderlist.com/api/v1/tasks';
var service = getWunderlistService();
var response = UrlFetchApp.fetch(url, {
headers: {
'X-Access-Token': service.getAccessToken(),
'X-Client-ID': clientId,
'Content-Type': 'application/json'
},
method: 'post',
payload: JSON.stringify({
list_id: 137315112,
title: title
})
});
var result = JSON.parse(response.getContentText());
Logger.log(response.getContentText());
}
Any ideas on what I'm doing wrong?
When I add a new task via the web api it goes on the bottom of the list. When I add a new task via the UI it goes on the top of the list. I wish that the web api behaved like the UI.
Thanks for the awesome product!
Hi, i implemented wunderlist api with php and everythings work fine. Excepting the response time when loading tasks or list or any action to get data from api it take around 1 minute.Does it properly response time? Any suggestion would be appreciate.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.