Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Added

- **Award announcements** (Tango API 5.14.0). Two methods over the new `/api/news/award_announcements/` resource: `list_award_announcements()` and `get_award_announcement()` (by `uuid`), plus `AwardAnnouncement` and `AwardAnnouncementAwardee` schemas and the `AWARD_ANNOUNCEMENTS_MINIMAL` and `AWARD_ANNOUNCEMENTS_COMPREHENSIVE` shapes, including the `awardees` and `organization` expands. Each row names its `source`: `official_release` rows are the Department of War's daily contracts release as published, and `makegov_generated` rows are written by MakeGov from FPDS data with a language model and are not government text. Filter by text, source, agency, dates, amount, contract number, awardee and flags, and order by `published_date`, `amount` or `rank`. Withdrawn announcements are hidden from lists unless `include_withdrawn=True`.
- **`alerts.award_announcement.match` is an alertable event type** (Tango API 5.14.0). `create_webhook_alert(query_type="award_announcement", ...)` works.

### Changed

- Re-vendored `contracts/filter_shape_contract.json` (Tango API 5.14.0).

## [1.21.0] - 2026-10-29

### Added
Expand Down
13 changes: 12 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ A modern Python SDK for the [Tango API](https://tango.makegov.com) by MakeGov, f

- **Dynamic Response Shaping** - Request only the fields you need, reducing payload sizes by 60-80%
- **Full Type Safety** - Runtime-generated TypedDict types with accurate type hints for IDE autocomplete
- **Comprehensive API Coverage** - All major Tango API endpoints (contracts, IDVs, OTAs, entities, forecasts, opportunities, notices, grants, protests, webhooks, and more)
- **Comprehensive API Coverage** - All major Tango API endpoints (contracts, IDVs, OTAs, entities, forecasts, opportunities, notices, grants, protests, award announcements, webhooks, and more)
- **Flexible Data Access** - Dictionary-based response objects with validation
- **Modern Python** - Built for Python 3.12+ using modern async-ready patterns
- **Production-Ready** - Comprehensive test suite with VCR.py-based integration tests
Expand Down Expand Up @@ -263,6 +263,17 @@ protests = client.list_protests(source_system="gao", outcome="Sustained", limit=
protest = client.get_protest("CASE_UUID")
```

### Award Announcements

```python
announcements = client.list_award_announcements(source="official_release", amount_min=100000000, limit=25)
announcement = client.get_award_announcement("ANNOUNCEMENT_UUID")
```

Each row names its `source`.
`official_release` rows are the Department of War's daily contracts release as published.
`makegov_generated` rows are written by MakeGov from FPDS data with a language model and are not government text.

### GSA eBuy

```python
Expand Down
260 changes: 180 additions & 80 deletions contracts/filter_shape_contract.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"meta": {
"api_version": "5.13.0",
"api_version": "5.14.0",
"description": "Canonical API filter/shape contract. Downstream consumers (SDK, MCP) should validate their conformance against this manifest.",
"schema_version": 2
},
Expand Down Expand Up @@ -9039,64 +9039,6 @@
},
"swagger_params": []
},
"events": {
"basename": "g2x-events",
"prefix": "events",
"resource_key": "events",
"runtime": {
"filter_params": [
"is_free",
"is_virtual",
"organizer",
"search",
"source",
"start_date_after",
"start_date_before",
"state"
],
"filter_params_detail": {
"is_free": {
"type": "boolean"
},
"is_virtual": {
"type": "boolean"
},
"organizer": {
"lookup": "icontains",
"type": "string"
},
"search": {
"type": "string"
},
"source": {
"type": "string"
},
"start_date_after": {
"lookup": "gte",
"type": "date"
},
"start_date_before": {
"lookup": "lte",
"type": "date"
},
"state": {
"lookup": "iexact",
"type": "string"
}
},
"ordering_aliases": [],
"ordering_fields": [],
"pagination": {
"max_page_size": 100
},
"shape": null,
"shape_flat_paths": [],
"shape_gated_by_level": {},
"shape_supported": false,
"shape_tier_required": null
},
"swagger_params": []
},
"exclusions": {
"basename": "exclusion",
"prefix": "exclusions",
Expand Down Expand Up @@ -12717,51 +12659,209 @@
"show_shapes"
]
},
"news": {
"basename": "g2x-news",
"prefix": "news",
"resource_key": "news",
"news/award_announcements": {
"basename": "awardannouncement",
"prefix": "news/award_announcements",
"resource_key": "news/award_announcements",
"runtime": {
"filter_params": [
"published_after",
"published_before",
"action_type",
"agency",
"amount_max",
"amount_min",
"announcement_type",
"award_date_after",
"award_date_before",
"awardee",
"civilian",
"component",
"include_withdrawn",
"is_modification",
"is_multiple_award",
"piid",
"published_date_after",
"published_date_before",
"search",
"small_business",
"source",
"tag",
"vertical"
"uei"
],
"filter_params_detail": {
"published_after": {
"action_type": {
"type": "string"
},
"agency": {
"type": "string"
},
"amount_max": {
"lookup": "lte",
"type": "number"
},
"amount_min": {
"lookup": "gte",
"type": "datetime"
"type": "number"
},
"announcement_type": {
"type": "string"
},
"award_date_after": {
"lookup": "gte",
"type": "date"
},
"published_before": {
"award_date_before": {
"lookup": "lte",
"type": "datetime"
"type": "date"
},
"search": {
"awardee": {
"type": "string"
},
"source": {
"civilian": {
"type": "boolean"
},
"component": {
"type": "string"
},
"tag": {
"include_withdrawn": {
"type": "boolean"
},
"is_modification": {
"type": "boolean"
},
"is_multiple_award": {
"type": "boolean"
},
"piid": {
"type": "string"
},
"vertical": {
"lookup": "iexact",
"published_date_after": {
"lookup": "gte",
"type": "date"
},
"published_date_before": {
"lookup": "lte",
"type": "date"
},
"search": {
"type": "string"
},
"small_business": {
"type": "boolean"
},
"source": {
"choices": [
"makegov_generated",
"official_release"
],
"choices_count": 2,
"type": "choice"
},
"uei": {
"type": "string"
}
},
"ordering_aliases": [],
"ordering_fields": [],
"ordering_fields": [
"amount",
"published_date",
"rank"
],
"pagination": {
"max_page_size": 100
},
"shape": null,
"shape_flat_paths": [],
"shape": {
"expands": {
"awardees": {
"expands": {},
"fields": [
"location",
"name",
"small_business",
"uei"
]
},
"organization": {
"expands": {},
"fields": [
"agency_code",
"agency_name",
"department_code",
"department_name",
"office_code",
"office_name",
"organization_id"
]
}
},
"fields": [
"action_type",
"amount",
"announcement_type",
"award_date",
"award_kind",
"award_uuids",
"awardee_count",
"civilian",
"component",
"contracting_activity",
"corrections",
"is_modification",
"is_multiple_award",
"is_withdrawn",
"obligated_at_award",
"piids",
"published_date",
"source",
"source_name",
"source_record_id",
"source_url",
"text",
"title",
"uuid",
"value_kind"
]
},
"shape_flat_paths": [
"action_type",
"amount",
"announcement_type",
"award_date",
"award_kind",
"award_uuids",
"awardee_count",
"awardees",
"awardees.location",
"awardees.name",
"awardees.small_business",
"awardees.uei",
"civilian",
"component",
"contracting_activity",
"corrections",
"is_modification",
"is_multiple_award",
"is_withdrawn",
"obligated_at_award",
"organization",
"organization.agency_code",
"organization.agency_name",
"organization.department_code",
"organization.department_name",
"organization.office_code",
"organization.office_name",
"organization.organization_id",
"piids",
"published_date",
"source",
"source_name",
"source_record_id",
"source_url",
"text",
"title",
"uuid",
"value_kind"
],
"shape_gated_by_level": {},
"shape_supported": false,
"shape_supported": true,
"shape_tier_required": null
},
"swagger_params": []
Expand Down
Loading
Loading