Repository navigation
v0.2.0: budget, exclusions, DIBBS, SBIR, singleton GETs; drop fabricated IDV summary and retired attachment search - #5
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 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
force-pushed
the
feat/api-sync-v0.2.0
branch
from
September 23, 2026 15:20
95468ee to
9fbc470
Compare
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>
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:37
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
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
mainafter 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
ListBudgetAccounts/IterateBudgetAccounts,GetBudgetAccount,GetBudgetAccountQuarters,GetBudgetAccountRecipients, plusGetEntityBudgetFlows.ListExclusions/IterateExclusions/GetExclusion.List…/Iterate…/Get….List…/Iterate…/Get….GetContract,GetSubaward,GetOpportunity,GetNotice,GetForecast,GetGrant; contract sub-routesListContractSubawardsandListContractTransactions.New typed filters on existing lists:
Keyon the award lists,OpportunityID,NoticeID/Department/Office, forecastID,GrantID,PreviousUII, SLEDVerbose,Cage, the subaward filters onEntitySubawardsOptions, and three budget filters.Breaking
ProtestRecordmatches the real payload (from the protest decode fix already onmain).GetDepartmentreturns a typed*DepartmentRecord; the API servescodeas an integer, soCodeis an*int.GetIDVSummaryandListIDVSummaryAwardsare removed; their paths never existed in the API.SearchOpportunityAttachmentsand its options type are removed: the API retired the route and it returns 404 for every query. Match attachment text withSearchonListOpportunities.Fixed
ListWebhookAlertssendsLimitaspage_size, which is what the alerts route reads;limitwas silently ignored.What changed from the original version of this PR
Every added method was re-checked against the current API.
*GetEntityOptions(shape / flat) instead of*ListOptions, so they no longer send pagination params to a detail route.GetBudgetAccountQuarters,GetBudgetAccountRecipientsandGetEntityBudgetFlowstake their own options (TAS,FundingOrganizationID,FiscalYear) instead of shared options that sentsearch/ordering/shapethe routes don't read.ListContractSubawardstakes the subaward filters;ListContractTransactionstakes*ListOptions(the route pages but has no filters).Cageis documented as the alias forcage_codeit is, not a distinct filter.codefollow-up is fixed here rather than deferred.Not in scope
.golangci.ymlstays 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 .cleango test -race ./...passes (root package coverage 95.6%)go test ./...under Go 1.23 (the module minimum)ListWebhookAlertstest fails against the previous implementation and passes with the fix🤖 Generated with Claude Code