I have been trying to work on a Zapier process that updates an existing Float time off record. I have everything I need to update the submission from previous steps, but I am unable to update the submission from Zapier, while executing a similar script locally does work.
The Python code I run locally is the following:
import requests
import json
API_KEY = 'the_api_key'
BASE_URL = 'https://api.float.com/v3'
EMPLOYEE_ID = '1234'
BEGIN_DATE='2024-01-01'
END_DATE='2024-01-10'
TIME_OFF_ID = '123'
HOURS='8'
updated_time_off_data = {
'timeoff_id': TIME_OFF_ID,
'start_date': BEGIN_DATE,
'end_date': END_DATE,
'timeoff_notes': 'Updated vacation details',
'people_ids': [EMPLOYEE_ID],
'hours': HOURS
}
endpoint = f"{BASE_URL}/timeoffs/{TIME_OFF_ID}"
headers = {
'Authorization': f"Bearer {API_KEY}",
'Content-Type': 'application/json'
}
try:
response = requests.patch(endpoint, headers=headers, data=json.dumps(updated_time_off_data))
response.raise_for_status()
updated_data = response.json()
print(f"Updated time off data for ID {TIME_OFF_ID}:")
print(json.dumps(updated_data, indent=4))
except requests.exceptions.HTTPError as http_err:
print(f"HTTP error occurred: {http_err}")
except Exception as err:
print(f"An error occurred: {err}")
But the following code in Zapier Webhooks does not work:
import requests
import json
timeoff_id = input_data.get('TIMEOFF_ID')
start_date = input_data.get('START_DATE')
end_date = input_data.get('END_DATE')
employee_id = input_data.get('EMPLOYEE_ID')
hours = input_data.get('HOURS')
api_key = input_data.get('API_KEY')
base_url = input_data.get('BASE_URL')
updated_time_off_data = {
'timeoff_id': timeoff_id,
'start_date': start_date,
'end_date': end_date,
'timeoff_notes': 'Updated vacation details',
'people_ids': [employee_id],
'hours': hours
}
endpoint = f"{base_url}/timeoffs/{timeoff_id}"
headers = {
'Authorization': f"Bearer {api_key}",
'Content-Type': 'application/json'
}
print(f"Updated time off data: {updated_time_off_data}")
print(f"Endpoint: {endpoint}")
try:
response = requests.patch(endpoint, headers=headers, data=json.dumps(updated_time_off_data))
response.raise_for_status()
updated_data = response.json()
return {'message': updated_data}
except requests.exceptions.HTTPError as http_err:
error_message = f"HTTP error occurred: {http_err}"
print(error_message)
return {'error': error_message}
except Exception as err:
error_message = f"An error occurred: {err}"
print(error_message)
return {'error': error_message}
I receive the following error:
Error HTTP error occurred: 404 Client Error: Not Found for url: https://api.float.com/api/v3/timeoffs/123
Updated time off data: {'timeoff_id': '123', 'start_date': '2024-01-01', 'end_date': '2024-01-10', 'timeoff_notes': 'Updated vacation details', 'people_ids': ['1234'], 'hours': '8'}
Endpoint: https://api.float.com/api/v3/timeoffs/123
HTTP error occurred: 404 Client Error: Not Found for url: https://api.float.com/api/v3/timeoffs/123
Anything that I'm missing here? Any help is greatly appreciated. Let me know if you would like more information.
It seems like the example that you run locally is using https://api.float.com/v3
as the base_url
while the Zapier error message shows that it's using https://api.float.com/api/v3
instead, which might be the reason it's failing.