-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdebug_api_response.py
More file actions
88 lines (71 loc) · 3.11 KB
/
debug_api_response.py
File metadata and controls
88 lines (71 loc) · 3.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/usr/bin/env python3
"""
Debug script to examine CourtListener V4 API response structure
"""
import os
import requests
import json
from dotenv import load_dotenv
load_dotenv()
def debug_api_response():
api_key = os.getenv('COURTLISTENER_API_KEY')
base_url = 'https://www.courtlistener.com/api/rest/v4/'
headers = {
'Authorization': f'Token {api_key}',
'Content-Type': 'application/json'
}
print("🔍 Testing actual search query structure...")
# Test the exact query that's failing
params = {
'case_name__icontains': 'Roe v. Wade',
'citation__volume': '410',
'citation__reporter': 'US',
'citation__page': '113',
'page_size': 1
}
try:
response = requests.get(f"{base_url}opinions/", headers=headers, params=params)
print(f"Status: {response.status_code}")
if response.status_code == 200:
try:
data = response.json()
print(f"Response type: {type(data)}")
print("\n📋 Full Response Structure:")
print(json.dumps(data, indent=2)[:1000] + "..." if len(json.dumps(data, indent=2)) > 1000 else json.dumps(data, indent=2))
if isinstance(data, dict):
print(f"\n🔑 Top-level keys: {list(data.keys())}")
if 'results' in data:
results = data['results']
print(f"Results type: {type(results)}")
print(f"Results count: {len(results) if hasattr(results, '__len__') else 'N/A'}")
if results and len(results) > 0:
first_result = results[0]
print(f"\n📄 First result type: {type(first_result)}")
if isinstance(first_result, dict):
print(f"First result keys: {list(first_result.keys())}")
else:
print(f"First result content: {first_result}")
except json.JSONDecodeError:
print("❌ Response is not valid JSON")
print(f"Raw response: {response.text[:500]}")
else:
print(f"❌ Error response: {response.text}")
except Exception as e:
print(f"❌ Request failed: {e}")
# Also test a simpler query
print("\n🔍 Testing simpler case name search...")
simple_params = {
'case_name__icontains': 'Roe',
'page_size': 1
}
try:
response = requests.get(f"{base_url}opinions/", headers=headers, params=simple_params)
print(f"Simple search status: {response.status_code}")
if response.status_code == 200:
data = response.json()
if isinstance(data, dict) and 'count' in data:
print(f"Total matches for 'Roe': {data['count']}")
except Exception as e:
print(f"❌ Simple search failed: {e}")
if __name__ == '__main__':
debug_api_response()