Skip to content

feat(awards): filter contracts and IDVs by commercial_item_acquisition_procedures (API 5.10.0) - #90

Merged
vdavez merged 1 commit into
mainfrom
feat/commercial-item-acquisition-procedures-filter
Oct 16, 2026
Merged

vdavez merged 1 commit into
mainfrom
feat/commercial-item-acquisition-procedures-filter

Conversation

@makegov-mark

@makegov-mark makegov-mark Bot commented Oct 16, 2026

Copy link
Copy Markdown
Contributor

What

Adds the commercial_item_acquisition_procedures filter to list_contracts() and list_idvs(), matching the query param Tango API 5.10.0 adds to GET /api/contracts/ and GET /api/idvs/.

  • Values are the FPDS commercial item acquisition procedures codes, case-insensitive: A (commercial products/services), B (products or services pursuant to FAR 12.102(f)), C (services pursuant to FAR 12.102(g)), D (commercial procedures not used), E (DoD Section 803 Commercial Solutions Opening).
  • Multi-value OR via |, e.g. client.list_contracts(commercial_item_acquisition_procedures="A|E"); an unknown or multi-character code matches nothing.
  • The SDK forwards the string verbatim under the API's own param name.
  • Not added to list_otas() / list_otidvs(): the API does not offer it there.
  • The field was already returned in responses; only the filter is new.

Also re-vendors contracts/filter_shape_contract.json at Tango API 5.10.0, which is what makes the conformance check require the new param on both methods.

Changelog

  • Added: commercial_item_acquisition_procedures filter on list_contracts() and list_idvs() (Tango API 5.10.0).
  • Changed: re-vendored contracts/filter_shape_contract.json (Tango API 5.10.0).

Testing

  • uv run pytest: 650 passed, 1 skipped.
  • New tests in tests/test_client.py (TestCommercialItemAcquisitionProceduresFilter): the value reaches the request verbatim on both methods, is omitted when unset, and list_otas() / list_otidvs() reject it.
  • uv run ruff format --check tango/, uv run ruff check tango/, uv run mypy tango/: clean.
  • uv run python scripts/check_filter_shape_conformance.py: no errors (before the SDK change, it reported the param missing on list_contracts and list_idvs).
  • uv run python scripts/check_shape_coverage.py: no new drift.

Risks

Additive, keyword-only-in-practice optional parameter; no existing call changes behavior.

🤖 Generated with Claude Code

…n_procedures (API 5.10.0)

`list_contracts()` and `list_idvs()` take a new `commercial_item_acquisition_procedures` filter, matching the query param Tango API 5.10.0 adds to `/api/contracts/` and `/api/idvs/`.
It filters by the FPDS commercial item acquisition procedures code `A`–`E` (case-insensitive, `E` being DoD Section 803 Commercial Solutions Opening), with `|` for OR.
OTAs and OTIDVs do not take it, since the API does not offer it there.
Re-vendors the API contract at 5.10.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vdavez
vdavez marked this pull request as ready for review October 16, 2026 18:29
@vdavez
vdavez merged commit 9410571 into main Oct 16, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant