Connect — for MIS and ERP modules

Four calls, three documents, no GutenLex format to learn.

A print MIS that speaks PTPGE — a vendor declaration out, a request in, a quote out — connects to GutenLex with one address and one key. GutenLex never reads your MIS's own formats and never writes into your system: it carries requests to you and quotes back to the buyer, with the configuration identity checked at every step.

The three documents → PTPGE Ready — test yourself Talk to us

What you need

1 · A vendor profile and its key

The printer has a Vendor Profile on GutenLex and a vendor key (glx_vp_beta_…, shown once at first publish; rotatable). The key identifies the printer in every call — the module acts on the printer's behalf, with the printer's consent. vendor_id is the profile id (vp_…), not the PTPGE register slug.

2 · The declaration, in the open schema

Your module writes a vendor-declaration/1: what the printer can make, in PTPGE terms, no prices. Push it and it becomes the printer's public declaration — the one buyers and agents are matched against.

3 · Requests in, quotes out

Every quote request reaches you as a request/1 — pulled, or pushed to your webhook. You answer with a quote/1 that repeats the request's fingerprints and adds the offer. GutenLex checks it, files the offer and tells the buyer.

The four calls

PUT https://api.gutenlex.com/v1/connect/declaration?vendor_id=vp_… body: vendor-declaration/1
POST https://engine.gutenlex.com/v1/connect?vendor_id=vp_… {software, version, mode: pull|push, webhook?, secret?, roles[]}
GET https://engine.gutenlex.com/v1/connect/requests?vendor_id=vp_… → request/1 documents (status=open|all)
POST https://engine.gutenlex.com/v1/connect/quotes?vendor_id=vp_… body: quote/1 → offer filed, buyer notified
Every call: Authorization: Bearer <vendor key>. Status: GET …/v1/connect/status?vendor_id=vp_…

What GutenLex checks before a quote becomes an offer

Identity

fingerprint.spec and fingerprint.request are recomputed from the stored request; inReplyTo.fingerprint must equal the spec; the quote's own configuration must serialise to the same spec — nothing re-keyed.

Vendor

vendor must be this printer's register identity (https://ptpge.org/v1/vendors/…); fingerprint.offer, if stated, must equal request + variables/order/vendor.

Terms

Price, currency, validity, lead time and quantity are read from the quote/1 and shown to the buyer as your offer. Rejections come back as 422 {valid:false, errors[]} in the same wording as the PTPGE Ready validator.

Consent, in plain words

Connecting means: the printer lets this software publish its declaration on GutenLex, receive the printer's quote requests, and file quotes in the printer's name. GutenLex stores the declaration, the requests and the quotes; it stores no MIS data and no credentials beyond the printer's own vendor key. Disconnect at any time by rotating the vendor key in the Vendor Profile — every connection using the old key stops.

Test first: run your module against the PTPGE Ready vector pack (compute · resolve · carry · write · validate). A module that passes is ready to connect — and the stamp is on your software, independent of GutenLex.