ConnectwiseFriends/reportguy.py

67 lines
3.4 KiB
Python

import requests
from dotenv import load_dotenv
import os
pageSize = 10 # Just so I don't have to keep changing stuff
paramFields = 'id,companyName,name,lastInvoiceAmount,nextInvoiceAmount,agreementStatus' # if we neeeed to make multiple similar calls we may as well save some typing
load_dotenv() # make sure to include this avoid troubleshooting why your auth doesn't work for 40 minutes
def apiGetRequest(api_base, endpoint, params, headers):
url = api_base + endpoint
resp = requests.get(url, params=params, headers=headers)
if resp.status_code == 200:
return resp.json()
else:
resp.raise_for_status()
api_base = os.environ["API_BASE"]
authToken = os.environ["AUTH_TOKEN"]
clientId = os.environ["CLIENT_ID"]
endpoint = '/finance/agreementrecap' #endpoint for GET
headers = {'Authorization': authToken, 'clientId': clientId} # DO NOT fill this out and then commit it to the publicly-viewable git repository, please
params = {'pageSize': pageSize, 'conditions': 'agreementStatus="ACTIVE"', 'fields': paramFields} # API call params--prepare to cry if your url encoding is sub-par
data = apiGetRequest(api_base, endpoint, params, headers) #Put it all together and whadya get
for item in data: #This is just iterating through whatever comes back and barfing the data in a readable way
print(f"{item['companyName']} - {item['name']} - {item['agreementStatus']}")
additionsEndpoint = '/finance/agreements/' + str(item['id']) + '/additions'
additions = apiGetRequest(api_base, additionsEndpoint, {'pagesize': pageSize}, headers)
for thing in additions: # Yo dawg I heard you like loops
print(' ' + thing['product']['identifier'] + ' - $' + str(thing['unitPrice']))
###################################################################################
####################### !!! DO NOT DISAPPOINT THE FROG WIZARD !!! #########################
# .-----.
# /7 . (
# / .-. \
# / / \ \
# / ` ) ( )
# / ` ) ). \
# .' _. \_/ . |
# .--. .' _.' )`. |
# ( `---...._.' `---.'_) .. \
# \ `----....___ `. \ |
# `. _ ----- _ `._ )/ |
# `. /" \ /" \`. `._ |
# `. ((O)` ) ((O)` ) `. `._\
# `-- '`---' `---' ) `. `-.
# / ` \ `-.
# .' `. `.
# / ` ` `. `-.
# .--. \ ===._____.======. ` ` `. .___.--` .''''.
# ' .` `-. `. )`. ` ` ` \ .' . ' 8)
# (8 . ` `-.`. ( . ` ` .`\ .' ' ' /
# \ `. ` `-. ) ` . ` ` \ .' ' . ' /
# \ ` `. ` . \`. .--. | ` ) ` .``/ ' // . /
# `. ``. . \ \ .-- `. ( ` /_ ` . / ' . '/ .'
# `. ` \ ` \ \ '-. `-' .' `-. ` . .'/ .'
# \ `.`. ` \ \ ) /`._.` `. ` . .' /
# | `.`. . \ \ (.' `. .' .'
# __/ .. \ \ ` ) \ \.' .. \__
# .-._.-' '" ) .-' `. ( '" `-._.--.
#(_________.-====' / .' /\_)`--..__________..-- `====-. _________)
#####################################################################################