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
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ This project follows [Semantic Versioning](https://semver.org/).

### Added

- **Vehicle company counts** (Tango API 5.8.0). `Vehicle` gains `holder_count` (distinct companies holding one of the vehicle's IDVs) and `order_winner_count` (distinct companies that have won a task order under it), and both join the `VEHICLES_MINIMAL` and `VEHICLES_COMPREHENSIVE` defaults next to `awardee_count`, so `listVehicles()` and `getVehicle()` return them without a custom `shape`. Neither is orderable or filterable.

- **Boards-of-contract-appeals decisions** (Tango API 4.26.0). `listContractAppeals(options)` and `getContractAppeal(uuid, options)` over `/api/contract_appeals/`, with every filter the API accepts declared as a typed option on `ListContractAppealsOptions` (`search`, `board`, `docket`, `appellant`, `judge`, `decision_type`, the `decision_date_after` / `_before` pair, `listed`, `document_id`, `ordering`), the new `ContractAppealRecord` return type, and a registered `ContractAppeal` shape schema so the typed shape API resolves the resource's fields.

These are Contract Disputes Act decisions from the CBCA (civilian) and the ASBCA (defense) — a dispute under an existing contract, not a challenge to an award. Bid protests remain the separate `listProtests()` resource, and the two do not overlap.
Expand All @@ -28,10 +30,15 @@ This project follows [Semantic Versioning](https://semver.org/).

### Changed

- Re-vendored the contract for Tango API 5.8.0 and regenerated the overlay, which picks up the fields the API added since 5.1.0. Federal Register documents are in the contract without an SDK method yet, so the resource is baselined as a tracked gap in both conformance gates.
- Re-vendored `contracts/filter_shape_contract.json` (schema_version 2, 48 resources) and regenerated `src/shapes/generatedOverlay.ts` from it — 359 fields across 25 containers, 73 nested schemas.
- Re-vendored the contract for Tango API 5.1.0 and regenerated the overlay, which now merges a model's expand when two resources embed it instead of letting the narrower copy win. eBuy requests are in the contract without an SDK method yet, so it is baselined as a tracked gap.
- Baselined 14 reverse-shape-coverage gaps in `contracts/shape_coverage_baseline.json`, matching tango-python. All 14 are the nested sub-resource routes above, which reuse the parent resource's model rather than carrying one of their own; none is SLED, and none is a regression — they became visible only with the re-vendored contract.

### Deprecated

- `Vehicle.awardee_count` is deprecated in favor of `order_winner_count`, which carries the same value. The API keeps serving it as an alias until its next major version.

### Fixed

- **`attachments(name,doc_role,doc_role_alt)` no longer throws `ShapeValidationError`** on `getOpportunity`, `listOpportunities`, `getNotice` and `listNotices`; the API serves both fields on the Pro plan and above when they are named. New `OpportunityAttachment` and `AttachmentDocRole` types cover the six roles and are used on `Opportunity` and `Notice`.
Expand Down
1 change: 1 addition & 0 deletions contracts/conformance_baseline.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"unimplemented_resources": [
"ebuy/requests",
"events",
"federal_register",
"news"
]
}
Loading
Loading