Initial commit
This commit is contained in:
Executable
+65
@@ -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()
|
||||
Reference in New Issue
Block a user