Jadpo is experimental and not ready for production. These docs follow the compiler's main branch as of 5 Nov 2026. What's built · Install 0.3.0
jadpo
ReferenceConnecting and calling

External servicesConnecting and calling

Packages from other Jadpo apps

On this page

Your app can call another Jadpo app's API through a package made from that app's OpenAPI document, exactly, with nothing to correct by hand.

What the document carries

Jadpo's OpenAPI documents carry x-jadpo fields that say what plain OpenAPI can't: x-jadpo-changes (the operation changes something), x-jadpo-idempotency, x-jadpo-failure (each failure's code and kind), x-jadpo-constraints and x-jadpo-events (OpenAPI). Other tools ignore them. Every API serves its document at <prefix>/openapi.json by default.

The OpenAPI importer uses these fields whenever it finds them, so importing a Jadpo app's document gives an exact package that needs no corrections or recordings. A provider that isn't a Jadpo app is imported from its plain OpenAPI. There is one importer and one package format.

Getting the package

  • In one repository, jadpo package import openapi ../orders/build/openapi/main.json --as Orders.v1 reads the other app's generated OpenAPI.
  • Across repositories, the other app's package comes from git, like any private package.
  • For another company's public API, download the document it serves and import that the same way.

jadpo package add ../orders and jadpo package add https://api.orders.example/v1, which would do these in one step, aren't built yet.

Connecting to it

The result is an ordinary installed provider package in packages/<name>/<version>/. It has no fixed host, so the connection gives host:, and its credential is a service key (Service credentials):

app.jadpo
// app.jadpoorders: {    package: Orders.v1    domains: [fulfilment]    host: config.orders_url    credential: config.orders_service_key}

At runtime the two apps meet only over HTTP, and the called app can't tell what made the call.

When the other app changes

An additive change to the other API regenerates as a minor version through jadpo package update, and jadpo check says when yours is out of date. A breaking change, which already needs an acceptance in the other app (The public API record), becomes a new major version, installed side by side while callers move.

In one repository, jadpo check in the called app reads the other apps' locks and reports which of their calls a change breaks, before it merges.

Reporting breaks across apps isn't built yet.

Markdown for agents: /docs/packages-from-other-jadpo-apps.md.Built from Jadpo main at aee2e8f.