def request_analytics_report(token, app_id): url = 'https://api.appstoreconnect.apple.com/v1/analyticsReportRequests' headers = { 'Authorization': f'Bearer {token}', 'Content-Type': 'application/json' } payload = { "data": { "type": "analyticsReportRequests", "attributes": { "accessType": "ONGOING" }, "relationships": { "app": { "data": { "type": "apps", "id": app_id } } } } } response = requests.post(url, headers=headers, json=payload) if response.status_code == 201: report_id = response.json()['data']['id'] return response.json(),report_id else: return Exception(f"Failed to request reportxx: {response.status_code} {response.text}") def read_analytics_report(token, app_id, report_id): url = f'https://api.appstoreconnect.apple.com/v1/analyticsReportRequests/{report_id}/reports' headers = { 'Authorization': f'Bearer {token}', 'Content-Type': 'application/json' } payload = { "data": { "type": "analyticsReportRequests", "id": report_id, "attributes": { "accessType": "ONGOING" # "name": "App Store Discovery and Engagement Detailed", # "category": "APP_STORE_ENGAGEMENT" }, "relationships": { "app": { "data": { "type": "apps", "id": app_id } } } } } response = requests.get(url, headers=headers, json=payload) if response.status_code == 200: # report_id = response.json()['data']['id'] # return response.text target_name="App Sessions Standard" data = response.json() for report in data["data"]: if report["attributes"]["name"] == target_name: target_id = report["id"] break return response.text,target_id else: return Exception(f"Failed to request reportttttttt: {response.status_code} {response.text}") def read_instances_of_report(token, app_id, report_id): url = f'https://api.appstoreconnect.apple.com/v1/analyticsReports/{report_id}/instances' headers = { 'Authorization': f'Bearer {token}', 'Content-Type': 'application/json' } payload = { "data": { "type": "analyticsReportRequests", "id": report_id, "attributes": { # "accessType": "ONGOING", # "granularity": "DAILY" }, "relationships": { "app": { "data": { "type": "apps", "id": app_id } } } } } response = requests.get(url, headers=headers, json=payload) if response.status_code == 200: # report_id = response.json()['data']['id'] return response.json() else: return Exception(f"Failed to request report: {response.status_code} {response.text}") app_id = '' # Replace with your app ID # Attempt to create a new analytics report request report_data = request_analytics_report(token, app_id) print("Report ID:",report_data[1]) read_report = read_analytics_report(token, app_id, report_data[1]) # print(read_report[0]) print("Target ID:", read_report[1]) read_instance = read_instances_of_report(token, app_id, read_report[1]) print(read_instance)