I have been trying for hours the following simple CURL command described in the documentation without any success. It always returns me a 401 unauthorized.
curl -D- -u "email:password" -X GET -H "Content-Type: application/json" https://textmaster.jira.com/rest/api/2/issue/TM-3450
I have checked that my confluence config has the "allow remote api calls" set to true. What should I do to make this work?
Note: I'm able to access the rest API from the browser directly, while logged in with my user account.
Note: It's a linked google account with a password set.
Silly question but your email is your username? if not then your command should be replaced with JIRA username. Also since your connection is https but -k at the end of the URL and try again
curl -D- -u "username:password" -X GET -H "Content-Type: application/json" https://textmaster.jira.com/rest/api/2/issue/TM-3450 -k
Also if that is not the case then you can try other authentication technique like Oauth.
I just wanted to add a comment because I skipped by this answer and then kept looking for a while before realizing this was the correct answer. Even though I login to confluence with `email@example.com`, that is not the username to user when authenticating against the api. Against the api, I have to use `nate` as the username.
This can't be stated enough. The API docs aren't clear and make it sound like the website authentication is exactly the same as the rest API authentication. The website works with both username and email as the "username" while the rest API only works with username. You can see your "username" by viewing your profile in JIRA.
My username is also my email address but Jira won't allow me to change the username to a new username. So what can I do to make my authentication API work?
Let say my email address is "firstname.lastname@example.org", can I send my authentication as:
curl -D- -u "nguyen7744:password1234" -X GET -H "Content-Type: application/json" https://textmaster.jira.com/rest/api/2/issue/TM-3450
If that won't work then how can I change my current username (email@example.com) to a new username? Or I need to contact JIra's support?
So i was struggling with this for about 2 days, and none of those answers worked for me.
I was able to query the api using my personal username:password but not the account that will be used in the automations, as it returned every time authentication_failed with a 401.
We use google accounts, but i found that i was able to log in using my username instead of my email, but the automation account was not able to, so that's why basic auth was failing every time.
In the end what i did to solve it was to login with the user in jira, check it had the correct permissions to what i wanted, then create an api token in the user profile.
Then i was finally able to query the api using curl with -u email:apitoken endpoint
I post it here just in case anyone else is having this same problem.
Faced the same issue and found the solution (as of June 2018).
The username IS the full email.
The password is NOT your password to login, but an API token. To generate an API token, go to https://id.atlassian.com/manage/api-tokens# and create a new one.
So the username is the full email and the password is the API token from above step for using basic auth with Jira API.
Note that if you are logging in via a sync Google account, it is NOT the google password you are supposed to use. Also it is not the email.
Instead you should go to your user profile and look up your username and set a password.
For site admin functions, RSS feeds, REST API access, or WebDAV uploads you'll need to have an Atlassian Cloud password (separate to your Google Apps password. If you haven't set an Atlassian Cloud password, go to the login page and choose Unable to access your account? in the Atlassian Cloud login section.
Of course it makes no sense that this information is not available on the REST API documentation page, since it is quite crucial to get it working.
@Joakim Söderberg: The link you provided is now is dead. what username should we use please ? (at the jira interface we do use the email (gmail account) and the password to get in) , but using basic auth, when we send email and the token provided by jira, but it doesnt work
whet username should we use? where can we find it?
I was facing a similar issue too. In case if someone trying to access the data using HttpWebRequest instead of curl, remember to base64 the credentials.
string Token = email + ":" + apiToken;
Token = Convert.ToBase64String(UTF8.GetBytes(Token));
req.Headers.Add("Authorization", "Basic " + Token);
I also faced this issue like others. I was able to successfully use my email with the rest api and then I created a new api token in https://id.atlassian.com/manage/api-tokens I used the openssl command like this:
printf firstname.lastname@example.org:mypassword | openssl base64
For basic authentication to work you can't have a newline character so that is why I used printf to basic 64 encode, then you can make a rest call like this:
GET /rest/api/2/user?username=myusername HTTP/1.1
Authorization: Basic bXl1c2VybmFtZUBkb21haW4ubmV0Om15cGFzc3dvcmQ=
Connect with like-minded Atlassian users at free events near you!Find an event
Connect with like-minded Atlassian users at free events near you!
Unfortunately there are no Community Events near you at the moment.Host an event
You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events