usaspending-api
usaspending-api copied to clipboard
subawards (optional, boolean) attribute elicits <Response [400]> when True
The subawards attribute, for numerous endpoints tested (such as /api/v2/search/spending_by_award/ and /api/v2/search/spending_by_category/country/) elicits a <Response [400]> when set to True and a <Response [200]> when set to False. Please let me know if this error is able to be solved.
For example (Python):
import requests
url = "https://api.usaspending.gov"
endpoint = "/api/v2/search/spending_by_award/"
payload = {
"subawards": False,
"limit": 10,
"page": 1,
"filters": {
"award_type_codes": ["A", "B", "C"],
"time_period": [{"start_date": "2018-10-01", "end_date": "2019-09-30"}]
},
"fields": [
"Award ID",
"Recipient Name",
"Award Amount",
]
}
response = requests.post(f"{url}{endpoint}", json=payload)
print(response)
prints <Response [200]>
import requests
url = "https://api.usaspending.gov"
endpoint = "/api/v2/search/spending_by_award/"
payload = {
"subawards": True,
"limit": 10,
"page": 1,
"filters": {
"award_type_codes": ["A", "B", "C"],
"time_period": [{"start_date": "2018-10-01", "end_date": "2019-09-30"}]
},
"fields": [
"Award ID",
"Recipient Name",
"Award Amount",
]
}
response = requests.post(f"{url}{endpoint}", json=payload)
print(response)
prints <Response [400]>
The docs are a little unclear on this. This will return Code 400 because "Award ID" does not exist for Subawards. The fields are (instead) "Sub-Award ID" and "Prime Award ID" depending on which you want.
Try sending this:
import requests
url = "https://api.usaspending.gov"
endpoint = "/api/v2/search/spending_by_award/"
payload = {
"subawards": True,
"limit": 10,
"page": 1,
"filters": {
"award_type_codes": ["A", "B", "C"],
"time_period": [{"start_date": "2018-10-01", "end_date": "2019-09-30"}]
},
"fields": [
"Sub-Award ID",
"Prime Award ID"
]
}
response = requests.post(f"{url}{endpoint}", json=payload)
print(response)