# Decide SDK

The published `@decide-fyi/sdk` JavaScript client mirrors the public Decision API protocol. Verified npm latest on May 22, 2026: `0.1.13`. Local source package metadata is currently `0.1.14` until the next package publish.

Python examples use raw HTTPS requests today; Decide does not advertise a separate PyPI package yet.

Verified package links:

- npm package: `https://www.npmjs.com/package/@decide-fyi/sdk`
- npm registry metadata: `https://registry.npmjs.org/@decide-fyi/sdk`
- npm source tarball: `https://registry.npmjs.org/@decide-fyi/sdk/-/sdk-0.1.13.tgz`

npm package metadata declares `git+https://github.com/nodeblur/decidesite.git` with SDK source in `/sdk`. The GitHub repository is access-controlled; unauthenticated source review should use the npm artifact or request repository access.

Install:

```sh
npm install @decide-fyi/sdk
```

CLI verifier:

```sh
npx @decide-fyi/sdk verify decision-record.json --input decision-input.json --json
```

Packet verifier:

```sh
npx @decide-fyi/sdk verify-packet decision-packet.json --key-registry https://www.decide.fyi/api/decision/receipt-keys --summary
```

CI example: `sdk/examples/github-actions-verify.yml`

Conformance fixtures:

```sh
npx @decide-fyi/sdk verify fixtures/valid-decision-record.json --input fixtures/decision-input.json --hmac-secret decide_conformance_hmac_secret_v1 --json
```

Fixture files: `sdk/fixtures/decision-input.json`, `sdk/fixtures/valid-decision-record.json`, `sdk/fixtures/tampered-record.json`, `sdk/fixtures/replay-diff-example.json`.

Packaged integration examples:

- `sdk/examples/pricing-exception.js`
- `sdk/examples/billing-discount-gate.js`
- `sdk/examples/crm-writeback.js`
- `sdk/examples/webhook-queue-gate.js`
- `sdk/examples/agent-action-gate.js`
- `sdk/examples/lifecycle-proof-pack.js`
- `sdk/examples/action-execution-receipt.js`
- `sdk/examples/outcome-tracking.js`
- `sdk/examples/policy-effectiveness.js`
- `sdk/examples/policy-anomalies.js`
- `sdk/examples/policy-confidence.js`
- `sdk/examples/policy-benchmarks.js`
- `sdk/examples/policy-patterns.js`
- `sdk/examples/decision-chain.js`
- `sdk/examples/counterfactual-analysis.js`

Core methods:

- `decide(input, options)` calls `POST /api/decide`.
- `verifyRecord({ record, input, publicKey })` calls `POST /api/decision/verify`.
- `verifyDecision(decisionId)` calls `GET /api/decision/:id/verify`.
- `lookupDecision(decisionId)` calls `GET /api/decision/:id`.
- `replayDecision(decisionId, body)` calls `POST /api/decision/:id/replay`.
- `diffDecision(decisionId, body)` calls `POST /api/decision/:id/diff`.
- `counterfactuals(decisionId, body)` calls `POST /api/decision/:id/counterfactuals`.
- `recordExecution(decisionId, body, options)` calls `POST /api/decision/:id/execution`.
- `listExecutions(decisionId, options)` calls `GET /api/decision/:id/execution`.
- `recordOutcome(decisionId, body, options)` calls `POST /api/decision/:id/outcome`.
- `listOutcomes(decisionId, options)` calls `GET /api/decision/:id/outcome`.
- `recordCrmSync(decisionId, body, options)` calls `POST /api/decision/:id/crm-sync`.
- `listCrmSyncs(decisionId, options)` calls `GET /api/decision/:id/crm-sync`.
- `policyEffectiveness(policyId, options)` calls `GET /api/decision/policies/:policy_id/effectiveness`.
- `policyAnomalies(policyId, options)` calls `GET /api/decision/policies/:policy_id/anomalies`.
- `policyConfidence(policyId, options)` calls `GET /api/decision/policies/:policy_id/confidence`.
- `policyBenchmarks(policyId, options)` calls `GET /api/decision/policies/:policy_id/benchmarks`.
- `decisionChain(chainId, options)` calls `GET /api/decision/chains/:chain_id`.
- `decisionPacket(decisionId, options)` calls `GET /api/decision/:id/packet`.
- `receiptKeys()` calls `GET /api/decision/receipt-keys`.
- `policyBundles()` calls `GET /api/decision/policy-bundles`.
- `policyPatterns(options)` calls `GET /api/decision/policy-patterns`.
- `status()` calls `GET /api/decision/status`.

OpenAPI: `https://www.decide.fyi/openapi.json`
