Question

Can't update record with APIv2

  • Posted November 8, 2014

Hi there I’m using this script to update a record in “data” field, but it wont change anything .

PUBLIC_IP=`curl -s http://icanhazip.com`                                                                                                                                
echo "TOKEN $TOKEN"  
IP="$PUBLIC_IP"
echo "IP $IP"                                                                                                                                                           
curl -X PUT -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" -d '{"data":"$IP"}' "https://api.digitalocean.com/v2/domains/$DOMAIN/records/$RECORD" 
curl -X GET -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" "https://api.digitalocean.com/v2/domains/$DOMAIN/records/$RECORD"                     

It gives me this error

IP 181.66.127.36
{"id":"unprocessable_entity","message":"IP address did not match IPv4 format (e.g. 127.0.0.1)."}{"domain_record":{"id":3304482,"type":"A","name":"periquita","data":"23.95.118.100","priority":null,"port":null,"weight":null}}

And if I execute withour qoutes around $IP, like this:

curl -X PUT -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" -d '{"data":$IP}' "https://api.digitalocean.com/v2/domains/$DOMAIN/records/$RECORD" 

goes straigt but no changes.

Subscribe
Share

Submit an answer
You can type!ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

You need to escape the quotes in the JSON string so that they don’t get parsed by bash:

curl -X PUT -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" -d '{\"data\":\"$IP\"}' "https://api.digitalocean.com/v2/domains/$DOMAIN/records/$RECORD"