Skip to content

OpenDPP

OpenDPP SDKs

Generated mirror. The source of truth is the private opendpp-node backend; the SDKs here are generated from its public OpenAPI contract. Pull requests are closed automatically — but issues are welcome (see CONTRIBUTING.md).

Official client SDKs for the OpenDPP Digital Product Passport API — generated from the public OpenAPI contract and version-locked to it.

SDK Package Source
TypeScript @opendpp/sdk (npm) typescript/
Java eu.opendpp-node:opendpp-sdk (Maven Central) java/
Kotlin via the Java artifact — same coordinates, idiomatic from Kotlin java/
Python opendpp-sdk (PyPI) python/

Part of the OpenDPP open client surface (Apache-2.0). The SDKs are ergonomics only — they embed no tier/masking logic and no restricted-key knowledge; every privileged operation is a typed call to the hosted node behind a Developer-Plan key. A rival could regenerate an equivalent from the public spec in an afternoon — the value is the hosted node it calls, not the client.

TypeScript

npm install @opendpp/sdk
import { createOpenDppClient, getHealth } from "@opendpp/sdk";

const client = createOpenDppClient({ apiKey: process.env.OPENDPP_API_KEY });
const health = await getHealth({ client });

Full SDK + docs: typescript/.

Java

implementation("eu.opendpp-node:opendpp-sdk:1.11.0")
import eu.opendppnode.sdk.OpenDpp;
import eu.opendppnode.sdk.api.ServiceApi;
import eu.opendppnode.sdk.invoker.ApiClient;

ApiClient client = OpenDpp.client(System.getenv("OPENDPP_API_KEY"));
var health = new ServiceApi(client).getHealth();

Java 17+, built on the JDK HttpClient with Jackson. Full SDK + docs: java/.

Kotlin consumes the same artifact idiomatically — no separate package:

val client = OpenDpp.client(System.getenv("OPENDPP_API_KEY"))
val health = ServiceApi(client).health

Python

pip install opendpp-sdk

A fully-typed client (pydantic v2 + urllib3, synchronous) for Python ≥ 3.9, generated with the same openapi-generator toolchain as the Java lane. Response models never reject unknown fields (a future MINOR server release must not crash deployed clients); the hand-written opendpp_sdk.ergonomics module carries the configured-client factory and the resolve_*_as helpers for the content-negotiated public resolvers.

from opendpp_sdk.api.service_api import ServiceApi
from opendpp_sdk.ergonomics import create_opendpp_client, resolve_public_passport_as

client = create_opendpp_client(api_key=os.environ["OPENDPP_API_KEY"])
health = ServiceApi(client).get_health()
doc = resolve_public_passport_as(client, passport_id, "application/ld+json")

How it's built

Each SDK is mechanically generated from openapi.json (the curated public API contract) and version-locked to OPENAPI_VERSION — the SDK's major.minor is the contract version (@opendpp/sdk@1.11.x targets contract 1.11), while the patch digit is the SDK's own lane for client-only fixes against the same contract. CI regenerates and fails on any drift, so the committed client always matches the spec. The two openapi-generator lanes (Java, Python) read the contract through one shared normalizer (scripts/normalize-spec.mjs, authored and unit-tested in the OpenDPP node repository and synced here) rather than per-lane private rewrites. Releases are keyless where the registry supports it (OIDC trusted publishing: npm for TypeScript, PyPI for Python); the Java artifacts are GPG-signed and published to Maven Central. Nothing here re-implements a server-side capability.

Related OpenDPP repositories

License & trademark

Apache-2.0 © Opendpp UAB. See NOTICE and TRADEMARK.md. "OpenDPP" is a trademark of Opendpp UAB; the license grants no rights to the marks.

About

Official TypeScript + Python client SDKs for the OpenDPP Digital Product Passport API — generated from the public OpenAPI contract (Apache-2.0, version-locked).

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages