OpenWOP openwop.dev

Status: Stable.

Normative home: connections.

Why this exists

A connection pack is a signed provider definition — the endpoints, scope catalog, and reach a connector's auth.provider string resolves against. The manifest is schemas/v2/connection-pack-manifest.schema.json; installation and signing follow packs.md.

Provider identity

A provider.id MUST be unique per host. Built-in provider definitions are the host's own pack for every rule in this document.

SituationHost behavior
Exactly one definition of bare id PP resolves to it
An installed pack and a built-in both define Pthe later registration MUST be refused with connection_provider_conflict
Two installed packs both define Pthe later registration MUST be refused with connection_provider_conflict
No definition of Pthe dependent connector or pack MUST be refused with connection_provider_unresolved

A host MUST NOT choose between two claimants by comparing versions.

The qualified form

A connector MAY name a provider by its qualified form <packName>#<id>. A qualified reference resolves only to the named pack's definition. A bare id resolves only when exactly one definition exists on the host.

Resolution

A host advertising connections.packsSupported MUST resolve a connector's auth: { type: "oauth2", provider: P } (and any host.oauth invocation for P) against the definition selected above, to obtain its endpoints and scope catalog.

  • An unresolvable provider MUST be refused when the dependent connector or pack is registered.
  • On a publish-path host, resolution MUST run after the idempotency short-circuit: a byte-identical re-publish of an installed pack MUST succeed even when resolution inputs have since changed.

Observation

A host advertising connections.providerRead MUST serve two reads under manifest:read (schemas/v2/connection-provider-registry.schema.json). The registry is host-global and carries no tenant data.

  • GET /connection-providers lists every definition, built-ins included, each bare id once, and the pack registrations refused under §Provider identity, with the code and, for a conflict, the holder.
  • GET /connection-providers/{providerId} resolves one reference; ?pack=<packName> is the qualified form. An unresolvable reference answers 404 connection_provider_unresolved.
  • A row carries ids, pack names and codes only, never an endpoint, a scope catalog or credential material.
  • Refusals MAY be recomputed at each start.

A host advertising packsSupported SHOULD advertise providerRead.

Errors

Both codes are in spec/v2/errors.json: connection_provider_conflict (two claimants for one bare id) and connection_provider_unresolved (no definition for the referenced id).

Sources: RFCs 0095, 0177, 0233.

Next in Core.

Edit this page on GitHub ↗

  • PacksPack manifests, the registry tree, peer-dependency identifiers, and signing. Per-kind…
  • OpenWOP v2 Core — Overviewspec/v2/core/ is what a host implements to pass the 2.0.0 floor: reading order, the six…