Skip to content

Sync to Tango API v4.6.9: budget surface, singleton GETs, drop fabricated IDV summary (v0.2.0)#3

Open
makegov-mark[bot] wants to merge 1 commit into
mainfrom
feat/api-sync-v0.2.0
Open

Sync to Tango API v4.6.9: budget surface, singleton GETs, drop fabricated IDV summary (v0.2.0)#3
makegov-mark[bot] wants to merge 1 commit into
mainfrom
feat/api-sync-v0.2.0

Conversation

@makegov-mark
Copy link
Copy Markdown

@makegov-mark makegov-mark Bot commented May 28, 2026

Summary

Syncs the Rust SDK to Tango API v4.6.9. Coverage was 78/117 ops; this closes the agreed-on additive gap and removes a fabricated endpoint. Version bump 0.1.0 → 0.2.0.

Part of a four-SDK sync — paired with tango-go #5, following tango-python #31 and tango-node #9. Pre-1.0, so breaking changes ship without a deprecation cycle.

Phase 1 — Bug fix (breaking)

  • Removed get_idv_summary and list_idv_summary_awards — they called /api/idvs/{id}/summary/ and /summary/awards/, which have never existed in the API. Deleted methods + tests + doc entries. Real IDV sub-paths (awards/, idvs/, lcats/, transactions/) retained. (crates/tango/src/resources/idv_subresources.rs)

Phase 2 — Additive surfaces

  • Budget accounts (headline new surface): list_budget_accounts, get_budget_account, get_budget_account_quarters, get_budget_account_recipients — new resources/budget.rs + SHAPE_BUDGET_ACCOUNTS_MINIMAL.
  • Singleton detail GETs + contract sub-routes: get_contract, get_contract_subawards, get_contract_transactions, get_forecast, get_grant, get_notice, get_opportunity, get_subaward.
  • get_entity_budget_flows(uei).
  • grant_id filter on grants list; cage filter on entities list (verified absent, added distinct from any existing field).

Phase 3 — Housekeeping

  • Version 0.2.0 (workspace Cargo.toml); ## [Unreleased] CHANGELOG block; ## 0.2 ROADMAP section; docs/API_REFERENCE.md updates.

Deferred (by decision)

accounts/usage (internal), G2X events/news/company-rag, canonical webhook-subscriptions CRUD, PUT/PATCH webhook aliases.

Known follow-up (not fixed here)

  • Department.code decode bug: OpenAPI types it as integer (IntegerField(primary_key=True)), but the SDK decodes department code as a string, so /api/departments/{code}/ will mis-decode. /api/agencies/{code}/ is fine (CharField). Needs a typed-field fix + smoke test in a follow-up.

Test plan

  • cargo test --workspace --all-features234 passed (up from 220)
  • cargo clippy --all-targets -- -D warnings clean
  • cargo fmt --check clean

🤖 Generated with Claude Code

~ Mark

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>
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