Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ This project follows [Semantic Versioning](https://semver.org/).

## [Unreleased]

## [0.3.0] — 2026-10-19

Pre-1.0 (SemVer 0.x): the change under **Breaking** ships without a deprecation cycle.

### `makegov-tango`
Expand Down Expand Up @@ -61,6 +63,10 @@ Pre-1.0 (SemVer 0.x): the change under **Breaking** ships without a deprecation
- **The SBIR topic `agency` filter is documented as organization-resolved.** It rolls up the hierarchy (`HHS` includes NIH topics) and falls back to the raw agency text only for a token that does not resolve; the docs said it never resolved.
- **API errors now carry the server's reason when it is nested under `detail`.** A 403 or other non-2xx response the SDK had no dedicated variant for kept a top-level `detail`, `message` or `error` string, but a structured body such as a plan gate's `{"detail": {"error": "...", "code": "tier_required"}}` left `Error::Api`'s `message` at `API request failed with status 403`, so a caller refused for a plan-gated filter couldn't tell why. The message is now the API's own explanation (`tango: API error (status 403): The 'psc' filter requires a Small plan or higher.`), and the parsed body stays on `response`. When a body carries several of these keys, `error` now wins over `message` and `detail`, matching the Python SDK. Non-JSON bodies, such as a proxy's 502 page, keep the old message.

### `makegov-tango-webhooks`

No changes; the version moves to 0.3.0 in lockstep with `makegov-tango`.

## [0.2.0] — 2026-09-23

Pre-1.0 (SemVer 0.x): the removals under **Breaking** ship without a deprecation cycle.
Expand Down
4 changes: 2 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ members = [
exclude = ["examples"]

[workspace.package]
version = "0.2.0"
version = "0.3.0"
edition = "2021"
rust-version = "1.80"
license = "MIT"
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

Official, async-first Rust SDK for the [Tango API](https://tango.makegov.com) — federal contracts, IDVs, entities, opportunities, grants, vehicles, and more, with dynamic response shaping so you fetch only the fields you need.

> **Pre-1.0 — v0.2.0.** The resource surface now tracks the sibling SDKs endpoint for endpoint, but the public API may still shift before v1.0.0. Pin to a specific version if you depend on this in production.
> **Pre-1.0 — v0.3.0.** The resource surface now tracks the sibling SDKs endpoint for endpoint, but the public API may still shift before v1.0.0. Pin to a specific version if you depend on this in production.

The sibling SDKs are `tango-python`, `tango-node` and `tango-go`. This Rust port ships the full transport, error model, retry / rate-limit handling, webhook signing (in the separate `tango-webhooks` crate), and the resource-method surface. Same `0.x → 1.0` graduation logic as Go: the transport and types are stable; the surface stabilizes once it has been verified against the live API alongside the siblings.

Expand All @@ -25,10 +25,10 @@ The sibling SDKs are `tango-python`, `tango-node` and `tango-go`. This Rust port

```toml
[dependencies]
makegov-tango = "0.2"
makegov-tango = "0.3"

# Optional: webhook signing for receivers
makegov-tango-webhooks = "0.2"
makegov-tango-webhooks = "0.3"
```

Crates publish under the `makegov-` prefix on crates.io; Rust imports stay short — `use tango::Client;` and `use tango_webhooks::verify;` — thanks to a `[lib] name` shim in each crate (same pattern as the `aws-sdk-*` family).
Expand Down
2 changes: 1 addition & 1 deletion docs/WEBHOOKS.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ A typical setup:

```toml
[dependencies]
makegov-tango-webhooks = "0.1"
makegov-tango-webhooks = "0.3"
```

The crate publishes as `makegov-tango-webhooks` on crates.io and imports as `use tango_webhooks::...` thanks to a `[lib] name` shim.
Expand Down
Loading