Api Call Get/Put Python

Albertus 8 years ago

Good Day

Hope Anyone can help me with Rest Api Calls:

I can Get Data:

import json
import sys
import requests 


url = 'http://domain.co.za'
user = 'admin'
password = 'P@ssword'

payload = {'all': 'true', 'id': 5}
response = requests.get(url + ':8082/api/devices', auth=(user, password), params=payload, timeout=1.000)
data = json.loads(response.content)[0]  

,BUT Struggle to PUT data to traccar with Rest api:

import requests
import json

url = "http://domain.co.za:8082/api/devices/"
user = 'admin'
password = 'P@ssword'

data = {'id': 5, 'disabled': 'false'}
headers = {"Content-Type": "application/json"}

response = requests.post(url, auth=(user, password), headers=headers, data=data)

print(response.text)

Thank You

Albertus Geyser

Anton Tananaev 8 years ago

You have to send full model, not just the fields that you want to change.

Albertus 8 years ago

Could you explain even if on another language?

Anton Tananaev 8 years ago

Your data object should be FULL device, not just two fields.

Albertus 8 years ago

Anton

What am i missing?

import requests
import json

url = "http://domain:8082/api/devices/3"

headers = {'Content-type': 'application/json', 'Accept': 'application/json'}


user = 'admin'
password = 'password'

data={
'attributes':{},
'category':'person',
'contact':'',
'disabled':'true',
'geofenceIds':{},
'groupId':3,
'id':3,
'lastUpdate':'2017-12-23T07:33:37+02:00',
'model':'',
'name':'Child',
'phone':'',
'positionId':6582,
'status':'offline',
'uniqueId':6880010284
}

response = requests.put(url, auth=(user, password), headers=headers, data=json.dumps(data))

datax = response.json()

print(datax)

Thank You

Albertus Geyser

sokha phan 6 years ago

hello

Cris Amende 6 years ago

This code works in Python3
Obviously settings need to adjusted to reflect local situation....

import json
import requests


###Settings####
TCurl = ''			#Server address of traccar system i.e. 'http://demo.traccar.org'
TCportR = ''						#port for traccar system usually ':8082' 
Traccar_user = ''				#User for traccar (user needs to have access to group in where devices are located) 
Traccar_password = ''				#Traccar User password

headers = {'Content-type': 'application/json', 'Accept': 'application/json'}

data={
'id':None,
'name':'RWS 20',
'uniqueId':'SEA-244690995',
'lastUpdate':None,
'positionId':'',
'groupId':15,
'attributes':{},
'phone':'',
'model':'',
'contact':'',
'category':'boat',
'disabled':False,
'status':None
}
response = requests.post(TCurl + TCportR + '/api/devices', auth=(Traccar_user, Traccar_password), headers=headers, data=json.dumps(data))
print (response.content)
print (response.status_code)