damar
damar

Reputation: 23

watson machine learning api - token refresh 400 error

I've successfully generated a token with the GET /v3/identity/token API. I now want to be able to leverage the PUT API to keep the token active.

I am trying this curl command:

curl -X PUT --header 'Content-Type: application/json' --header 'Accept: application/json' -d '<token-value>' 'https://ibm-watson-ml.mybluemix.net/v3/identity/token' -v -i --basic --user <username>:<password>

I get a 400 error stating:

For request 'PUT /v3/identity/token' [Invalid Json: Unexpected character ('-' (code 45)) in numeric value: expected digit (0-9) to follow minus sign, for valid numeric value at [Source: akka.util.ByteIterator$ByteArrayIterator$$anon$1@18bd12ef; line: 1, column: 3]]

The token returned from the get request has the dash character in it, along with other non-alphnumeric values.

Does the token from the get request need to be parsed? what am I missing?

Upvotes: 2

Views: 1191

Answers (1)

Sayuri Mizuguchi
Sayuri Mizuguchi

Reputation: 5330

You need to set your content-type to application/json. But -d sends the Content-Type application/x-www-form-urlencoded, which maybe is not accepted on IBM side.

But, seems like your JSON (token) are in the incorrect format.

The token value needs to be the following format (JSON):

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ"
}

And you need to follow the example of sent correctly the format:

curl -H 'Content-Type: application/json' -X PUT \
-d '{"token":"yourToken"}' \
https://ibm-watson-ml.mybluemix.net/v3/identity/token

See the official reference.

Upvotes: 2

Related Questions