Onboarding — Paybond Kit for partner engineering teams
This guide assumes you have a Paybond gateway URL, Harbor base URL, and a service-account API key (paybond_sk_…) issued for one tenant realm.
Current SDK boundary: the Kit is the integration surface for Harbor execution flows, tenant-scoped ledger provenance reads, and read-only Signal reputation/analytics APIs. Signal support now includes tenant-bound receipt, portfolio summary, explanation, and review-status reads through the gateway.
Signal review-status reads now also carry the policy boundary around the score: maturity tiers,
shadow annotations, and replay / appeal friction. These fields are additive workflow metadata only;
they do not change score_version = 1.0.
Security model (read this first)
- Tenant scope is derived from credentials, not from ad-hoc string headers you invent at runtime. With a supported gateway,
POST /v1/auth/harbor-accessreturnstenant_id; the Kit binds every Harbor call to that realm. - Never reuse a
HarborClientacross tenants. Create one client (orServiceAccountHarborSession) per service account / tenant process. - Capability tokens are intent-scoped. A token minted for intent A must not be used with intent B, even within the same tenant.
- Cache JWTs only in memory scoped to that tenant and service account. Rotating the API key should be followed by constructing a new session object.
Recommended integration path
- Install the Kit for your language (see quickstarts).
- Open a
ServiceAccountHarborSession(Python / TypeScript) so Harbor requests automatically attach the minted upstream JWT and correctx-tenant-id. - Wire OpenAI Agents guardrails or LangGraph
awrap_tool_callso tools cannot run without HarborPOST /verifysucceeding. - Submit evidence using
sign_payee_evidence_binding(Python and native) or your server-side signer, thensubmit_evidencewith an idempotency key when retrying. - For read-only Signal access, open
ServiceAccountSignalSessionor constructGatewaySignalClientfrom the same service-account credential sotenant_idis still derived from credentials rather than caller-supplied headers.
Signal read-only dry run
For V1.0.1 release gating, a second engineer should be able to use docs only to find and exercise the tenant-bound Signal path:
- Start at the V1 documentation index.
- Find the supported route and SDK surface through Signal API reference and the SDK references.
- Use the documented session path to fetch the same-tenant reputation receipt, portfolio summary, explanation, and review status.
- Record the docs used, tenant realm, and any ambiguity that still required private guidance.
Observability
- Python raises
HarborHttpErrorwithstatus_code,url, andbody_textfor HTTP failures. - TypeScript raises
HarborHttpErrorwith the same fields. - Gateway auth failures raise
GatewayAuthErrorwith optionalstatus_code/body_text.
Log those fields (redact secrets) when opening partner support tickets.
Credential rotation
- Issue a new API key in your control plane.
- Construct a new
ServiceAccountHarborSession/GatewayHarborTokenProviderwith the new key. - Drain in-flight work on the old session, then
aclose/ dispose. - Revoke the old key in the control plane.
For drills without reissuing keys, call rotateHarborToken() or forceRotate() to mint a fresh Harbor JWT from the gateway using the same API key.
Where to go next
- V1 documentation index — partner-facing hub (tenant model, operators, limitations, support).
- Support matrix
- Python quickstart
- TypeScript quickstart