Skip to main content

EPU Commercial Intelligence API Contracts

1. Purpose

This page defines implementation-facing service contracts for Supplier Product Data Onboarding, Anticipatory Sustainability Acquisition and Procurement Sustainability Intelligence. It does not define marketplace transactions.

All commands and queries are tenant-scoped, authorization-checked, idempotent where they create business effects, and provenance-bearing.

2. Supplier product source connection

POST /epu/v1/supplier-product-sources

Creates a governed connection descriptor for a supplier ECO product-data source.

Required semantic inputs:

supplier_eco_id
source_type
source_system_ref
connection_policy_ref
authority_profile
synchronization_policy
access_policy_ref

Returns a supplier_product_source_id. Secrets/credentials are managed by the platform secrets/integration layer and must never be embedded in EPU graph objects or documentation payloads.

POST /epu/v1/supplier-product-sources/{id}/sync

Requests idempotent synchronization. Source records become SourceProductCandidate objects and must pass Product Identity Resolution before product facts become attached to an EPU context.

3. Information profile resolution

POST /epu/v1/information-profiles:resolve

Input:

{
"epu_id": "EPU-...",
"profile_ids": ["PCF_PROFILE", "CHEMICAL_DECLARATION_PROFILE"],
"effective_at": "2026-08-30T00:00:00Z",
"requesting_party_ref": "ECO-...",
"purpose": "PROCUREMENT_QUALIFICATION"
}

Response must distinguish:

RESOLVED
PARTIALLY_RESOLVED
MISSING
ACCESS_DENIED
EXPIRED
CONFLICTED

Every resolved datum must preserve source authority, provenance, validity and TrustGate/evidence state where applicable.

4. Requirement anticipation

POST /epu/v1/requirements:anticipate

Input context may include:

epu_id
trigger_type
trigger_ref
buyer_eco_id
supplier_eco_id
jurisdictions[]
market_context[]
commercial_context
product_definition_version
composition_version
requested_disclosure_profiles[]
customer_policy_refs[]
effective_at

The service resolves requirements from Pergamum Pulse and other governed policies and returns a RequirementSet.

It must not ask a supplier for data.

5. Gap analysis

POST /epu/v1/requirement-sets/{id}:analyze-gaps

For each requirement, evaluate reusable governed information before acquisition.

Response states use the canonical Requirement Type Registry, including:

NOT_APPLICABLE
SATISFIED
SATISFIED_ESTIMATED
SATISFIED_SECONDARY_DATA
MISSING
REQUESTED
SUBMITTED
VALIDATING
INSUFFICIENT
EXPIRED
VERIFIED
WAIVED

6. Data authority resolution

POST /epu/v1/requirement-gaps/{id}:resolve-authority

Determines the best-positioned source for an unresolved datum.

Candidate authorities may include manufacturer ECO, component supplier ECO, material producer ECO, connected ERP/PLM/PIM, existing evidence issuer or another governed source.

Response includes rationale and provenance; it must not infer authority solely from graph proximity.

7. Acquisition planning

POST /epu/v1/requirement-gaps/{id}:plan-acquisition

Produces an acquisition action only after reuse and authority resolution.

AcquisitionAction
├── acquisition_action_id
├── requirement_ref
├── epu_id
├── scope_ref
├── acquisition_mode
├── authority_ref
├── target_party_ref?
├── target_source_ref?
├── requested_profile_ids[]
├── requested_fields[]
├── evidence_expectations[]
├── priority
├── desired_by
├── trigger_ref
└── provenance_ref

The planner may choose automated resolution/synchronization instead of a human supplier request.

8. PCF comparability

POST /epu/v1/procurement/pcf:compare

Input references two or more governed PCF artifacts plus the procurement functional-unit/context requirement.

The resolver evaluates the registered dimensions:

functional_unit
system_boundary
methodology
allocation
reference_period
geography
production_context
data_quality
verification_state
uncertainty
trustgate_state

Response state:

COMPARABLE
CONDITIONALLY_COMPARABLE
NORMALIZABLE
NOT_COMPARABLE

NOT_COMPARABLE prohibits a PCF-based ranking. NORMALIZABLE requires a governed normalization result before ranking.

9. Carbon-adjusted acquisition cost

POST /epu/v1/procurement/carbon-adjusted-cost:calculate

Calculation execution belongs to Computation Hub/MICE. The EPU-facing contract supplies governed context and receives a result reference.

Required inputs:

offer_ref
epu_id
commercial_price
commercial_currency
commercial_functional_unit
pcf_result_ref
comparability_decision_ref
internal_carbon_price_policy_ref
scenario_effective_at

Canonical formula for the simple case:

CAAC = P + ((PCF_kgCO2e / 1000) × ICP_per_tCO2e)

Response must expose separately:

commercial_price
internal_carbon_cost
carbon_adjusted_acquisition_cost
currency
functional_unit
uncertainty
calculation_result_ref
method/version lineage

Internal carbon cost must never overwrite or masquerade as invoice price.

10. Carbon-price break-even

POST /epu/v1/procurement/carbon-price-break-even:calculate

Given comparable candidate offers, MICE calculates the internal carbon price at which preference changes under the selected cost model.

The result is decision intelligence, not a supplier-facing contractual price unless explicitly authorized by buyer policy.

11. Event contract

Services publish material state changes using schemas/epu/commercial-intelligence-event.schema.v1.json and event names registered in config/system/epu.commercial-events.json.

Every event carries:

event_id
event_type
occurred_at
tenant_id
correlation_id
causation_id?
producer
actor_ref?
epu_id?
eco_id?
source_ref?
provenance_ref?
payload

Consumers must be replay-safe and achieve exactly-once business effect through idempotency even when delivery is at-least-once.

12. Authorization

Authorization must cover both object values and graph discovery. Relevant actions include:

RESOLVE_INFORMATION_PROFILE
ANTICIPATE_REQUIREMENTS
VIEW_REQUIREMENT_REASON
PLAN_ACQUISITION
REQUEST_SUPPLIER_DATA
VIEW_PCF
COMPARE_PCF
VIEW_INTERNAL_CARBON_PRICE
CALCULATE_PROCUREMENT_SCENARIO
VIEW_PROCUREMENT_SCENARIO

Internal carbon-price policies and procurement scenarios are buyer-confidential by default.

13. Non-goals

These contracts do not implement marketplace listing, auction, payment, commission, settlement, escrow or legally binding transaction execution.

GitHub RepoRequest for Change (RFC)