Skip to content

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.

Production Badge

Unreleased

Added

Changed

Breaking

Fixed

[3.26.6] - 2026-01-29

Fixed

  • Vehicles API: fixed shaped vehicle responses so descriptions never contains null elements when some member IDVs have description = 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 vehicle
  • latest_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 description field, but the shape parameter only accepted descriptions. Both field names are now accepted in shaping requests (e.g., ?shape=description or ?shape=descriptions). (closes #1362)
  • API: fixed case-sensitivity issue with recipient filter parameter. The filter now works case-insensitively, so searches like ?recipient=Deloitte, ?recipient=deloitte, and ?recipient=DELOITTE all 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, including awardees(...) expansion of the underlying IDVs.
  • Vehicles are stable: the uuid is deterministic from \(solicitation_identifier, agency identifier derived from the IDV key\) so it remains consistent across refreshes.
  • Optional: ?search= on the detail endpoint filters expanded awardees (not the vehicle itself) when shape includes awardees(...).
  • 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/ and GET /api/idvs/{identifier}/summary/awards/) are deprecated and will be removed in a future version. Use the new Vehicles API (GET /api/vehicles/ and GET /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 identifier path 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 rebuilds awards_vehicle, awards_vehicle_award, and awards_vehicle_stats_mv from awards_idv and 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_uuid for 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 to entities.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 returns sample_delivery/sample_subjects/sample_subscription_requests (the legacy entity_type/change_type query params and response shape are no longer supported).
  • Webhooks: award events no longer include legacy resource_id, and award identifiers are now delivered as award_key (not award_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 to awards.new_award / awards.new_transaction with subject_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 -key as a tiebreaker when ordering by award_date. (fixes #1254)

[3.22.5] - 2025-12-30

Added

  • Cursor pagination now supports backwards navigation via previous links. (closes #1097)
  • Add obligated_gte and obligated_lte filters 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

[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_key function

[3.18.10] - 2025-11-07

Changed

  • Pagination enhanced with search hit ordering

[3.18.6] - 2025-10-27

Added

  • ApiMaintenanceRule model for endpoint-level maintenance control
  • API maintenance middleware

[3.17.16] - 2025-10-10

Added

  • cursor property now included in paginated responses

Fixed

  • Cache pagination edge cases
  • Caching and cursor interaction conflict

[3.17.12] - 2025-10-07

Changed

  • Pagination nulls_last parameter 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_url field in opportunities response shaping

[3.17.0] - 2025-09-26

Added

  • Response shaping system: clients can now customize API response fields using the shape query parameter

[3.14.0] - 2025-08-08

Fixed

  • Broken cache key for opportunity attachments
  • Invalid select_related field 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/api path)

[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, results structure 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 cursor and limit query parameters
  • Cursor encoding/decoding using Base64-encoded composite keys (date + unique key)

Changed

  • Pagination now supports approximate counts via get_approximate_count for 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_code filtering on contracts endpoint

[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_transactions endpoint

[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_entities endpoint
  • base_notice_type_code added 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 contracts and idvs endpoints

Changed

  • Default ordering for contracts and idvs endpoints changed to award_date

[1.4.5] - 2024-10-11

Added

  • assistance_listings endpoint
  • version endpoint

Changed

  • business_types detail endpoint now properly accepts business type codes
  • Breaking: last_updated_time renamed to last_updated on notices and opportunities endpoints

[1.4.0] - 2024-09-27

Added

  • psc parameter (endpoints: notices, opportunities)
  • place_of_performance parameter (endpoints: notices, opportunities)
  • Disjunctive search for agency, naics, office, psc (endpoints: all)

Changed

  • Breaking: Standardized all API endpoints to use limit (replacing page_size where applicable)
  • Breaking: Renamed naics_code to naics for notices and opportunities endpoints
  • Removed alphabetical sorting of parameters (endpoints: all)