Changelog¶
This is the most up-to-date change log for Tango and the Tango API.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased¶
Added¶
Changed¶
Breaking¶
Fixed¶
[3.26.6] - 2026-01-29¶
Fixed¶
- Vehicles API: fixed shaped vehicle responses so
descriptionsnever containsnullelements when some member IDVs havedescription = NULL. (fixes #1369)
[3.26.5] - 2026-01-28¶
Changed¶
- Docs: the Webhooks Partner Guide now uses the canonical hyphenated path under
/docs/webhooks-user-guide/(instead of the older underscore form).
Breaking¶
- API: removed the deprecated
/api/subscriptions/endpoints. Use/api/webhooks/subscriptions/instead. (closes #1246)
[3.26.4] - 2026-01-28¶
Added¶
- Vehicles API: new
GET /api/vehicles/{uuid}/orders/endpoint returns all task orders (contracts) issued against all IDVs within a vehicle. Supports pagination, response shaping, filtering, search, and transaction expansion. Task orders are ordered by-award_date, -uuid(newest first) by default, with support for custom ordering via?ordering=parameter (e.g.,?ordering=-obligated,?ordering=recipient_name). (closes #1356) - Vehicles API: you can now sort vehicles by activity metrics using the
?ordering=query parameter. Available fields: vehicle_obligations- Sort by total obligations across all IDVs in the vehiclelatest_award_date- Sort by the most recent IDV award date in the vehicle- Use
-prefix for descending order (e.g.,?ordering=-vehicle_obligations) - Combine multiple fields (e.g.,
?ordering=-vehicle_obligations,-latest_award_date) - Default ordering (when no
?ordering=is provided) remains unchanged. (closes #1357)
Fixed¶
- Vehicles API: fixed inconsistency where the default response includes a
descriptionfield, but theshapeparameter only accepteddescriptions. Both field names are now accepted in shaping requests (e.g.,?shape=descriptionor?shape=descriptions). (closes #1362) - API: fixed case-sensitivity issue with
recipientfilter parameter. The filter now works case-insensitively, so searches like?recipient=Deloitte,?recipient=deloitte, and?recipient=DELOITTEall return the same results. This affects/api/contracts,/api/subawards, and other endpoints using recipient filtering. (fixes #1345)
[3.26.3] - 2026-01-27¶
Fixed¶
- Awards: contract obligation time-series metrics are now attributed to the transaction month (instead of the award date), improving trend accuracy for NAICS/PSC and recipient rollups. (fixes #1268)
[3.26.0] - 2026-01-25¶
Added¶
- Data provenance & auditing (Organizations + Entities): Tango now records field-level provenance and per-row audit logs for key datasets so we can answer “where did this value come from?” and “when did it last change?” more reliably.
- Covered models so far: Organizations and Entities (including entity relationships).
- This work is currently not exposed via the API (no new endpoints/fields), but it improves our ability to debug discrepancies, explain changes, and harden future data quality guarantees.
- Read more: Provenance & auditing.
Fixed¶
- Entities ingestion is more robust to inconsistent upstream typing for certification date fields.
- Entities ingestion is now robust to SAM certification date “vector” formats (e.g.
2024-09-17~2024-09-17,null~null), preventing ingestion failures for affected rows. - Entities: fixed recipient filter to enable partial name matching for single-word and short multi-word queries (e.g., "HARVARD" now matches "PRESIDENT AND FELLOWS OF HARVARD COLLEGE"). Previously, exact matching was attempted first, which could skip full-text search and return incomplete results. (fixes #1333)
[3.25.0] - 2026-01-20¶
Added¶
- Awards: new Vehicles API endpoints under
/api/vehicles/to discover and inspect solicitation-based "vehicles" built from IDVs. (closes #1313) GET /api/vehicles/: full-text search via?search=(vehicle-level).GET /api/vehicles/{uuid}/: detail endpoint supports response shaping, includingawardees(...)expansion of the underlying IDVs.- Vehicles are stable: the
uuidis deterministic from \(solicitation_identifier, agency identifier derived from the IDVkey\) so it remains consistent across refreshes. - Optional:
?search=on the detail endpoint filters expanded awardees (not the vehicle itself) whenshapeincludesawardees(...). - Exposes
organization_id(best-effort mapping into/api/organizations/) to support consistent agency filtering and joins.
Deprecated¶
- Awards: IDV summary endpoints (
GET /api/idvs/{identifier}/summary/andGET /api/idvs/{identifier}/summary/awards/) are deprecated and will be removed in a future version. Use the new Vehicles API (GET /api/vehicles/andGET /api/vehicles/{uuid}/awardees/) instead, which provides stable UUID-based identifiers and richer shaping capabilities.
Fixed¶
- Awards: fixed Swagger/OpenAPI documentation for IDV summary endpoints (closes #1312)
- Removed duplicate
identifierpath parameter declarations - Fixed example generator to correctly detect list vs retrieve actions
- Fixed Swagger examples to use realistic values and proper pagination structure
Internal / Infra¶
- Awards: added a vehicles refresh pipeline (
refresh_vehicles) that rebuildsawards_vehicle,awards_vehicle_award, andawards_vehicle_stats_mvfromawards_idvand reuses existing award search vectors for vehicle search. (refs #1313)
[3.24.1] - 2026-01-12¶
Internal / Infra¶
- Awards: ETL now refreshes awards search tables for contracts, IDVs, OTAs, and OTIDVs via
refresh_awards_search. (closes #1294) - Subawards: add
award_uuidfor deterministic association to prime awards; populate on ingest. (closes #1298)
[3.24.0] - 2026-01-10¶
Internal / Infra¶
- Awards: infrastructure and performance improvements to support faster, more consistent search behavior across award types (contracts, IDVs, OTAs, OTIDVs). (refs #1278)
[3.23.2] - 2026-01-08¶
Added¶
- Account: your account page now shows your daily requests remaining (and when it resets).
- Account: improved signup emails (welcome email + admin notifications) with updated branding. (closes #280)
Changed¶
- Account: API keys now explicitly note that they share the same account rate limits.
[3.23.1] - 2026-01-08¶
Added¶
- Account: manage API keys from your account page (create, revoke, delete) to support key rotation. (closes #1269)
[3.23.0] - 2026-01-07¶
Added¶
- Webhooks: expanded webhook coverage beyond awards to include entities, opportunities, grants, and forecasts (including new/create-style events for opportunities, grants, and forecasts). See the Webhooks partner guide.
- Webhooks: entities now emit explicit new entity events (
entities.new_entity) when a new entity appears (in addition toentities.updated). - Webhooks: subscriptions now support richer filtering via subjects (e.g. entity UEI, award key, agency, notice ID, notice type), so you can subscribe more precisely.
- Webhooks: new discovery endpoint to list supported event types and subject types (
GET /api/webhooks/event-types/).
Changed¶
- Webhooks: improved “data is ready” guarantees; events are published only once the underlying data is queryable via the API (including publishing opportunity updates at the end of loading, not during maintenance processing).
- Webhooks: legacy immediate-dispatch buffering has been removed; webhooks are now produced via the outbox + publish pipeline.
- Webhooks: duplicate subscription configurations are now rejected per endpoint (prevents accidentally subscribing to the same thing twice).
- Webhooks: sample payload endpoint now returns Tango-shaped sample deliveries for all supported event types and includes copy/paste subscription examples.
Breaking¶
- Webhooks:
GET /api/webhooks/endpoints/sample-payload/has a new contract. It now accepts?event_type=<event_type>and returnssample_delivery/sample_subjects/sample_subscription_requests(the legacyentity_type/change_typequery params and response shape are no longer supported). - Webhooks: award events no longer include legacy
resource_id, and award identifiers are now delivered asaward_key(notaward_id). Update any webhook handlers that were reading the old fields. - Webhooks (legacy): subscriptions that use
event_type: "entity_awards"will not match v2 award events. Migrate toawards.new_award/awards.new_transactionwithsubject_type: "entity"(UEI).
Deprecated¶
- Webhooks: The
/api/subscriptions/endpoints are deprecated and will be removed in a future release. Please migrate to/api/webhooks/subscriptions/instead. The deprecated endpoints remain functional but are no longer documented in Swagger.
[3.22.7] - 2025-12-31¶
Fixed¶
- Fixed an internal opportunities ingestion failure when rebuilding notice history could encounter NULL IDs. (fixes #1257)
- Awards: ensure deterministic ordering for smart-filtered award queries by appending
-keyas a tiebreaker when ordering byaward_date. (fixes #1254)
[3.22.5] - 2025-12-30¶
Added¶
- Cursor pagination now supports backwards navigation via
previouslinks. (closes #1097) - Add
obligated_gteandobligated_ltefilters to/api/contracts/. (closes #1138)
Changed¶
- Opportunities ingestion is now faster, improving update freshness. (addresses #1248)
- Admin: bulk enable/disable API maintenance rules. (closes #1241)
Fixed¶
- Fixed duplicate
WHERE ... IN (...)predicates in contract queries when filtering by awarding/funding agency. (fixes #1247) - Improved DSBS enrichment reliability/performance and reduced lock contention with entity loads. (fixes #1238) (closes #1239) (fixes #1240) (addresses #949)
[3.22.4] - 2025-12-24¶
Changed¶
- Improved the “Get API access” sign-in page to make account creation and sign-in clearer. (closes #1233)
Fixed¶
- Social sign-in now preserves redirect destinations more reliably (e.g.
?next=...). (fixes #1233)
[3.22.3] - 2025-12-23¶
Added¶
- Improved contract search performance for large result sets via a new count estimation helper.
Fixed¶
- API requests now fail fast with a clean 504 when Postgres statement/lock timeouts are hit, instead of timing out at the proxy.
- Opportunities rollups avoid spurious updates when incoming values are NULL, and notice status maintenance is faster via a single-pass UPSERT.
[3.22.2] - 2025-12-22¶
Changed¶
- Internal improvements to organization management and data synchronization.
[3.22.0] - 2025-12-21¶
Added¶
- Organizations: a unified federal organization hierarchy (departments, agencies, and offices) with powerful search and filtering via
/api/organizations/. - Better organization identifiers: stable organization UUIDs (
key), SAM Federal Hierarchy keys (fh_key), and operational codes like CGAC / FPDS codes (when available), so you can reliably map transaction data to the right org. - Organization rollups: obligation rollups for organizations (including descendants) to support exploration and analytics.
Changed¶
- Agency/org consistency: agency-related behavior across the API now uses the unified Organizations hierarchy, improving hierarchy consistency and organization matching across endpoints.
Documentation¶
- Organizations endpoint data dictionary: Organizations
- Background on the federal hierarchy + why org matching is hard: Federal agency hierarchy
[3.21.11] - 2025-12-16¶
Added¶
- NAICS and PSC descriptions now available in awards endpoint response shapes
Fixed¶
- Redis connection stability issues
[3.21.10] - 2025-12-15¶
Fixed¶
- Cache warming CROSSSLOT key hashing errors
- Bulk entities endpoint post-caching changes
[3.21.0] - 2025-12-09¶
Added¶
- API key authentication caching with 1-hour TTL and cache reconstruction
Changed¶
- API authentication reconstructs APIKey and User objects from cache to avoid database queries
- API pagination cache keys standardized for more consistent caching
[3.20.9] - 2025-11-28¶
Added¶
- Officer expand configuration in response shaping
[3.20.4] - 2025-11-23¶
Added¶
- Quick-start documentation (
docs/getting-started/quick-start.md) with response shaping examples
[3.18.11] - 2025-11-11¶
Fixed¶
- Critical fix for
generate_unique_award_keyfunction
[3.18.10] - 2025-11-07¶
Changed¶
- Pagination enhanced with search hit ordering
[3.18.6] - 2025-10-27¶
Added¶
ApiMaintenanceRulemodel for endpoint-level maintenance control- API maintenance middleware
[3.17.16] - 2025-10-10¶
Added¶
cursorproperty now included in paginated responses
Fixed¶
- Cache pagination edge cases
- Caching and cursor interaction conflict
[3.17.12] - 2025-10-07¶
Changed¶
- Pagination
nulls_lastparameter handling for nullable vs non-nullable fields
[3.17.7] - 2025-10-01¶
Added¶
- Webhooks are now ordered predictably for pagination
Changed¶
- Webhook delivery timeout configuration added (30s connect, 60s read/write)
Fixed¶
- Missing
sam_urlfield in opportunities response shaping
[3.17.0] - 2025-09-26¶
Added¶
- Response shaping system: clients can now customize API response fields using the
shapequery parameter
[3.14.0] - 2025-08-08¶
Fixed¶
- Broken cache key for opportunity attachments
- Invalid
select_relatedfield in OTIDV API endpoint
[3.13.9] - 2025-08-07¶
Changed¶
- Performance improvements in agencies and recipients endpoints
[3.13.4] - 2025-08-01¶
Changed¶
- Opportunity endpoint performance
[3.13.0] - 2025-07-28¶
Added¶
- GitHub OAuth social authentication
[3.12.5] - 2025-07-23¶
Changed¶
- Pagination ordering logic in opportunities
[3.11.2] - 2025-06-29¶
Changed¶
- API filters for agency search performance
[3.10.2] - 2025-06-19¶
Added¶
- Webhook system improvements
Changed¶
- Webhook delivery improvements
Fixed¶
- G2X wrapper bug (hotfix)
[3.10.0] - 2025-06-17¶
Added¶
- Webhook delivery includes retry logic and error handling
- Webhook subscriptions can filter by entity type and entity IDs
- Webhook buffering and deduplication to prevent duplicate deliveries
Changed¶
- Award and entity updates now trigger webhook events on data changes
- Award transaction updates now emit webhook events
[3.7.6] - 2025-05-25¶
Fixed¶
- Swagger documentation routing (corrected
/api/apipath)
[3.7.5] - 2025-05-22¶
Fixed¶
- Bulk entities endpoint tweaks
[3.7.4] - 2025-05-20¶
Added¶
- Swagger docs now include realistic API response examples
- Swagger docs now include examples for agencies, awards, entities, grants, and opportunities
- OpenAPI schema customization improvements
- Swagger documentation organization improvements
Changed¶
- API viewsets now use generated examples for Swagger UI instead of static/hardcoded data
[3.7.0] - 2025-05-12¶
Added¶
- Grant pagination system with cursor support
[3.6.0] - 2025-05-02¶
Fixed¶
- Notice and opportunity loading deduplication and data integrity issues
[3.5.0] - 2025-04-27¶
Changed¶
- Metrics models rebuilt with consistent schema across NAICS, PSC, and entities
[3.4.0] - 2025-04-23¶
Changed¶
- API serializers updated with improved field selection logic
[3.3.1] - 2025-04-21¶
Fixed¶
- PSC detail endpoint query logic
[3.2.0] - 2025-04-11¶
Added¶
- Entity display name ordering index
Changed¶
- Pagination responses now include consistent
count,next,previous,resultsstructure across all endpoints
Fixed¶
- Entity ordering and caching logic edge cases
[3.1.0] - 2025-04-04¶
Changed¶
- Subaward field mapping aligned with USASpending schema changes
[3.0.4] - 2025-03-27¶
Added¶
- API key authentication
- Automatic default API key creation for new users
Changed¶
- Accounts page updated with API key management
[3.0.0] - 2025-03-25¶
Added¶
- Keyset (cursor-based) pagination system for awards with
cursorandlimitquery parameters - Cursor encoding/decoding using Base64-encoded composite keys (date + unique key)
Changed¶
- Pagination now supports approximate counts via
get_approximate_countfor performance - Cached pagination increased to 30-day TTL for static models (NAICS, PSC) with 10K max page size
[2.6.21] - 2025-03-18¶
Added¶
- Entities endpoint includes summary metrics
[2.6.20] - 2025-03-15¶
Added¶
- NAICS and PSC code metrics endpoints
[2.6.19] - 2025-03-14¶
Added¶
- Basic entity metrics API support
[2.6.13] - 2025-02-18¶
Added¶
psc_codefiltering oncontractsendpoint
[2.6.11] - 2025-02-03¶
Added¶
- New aggregate view for aggregated award data (for faster API responses)
[2.6.10] - 2025-01-26¶
Added¶
- More fields on
assistance_transactionsendpoint
[2.6.6] - 2025-01-03¶
Fixed¶
- Filtering by NAICS/PSC combo
[2.6.1] - 2024-12-01¶
Fixed¶
- Date filters returning incorrect opportunities
[2.6.0] - 2024-11-28¶
Added¶
related_entitiesendpointbase_notice_type_codeadded to API responses
[2.5.0] - 2024-11-25¶
Added¶
- Entity summary endpoint
[2.1.5] - 2024-11-22¶
Changed¶
- Opportunity management API improvements
[2.0.0] - 2024-11-11¶
Changed¶
- Opportunities schema updates for improved structure and usability
[1.5.1] - 2024-11-04¶
Added¶
- Ordering parameters added to
contractsandidvsendpoints
Changed¶
- Default ordering for
contractsandidvsendpoints changed toaward_date
[1.4.5] - 2024-10-11¶
Added¶
assistance_listingsendpointversionendpoint
Changed¶
business_typesdetail endpoint now properly accepts business type codes- Breaking:
last_updated_timerenamed tolast_updatedonnoticesandopportunitiesendpoints
[1.4.0] - 2024-09-27¶
Added¶
pscparameter (endpoints:notices,opportunities)place_of_performanceparameter (endpoints:notices,opportunities)- Disjunctive search for
agency,naics,office,psc(endpoints: all)
Changed¶
- Breaking: Standardized all API endpoints to use
limit(replacingpage_sizewhere applicable) - Breaking: Renamed
naics_codetonaicsfornoticesandopportunitiesendpoints - Removed alphabetical sorting of parameters (endpoints: all)