Skip to main content
Beta. IR mapping is live and in active development. The surface below is real and tested; expect it to grow (more source formats, deeper composition). Reach it over REST under /v1/bridges, or through the pb.bridge SDK surface shown at the end.
Every integration starts with the same unglamorous question: which of their types is which of ours? IR mapping makes the answer a saved, version-stamped artifact instead of tribal knowledge. You ingest an OpenAPI spec, then record a match for each of their types — what it lines up with in your ontology, and why. The mapping tells you its own coverage, and when their spec changes, it tells you exactly which matches broke. It is the inverse of the Workbench: instead of authoring a model from scratch, you start from the spec the other side already publishes.

The vocabulary

The loop

A mapping is a persistent session. You open one, ingest a spec into it, record matches against it, then analyze it. Each step is a REST call under /v1/bridges. Tool errors return in the body (isError: true), never as a bare HTTP failure.
1

Open a mapping session

The response carries a mapping_id — the session everything else operates on. Mappings persist; you can come back to one.
2

Ingest the spec

Pass a parsed OpenAPI 3.x document. The ingest walks components.schemas, resolves $ref / allOf / oneOf / anyOf, and produces the symbol table.
3

Record the matches

One call per match. The relation and your reasoning are what gets saved:
POST .../properties then maps field-level pairs under a type mapping (with roles like titular); POST .../types/remove and POST .../properties/remove reverse decisions.
4

Analyze

Returns coverage, property coverage, drift, and a single healthy roll-up you can gate on.

A worked mapping

A commerce API mapped onto a CRM ontology — five types, five different answers: Analyze then reports { mapped: 4, disjoint: 1, unmapped: 3 } — the three unmapped types (CardPayment, BankPayment, OrderStatus) are the visible remaining work, not silent gaps.

Drift: when their spec changes

Re-ingest version 2 of the spec and analyze again. If Address disappeared from their schema, its match flags left_dangling; surviving matches flag left_version_changed so you know to re-confirm them. Your integration’s assumptions just became something a pipeline can check — drift CI for your data model, the way dq.audit is CI for graph writes.

From the SDK

pb.bridge wraps the same routes. The fluent session reads like the judgments you are making:
pb.bridge.map(...) runs the whole thing in one call when you already have the mappings in hand. See the pb.bridge reference for every method.

The tools

Each REST resource has a friendly tool name. GET /v1/bridges/tools returns this table at runtime. reviewProposals is the agent-era piece: let a model propose the mappings, and have each one checked and returned accepted or rejected, with reasons. Nothing enters the mapping unreviewed.

v1 boundaries

Honest edges of what ships today: OpenAPI 3.x is the only source format (GraphQL, protobuf, and SQL schemas are on the roadmap), composition across mapping chains is single-hop, and contradiction detection is not yet wired.