Repository navigation
Sync to the current Tango API: budget, DIBBS, exclusions, SBIR, detail GETs, filter parity (v0.2.0) - #3
Merged
Conversation
Add the budget surface (/api/budget/accounts/ list/retrieve/quarters/ recipients), singleton detail GETs (contract/opportunity/notice/forecast/ grant/subaward), contract sub-routes (subawards/transactions), entity budget-flows, and grant_id + cage filters. Remove the fabricated get_idv_summary / list_idv_summary_awards methods (paths never existed upstream; breaking but free pre-1.0). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds the resources the sibling SDKs cover and this one did not: DIBBS (RFQs, RFPs, awards), SAM exclusions, and SBIR/STTR topics and solicitations, each with list/get/iterate, options builders naming every filter the API accepts, and a suggested shape. Gives the budget sub-routes and entity budget flows their own options (`tas`, `funding_organization_id`, `fiscal_year`), which the shared `ListOptions` could not send, and aligns `SHAPE_BUDGET_ACCOUNTS_MINIMAL` with the API's default shape. Names the list filters the API accepts that the SDK did not: `key` on the award families, `notice_id` / `department` / `office` on notices, `opportunity_id`, forecast `id`, `previous_uii`, SLED `verbose`, and the budget identity filters. Deprecates `search_opportunity_attachments`, whose endpoint the API retired (404 for every query). Corrects the `cage` doc (an alias of `cage_code`, not a distinct filter), the department-code doc (an integer), and the child-IDV path in the API reference. Adds httpmock wire tests for every new route, plus the integer department code on `get_department` and on `get_agency`'s nested department. Rewrites the Unreleased changelog into one section per heading, with the removed IDV summary methods under Breaking. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
rust-toolchain.toml pins `stable`, and rustup prefers it over the toolchain the action installs, so the 1.80 matrix entries have been running stable. The job now sets `RUSTUP_TOOLCHAIN` from the matrix. The lockfile is re-resolved for the 1.80 floor (several transitive crates had moved to edition 2024, which Cargo 1.80 cannot parse), and `.cargo/config.toml` keeps future `cargo update` runs MSRV-aware. `quinn-proto` is pinned to 0.11.15 to clear the advisory; reqwest's HTTP/3 feature is off, so it is never compiled. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
vdavez
force-pushed
the
feat/api-sync-v0.2.0
branch
from
September 23, 2026 15:28
39b1256 to
7ba0de5
Compare
vdavez
marked this pull request as draft
September 23, 2026 15:29
The API retired `/api/opportunities/attachment-search/`, which returns 404 for every query, and 0.2.0 already breaks the API surface, so the method and `SearchOpportunityAttachmentsOptions` go now instead of carrying a deprecation. `list_opportunities` with `search` matches attachment text and returns a `snippet` for the hit. The changelog entry moves from Deprecated to Breaking. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
vdavez
marked this pull request as ready for review
September 23, 2026 15:42
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Brings the Rust SDK up to the current public Tango API and prepares 0.2.0 (workspace version already bumped;
cargo publish --dry-runpasses for both crates).Rebased onto
main, so it now sits on top of SLED, contract appeals and the protest-casing fixes.Every route and filter below was checked against the live OpenAPI schema and the API source, not against another SDK.
Breaking
get_idv_summaryandlist_idv_summary_awards. Their paths (/api/idvs/{key}/summary/and/summary/awards/) have never existed, so every call returned 404. Useget_idvwithSHAPE_IDVS_COMPREHENSIVEandlist_idv_awards.search_opportunity_attachmentsandSearchOpportunityAttachmentsOptions. The API retired/api/opportunities/attachment-search/, which now returns 404 for every query.list_opportunitieswithsearchcovers attachment text.Added
list_budget_accounts/iterate_budget_accounts,get_budget_account,get_budget_account_quarters(withtas),get_budget_account_recipients(withfunding_organization_id), andget_entity_budget_flows(withfiscal_year).SHAPE_BUDGET_ACCOUNTS_MINIMALmirrors the API's default shape.get_contract,get_opportunity,get_notice,get_forecast,get_grant,get_subaward; contract sub-routeslist_contract_subawardsandlist_contract_transactions.keyon contracts / IDVs / OTAs / OTIDVs,grant_id,cage(an alias ofcage_code),notice_id/department/officeon notices,opportunity_id, forecastid,previous_uii, SLEDverbose, and the budget identity filters.Fixed
cageis an alias, not a distinct filter; departmentcodeis an integer; the child-IDV route is/api/idvs/{key}/idvs/.codeas a string while the API returns an integer. This SDK is not affected (department records and the nesteddepartmentonAgencyRecordare untyped JSON); wire tests now pin both shapes.1.80test jobs were running stable, becauserust-toolchain.tomloverrides the toolchain the action installs. The job now setsRUSTUP_TOOLCHAIN, the lockfile is re-resolved for the 1.80 floor, and.cargo/config.tomlkeeps latercargo updateruns MSRV-aware.Not in this PR
/api/events/,/api/news/,/api/company/rag/), the canonical/api/webhooks/subscriptions/CRUD, and account-usage endpoints, matching what the other SDKs cover.extramap.Test plan
cargo fmt --all --checkcargo clippy --workspace --all-features --all-targets -- -D warningscargo test --workspace --all-featureson stable and on 1.80 (315 tests, including a new httpmock wire suite for every added route)RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --workspacecargo publish --dry-runformakegov-tangoandmakegov-tango-webhooks🤖 Generated with Claude Code
~ Mark