diff --git a/cotality.py b/cotality.py new file mode 100644 index 00000000..43f9afea --- /dev/null +++ b/cotality.py @@ -0,0 +1,73 @@ +import requests +import json + +TOKEN = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik1EUTRNRU5GUTBVNU9FUXpOelk1TVRFME0wUkdOMFpFUkRoR1JVVkJNVGMxT1RFNFJERXlPQSJ9.eyJodHRwOi8vZW1haWwiOiJzZWJhc3RpYW5Ab3Ntb3Npcy1hY2QuY29tIiwiaHR0cDovL2NsdWsudG9rZW4vbGFzdFBhc3N3b3JkQ2hhbmdlIjoiMjAyNS0wOC0yNlQwOTo1NDoyNi4zMjZaIiwiaHR0cDovL2NsdWsudG9rZW4vY29ubmVjdGlvbiI6ImVUZWNoSUQiLCJodHRwOi8vY2x1ay50b2tlbi9zdHJhdGVneSI6ImF1dGgwIiwiaHR0cDovL2NsdWsudG9rZW4vc3RyYXRlZ3lUeXBlIjoiZGF0YWJhc2UiLCJpc3MiOiJodHRwczovL2V0ZWNoaWQuZXUuYXV0aDAuY29tLyIsInN1YiI6ImF1dGgwfDY4YWQ4NDUyZDI2YzI1ZmMyMzkwZmYxYSIsImF1ZCI6WyJodHRwczovL3Bhc2h1Yi5hcGkuZXRlY2gubmV0IiwiaHR0cHM6Ly9ldGVjaGlkLmV1LmF1dGgwLmNvbS91c2VyaW5mbyJdLCJpYXQiOjE3NzMyMzc4MjQsImV4cCI6MTc3MzI0NTAyNCwic2NvcGUiOiJvcGVuaWQiLCJhenAiOiJEaVp6d3VVaTVkVmozOXR3NG00bWZ6emZvRm5MdmVLZyJ9.mkkxeZiD_ByHY4TJKpLQ-trmeGs15s0ekL6u1n-ek9j-EzNyf6qalEHCyHf8gzdNhU_vay96bIOMRHp4vXFaLqSANwKZayIS3EoA_b9-u2FAZpooxEvReAMNJGoZ6WLD01AQXWv-l7ww1ZqAnQzw0moL_Oma6hVmA5oa-RJKJ3MerS7e0Wei97Db48E140-EAbQf2iPcKYYtCNRA4il6n8DFiqGeoUMGo99jkR1ceZAvMpOAj8RhKX-4qSiDfX6yXUS2G96U5m7S_GWI-DEj5TazkN10Af3TyOY3EVjmZoJcRpiAR4cFmlfcTydjrShU03DWmPZm1QItf2McxfCpNA" + +base = "https://pashub.net/api" + +headers = {"Authorization": f"Bearer {TOKEN}", "Accept": "application/json"} + +company_id = "cb5249e2-8f31-4ef4-aefd-08ddaccb1fa2" + +# 1️⃣ get jobs +params = { + "pageIndex": 0, + "pageSize": 20, + "orderBy": "createdUtc", + "orderDesc": "true", + "addressUprn": "100061885568", + "companyId": company_id, +} + +r = requests.get(f"{base}/jobs", headers=headers, params=params) + +payload = r.json() + +property_id = payload["results"][0]["id"] + +print("JOB:", property_id) + +# 2️⃣ get evidence list +r = requests.get(f"{base}/jobs/{property_id}/evidence", headers=headers) + +print(r.status_code) + +evidence = r.json() + +print(evidence) + + +# 3️⃣ get evidence metadata + +if evidence: + evidence_id = evidence["results"][0]["fileId"] + + meta_url = f"https://pashub.net/api/jobs/{property_id}/evidenceMetadata" + + meta_params = {"evidenceIds": evidence_id} + + r = requests.get(meta_url, headers=headers, params=meta_params) + r.raise_for_status() + + meta = r.json() + + container = meta["containerName"] + blob_uri = meta["blobUri"] + + file = meta["files"][0] + file_id = file["fileId"] + file_name = file["fileName"] + + base, sas = blob_uri.split("?", 1) + + download_url = f"{base}{container}/{file_id}?{sas}" + + print("Download URL:", download_url) + + pdf = requests.get(download_url) + pdf.raise_for_status() + + with open(file_name, "wb") as f: + f.write(pdf.content) + + print("Saved:", file_name)