Which DPDP Guard SDKs are available today?
Seven, all published to public package registries as of 26 July 2026: @dpdpguard/js 1.0.1 and @dpdpguard/server 1.0.0 and @dpdpguard/react-native 0.1.0 on npm, dpdpguard_flutter 0.1.0 on pub.dev, and ai.dpdpguard:consent-sdk 0.1.1 (Android) and ai.dpdpguard:server-sdk 0.1.0 (JVM server) on Maven Central. The iOS SDK, DPDPGuardConsent, installs through Swift Package Manager from tag 0.1.0. They share one published contract package, @dpdpguard/contract.
Do I need an SDK to use DPDP Guard?
No. The fastest path to a live consent banner is the copy-paste install script from DPDP Guard's Implementation guide, which needs no SDK wiring at all. The SDKs exist for cases the hosted banner cannot cover: a native mobile app, a bespoke consent UI, or backend code that must check consent before it processes personal data.
Is the DPDP Guard /api/v1 API generally available?
Not yet. The SDK packages themselves are published and installable today, but the /api/v1 HTTP surface they call is being switched on organisation by organisation during rollout — while it is off for a workspace its endpoints respond as if they do not exist. Install and build against an SDK now, and ask us to enable the API for your organisation before you go live.
Which SDK should I install for my platform?
For a React Native app, @dpdpguard/react-native. For Flutter, dpdpguard_flutter. For a native Android app, ai.dpdpguard:consent-sdk. For a native iOS or macOS app, the DPDPGuardConsent Swift package. For a Node backend, @dpdpguard/server. For a Kotlin or Java backend, ai.dpdpguard:server-sdk. For a browser or any other JavaScript runtime where you are building your own consent UI, @dpdpguard/js.
Do the React Native and Flutter SDKs need a native module?
No. Both are plain HTTP clients — the React Native SDK runs on fetch and the Flutter SDK on package:http — with no turbo module, no platform channel and no native folders to link. That is a deliberate design decision, not a gap: the Android and iOS SDKs are separately versioned native libraries, and bridging to them would tie every hybrid release to whichever native version happened to be vendored alongside it.
Can a mobile app mint its own DPDP Guard access token?
No, and by design. Minting a data-principal access token requires a service API key, which is extractable from any app binary and must never be shipped in one. The mobile and hybrid SDKs therefore omit the token-broker call entirely: your own backend holds the API key, calls the broker endpoint using @dpdpguard/server or ai.dpdpguard:server-sdk, and passes the resulting short-lived token to the app via setAccessToken(). The same reasoning keeps audit-hash and webhook-signature code out of the client SDKs — both need a server-held HMAC secret.
What is @dpdpguard/contract and do I need to install it?
@dpdpguard/contract is the published package that holds the OpenAPI description of the API, the stable error catalog, and the audit-hash canonicalisation spec with its golden test vectors. You do not normally install it — every SDK already depends on it. Install it directly only if you are generating your own client for a language the SDK family does not cover yet.
How do the SDKs keep the DPDP audit trail consistent across platforms?
Every SDK that computes an audit hash runs the same golden vectors from @dpdpguard/contract as a required test, so a hash produced on Android, on iOS or on a server must match the platform's own canonicalisation or that SDK's build fails. This matters for evidence: a consent audit trail is only defensible under India's Digital Personal Data Protection Act, 2023 if records written from different clients reconcile.
How do SDK errors work?
Every non-2xx response raises a DpdpGuardApiError — the same name in the TypeScript, Dart and Kotlin SDKs — carrying the HTTP status and a stable code drawn from the shared error catalog in @dpdpguard/contract. Branch on the code, never on the free-text message: the codes are part of the versioned contract, the messages are not.
Are the DPDP Guard SDKs open source?
The source for all of them is public on GitHub under the dpdp-guard-ai organisation. The JavaScript, Node, React Native and Flutter SDK repositories carry an MIT licence; the shared @dpdpguard/contract package is Apache-2.0. The Android, iOS and JVM repositories do not yet declare a licence file, so treat their terms as unspecified until they do.
How are the SDKs versioned against the API?
Three axes move independently: the wire API's major version lives in its URL path (/api/v1), the shared @dpdpguard/contract package follows semantic versioning, and each SDK carries its own semantic version on its own registry. A breaking contract change — a newly required field, a removal, an error-code change, or any change to audit-hash canonicalisation — forces a major bump in the SDKs that consume it, and an audit-hash change additionally requires a human sign-off before anything downstream is published.