Skip to content

v0.2.0: budget, exclusions, DIBBS, SBIR, singleton GETs; drop fabricated IDV summary and retired attachment search - #5

Merged
vdavez merged 4 commits into
mainfrom
feat/api-sync-v0.2.0
Sep 23, 2026
Merged

vdavez merged 4 commits into
mainfrom
feat/api-sync-v0.2.0

Conversation

@makegov-mark

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

Copy link
Copy Markdown
Contributor

Summary

Scope: new budget, exclusions, DIBBS and SBIR resources, singleton GETs and missing filters, plus breaking removals of the fabricated IDV summary methods and the retired attachment-search method.

Brings the Go SDK up to the current public Tango API and prepares v0.2.0.
Rebased onto main after SLED, contract appeals and the protest decode fix landed, so the changelog, API reference, README and shapes now describe one coherent release.
Pre-1.0, so breaking changes ship without a deprecation cycle; each one is marked Breaking in CHANGELOG.md.

What's in it

New resources

  • Budget accounts: ListBudgetAccounts / IterateBudgetAccounts, GetBudgetAccount, GetBudgetAccountQuarters, GetBudgetAccountRecipients, plus GetEntityBudgetFlows.
  • Exclusions: ListExclusions / IterateExclusions / GetExclusion.
  • DIBBS: RFQs, RFPs and awards, each with List… / Iterate… / Get….
  • SBIR/STTR: topics and solicitations, each with List… / Iterate… / Get….
  • Singleton GETs: GetContract, GetSubaward, GetOpportunity, GetNotice, GetForecast, GetGrant; contract sub-routes ListContractSubawards and ListContractTransactions.

New typed filters on existing lists: Key on the award lists, OpportunityID, NoticeID / Department / Office, forecast ID, GrantID, PreviousUII, SLED Verbose, Cage, the subaward filters on EntitySubawardsOptions, and three budget filters.

Breaking

  • ProtestRecord matches the real payload (from the protest decode fix already on main).
  • GetDepartment returns a typed *DepartmentRecord; the API serves code as an integer, so Code is an *int.
  • GetIDVSummary and ListIDVSummaryAwards are removed; their paths never existed in the API.
  • SearchOpportunityAttachments and its options type are removed: the API retired the route and it returns 404 for every query. Match attachment text with Search on ListOpportunities.

Fixed

  • ListWebhookAlerts sends Limit as page_size, which is what the alerts route reads; limit was silently ignored.

What changed from the original version of this PR

Every added method was re-checked against the current API.

  • Singleton GETs take *GetEntityOptions (shape / flat) instead of *ListOptions, so they no longer send pagination params to a detail route.
  • GetBudgetAccountQuarters, GetBudgetAccountRecipients and GetEntityBudgetFlows take their own options (TAS, FundingOrganizationID, FiscalYear) instead of shared options that sent search / ordering / shape the routes don't read.
  • ListContractSubawards takes the subaward filters; ListContractTransactions takes *ListOptions (the route pages but has no filters).
  • Cage is documented as the alias for cage_code it is, not a distinct filter.
  • The department code follow-up is fixed here rather than deferred.

Not in scope

  • G2X events / news / company RAG, the raw webhook-subscriptions CRUD, and account usage, which the Python and Node SDKs also leave out.
  • .golangci.yml stays on the v1 schema: CI runs golangci-lint-action@v6, which installs v1.64.8 and cannot read a v2 config.

Test plan

  • go build ./..., go vet ./..., gofmt -l . clean
  • go test -race ./... passes (root package coverage 95.6%)
  • go test ./... under Go 1.23 (the module minimum)
  • golangci-lint v1.64.8 (the version CI installs) exit 0
  • The ListWebhookAlerts test fails against the previous implementation and passes with the fix

🤖 Generated with Claude Code

vdavez and others added 2 commits September 23, 2026 10:03
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 GrantID + Cage filters. Remove the fabricated
GetIDVSummary / ListIDVSummaryAwards methods (paths never existed
upstream; breaking but free pre-1.0).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… parity gaps

Re-checked every method this branch adds against the current API and fixed what drifted: singleton GETs take GetEntityOptions, the budget quarters/recipients and entity budget-flows routes get their own options (TAS, FundingOrganizationID, FiscalYear), ListContractSubawards takes the subaward filters, and ListContractTransactions takes ListOptions.
Add exclusions, DIBBS (RFQs, RFPs, awards) and SBIR/STTR (topics, solicitations), matching tango-python and tango-node.
Add the typed filters the API accepts but the SDK did not name: Key on the award lists, OpportunityID, NoticeID/Department/Office, forecast ID, PreviousUII, SLED Verbose, subaward filters and three budget filters.
GetDepartment now returns a typed DepartmentRecord whose Code is an int, matching the API.
ListWebhookAlerts sends Limit as page_size, which is what the alerts route reads.
Deprecate SearchOpportunityAttachments, whose route the API retired.
Consolidate the Unreleased changelog and bring README, ROADMAP, API_REFERENCE and ARCHITECTURE up to date.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@vdavez
vdavez force-pushed the feat/api-sync-v0.2.0 branch from 95468ee to 9fbc470 Compare September 23, 2026 15:20
@makegov-mark makegov-mark Bot changed the title Sync to Tango API v4.6.9: budget surface, singleton GETs, drop fabricated IDV summary (v0.2.0) v0.2.0: budget, exclusions, DIBBS, SBIR, singleton GETs; drop fabricated IDV summary Sep 23, 2026
@vdavez
vdavez marked this pull request as draft September 23, 2026 15:20
The API retired /api/opportunities/attachment-search/, which now returns 404 for every query, and 0.2.0 already carries breaking changes, so the method and its options type go rather than being deprecated.
Attachment text is matched through Search on ListOpportunities.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@makegov-mark makegov-mark Bot changed the title v0.2.0: budget, exclusions, DIBBS, SBIR, singleton GETs; drop fabricated IDV summary v0.2.0: budget, exclusions, DIBBS, SBIR, singleton GETs; drop fabricated IDV summary and retired attachment search Sep 23, 2026
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@vdavez
vdavez marked this pull request as ready for review September 23, 2026 15:37
@vdavez
vdavez merged commit 1d3b6ac into main Sep 23, 2026
5 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