Skip to content

Add DIBBS, SBIR, and exclusions coverage (Tango v4.18 surfaces) #13

Description

@makegov-mark

Tango ships three resource families that this SDK has no client methods for: DIBBS, SBIR/STTR, and exclusions. They landed in Tango v4.18, are fully documented on docs.makegov.com, and are already implemented in tango-python — this SDK is the one that didn't get them.

Why

The gap is silent. Nothing in this repo checks client coverage against Tango's registered routes, so these surfaces have been missing without failing anything. For comparison, the docs repo does have such a gate (scripts/check_api_drift.py) — which is why the docs are current and the SDK isn't.

Practical effect: a Node consumer who wants DLA solicitation data, SBIR topics, or SAM exclusion records has to drop to raw HTTP, and tango-node is at 1.1.0 against tango-python 1.4.0.

Missing endpoints

Resource Endpoints Docs
DIBBS RFQs GET /api/dibbs/rfqs/, GET /api/dibbs/rfqs/{id}/ dibbs
DIBBS RFPs GET /api/dibbs/rfps/, GET /api/dibbs/rfps/{id}/ dibbs
DIBBS awards GET /api/dibbs/awards/, GET /api/dibbs/awards/{id}/ dibbs
SBIR topics GET /api/sbir/topics/, GET /api/sbir/topics/{id}/ sbir
SBIR solicitations GET /api/sbir/solicitations/, GET /api/sbir/solicitations/{id}/ sbir
Exclusions GET /api/exclusions/, GET /api/exclusions/{id}/ exclusions

Route definitions in Tango: src/dibbs/urls.py, src/sbir/urls.py, src/exclusions/urls.py.

Reference implementation

tango-python v1.4.0 tango/client.py — mirror these, including filter params and shape handling:

  • list_dibbs_rfqs / get_dibbs_rfq
  • list_dibbs_rfps / get_dibbs_rfp
  • list_dibbs_awards / get_dibbs_award
  • list_sbir_topics / get_sbir_topic
  • list_sbir_solicitations / get_sbir_solicitation
  • list_exclusions / get_exclusion

Current state in this repo

src/client.ts has 83 resource methods. dibbs and sbir appear nowhere in src/. exclusion appears only in src/shapes/explicitSchemas.ts — a shape schema with no client method behind it, so the type exists but is unreachable.

Note this is distinct from the entity-level exclusion_status_flag / exclusion_url fields, which are a flag on an entity record, not the /exclusions/ resource.

Acceptance criteria

  • 12 methods added to src/client.ts following existing naming (listDibbsRfqs, getDibbsRfq, listSbirTopics, listExclusions, …)
  • Models / types for each resource, matching the shape schemas
  • exclusion shape in explicitSchemas.ts wired to its new client methods
  • Tests following the existing mock-driven pattern in tests/
  • README + CHANGELOG updated

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions