Files
plumbing/servicem8-create-webhook-form-response.py

48 lines
1.3 KiB
Python
Executable File

import json
import os
import sys
import requests
BASE_URL = os.getenv('SERVICEM8_BASE_URL', 'https://api.servicem8.com')
ENDPOINT = '/webhook_subscriptions/event'
ACCESS_TOKEN = os.getenv('SERVICEM8_ACCESS_TOKEN', 'smk-ac525b-99c4b96305a49c7c-fe4dd3e705b647ea')
EVENT_NAME = os.getenv('SERVICEM8_EVENT', 'form.response_created')
CALLBACK_URL = os.getenv('SERVICEM8_CALLBACK_URL', 'https://webhook.naroomaplumbing.au/webhooks/servicem8/form-response')
UNIQUE_ID = os.getenv('SERVICEM8_UNIQUE_ID', 'au-dev-form-response')
def pretty_print_json(data):
print(json.dumps(data, indent=2, sort_keys=True))
def create_webhook():
url = f"{BASE_URL}{ENDPOINT}"
headers = {
'X-API-Key': f'{ACCESS_TOKEN}',
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded',
}
form_data = {
'event': EVENT_NAME,
'callback_url': CALLBACK_URL,
'unique_id': UNIQUE_ID,
}
response = requests.post(url, headers=headers, data=form_data, timeout=30)
print(f'HTTP {response.status_code}')
try:
response_json = response.json()
pretty_print_json(response_json)
except ValueError:
print('Response was not valid JSON:')
print(response.text)
sys.exit(1)
if not response.ok:
sys.exit(1)
if __name__ == '__main__':
create_webhook()