Initial commit

This commit is contained in:
2026-04-28 09:44:22 +10:00
commit 87bfe26890
11 changed files with 1252 additions and 0 deletions
+65
View File
@@ -0,0 +1,65 @@
import json
import os
import sys
import requests
BASE_URL = os.getenv('SERVICEM8_BASE_URL', 'https://api.servicem8.com')
ENDPOINT = '/webhook_subscriptions'
ACCESS_TOKEN = os.getenv('SERVICEM8_ACCESS_TOKEN', 'smk-ac525b-99c4b96305a49c7c-fe4dd3e705b647ea')
OBJECT_NAME = os.getenv('SERVICEM8_OBJECT', 'job')
FIELDS = os.getenv('SERVICEM8_FIELDS', 'uuid,status,date,queue_uuid,queue_expiry_date,work_order_date,active,edit_date,generated_job_id')
CALLBACK_URL = os.getenv('SERVICEM8_CALLBACK_URL', 'https://nps-dev.coast2cloud.net/webhooks/servicem8-object')
UNIQUE_ID = os.getenv('SERVICEM8_UNIQUE_ID', 'dev-job-object')
def pretty_print_json(data):
print(json.dumps(data, indent=2, sort_keys=True))
def parse_fields(value):
return [field.strip() for field in value.split(',') if field.strip()]
def create_webhook():
if not ACCESS_TOKEN:
print('SERVICEM8_ACCESS_TOKEN is required')
sys.exit(1)
fields = parse_fields(FIELDS)
if not fields:
print('SERVICEM8_FIELDS must contain at least one field')
sys.exit(1)
url = f"{BASE_URL}{ENDPOINT}"
headers = {
'X-API-Key': ACCESS_TOKEN,
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded',
}
form_data = [
('type', 'object'),
('object', OBJECT_NAME),
('callback_url', CALLBACK_URL),
('unique_id', UNIQUE_ID),
]
for field in fields:
form_data.append(('fields', field))
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()