Machine contract · @ipproto/schemas

Schemas

The complete message surface as 42 JSON Schemas — draft 2020-12, version-pinned URN identities, a reference validator, and generated TypeScript types. The contract is machine-enforceable end to end.


Conventions

How the package is shaped

Validate an emission in one call

A resolver or converter validates its whole output against urn:ipproto:schema:0.1:resolvedAsset, which composes the Asset Reference and its Resolution Provenance. Conformant output is checkable, not asserted.


Foundational structures · 14

The shared vocabulary

urn:ipproto:schema:0.1:commonEnvelopeCommon Envelope
urn:ipproto:schema:0.1:actorReferenceActor Reference
urn:ipproto:schema:0.1:actorRoleDeclarationActor Role Declaration
urn:ipproto:schema:0.1:assetReferenceAsset Reference
urn:ipproto:schema:0.1:authorityClaimAuthority Claim
urn:ipproto:schema:0.1:dataAssertionData Assertion
urn:ipproto:schema:0.1:documentReferenceDocument Reference
urn:ipproto:schema:0.1:entityReferenceEntity Reference
urn:ipproto:schema:0.1:evidenceCollectionEvidence Collection
urn:ipproto:schema:0.1:milestoneMilestone
urn:ipproto:schema:0.1:outcomeDetailsOutcome Details
urn:ipproto:schema:0.1:resolutionProvenanceResolution Provenance
urn:ipproto:schema:0.1:resolvedAssetResolved Asset
urn:ipproto:schema:0.1:userContextUser Context
urn:ipproto:schema:0.1:workstreamWorkstream

Plus defs — shared definitions (URIs, money, ST.3 / ST.16 code types, JSON Pointer).


Messages · 26

The full message surface

urn:ipproto:schema:0.1:assetBootstrapAsset Bootstrap
urn:ipproto:schema:0.1:assetMatchInquiryAsset Match Inquiry
urn:ipproto:schema:0.1:assetMatchResponseAsset Match Response
urn:ipproto:schema:0.1:goalDecompositionGoal Decomposition
urn:ipproto:schema:0.1:orchestrationCommittedOrchestration Committed
urn:ipproto:schema:0.1:workstreamCompletedWorkstream Completed
urn:ipproto:schema:0.1:workstreamAbandonedWorkstream Abandoned
urn:ipproto:schema:0.1:milestoneStartedMilestone Started
urn:ipproto:schema:0.1:milestoneCompletedMilestone Completed
urn:ipproto:schema:0.1:milestoneFailedMilestone Failed
urn:ipproto:schema:0.1:milestoneAbandonedMilestone Abandoned
urn:ipproto:schema:0.1:serviceDeliverableService Deliverable
urn:ipproto:schema:0.1:deliverableAcknowledgedDeliverable Acknowledged
urn:ipproto:schema:0.1:artifactReadyArtifact Ready
urn:ipproto:schema:0.1:clientActionCompletedClient Action Completed
urn:ipproto:schema:0.1:paymentAuthorizedPayment Authorized
urn:ipproto:schema:0.1:paymentExecutedPayment Executed
urn:ipproto:schema:0.1:serviceSubscriptionStartedService Subscription Started
urn:ipproto:schema:0.1:serviceSubscriptionTerminatedService Subscription Terminated
urn:ipproto:schema:0.1:registerEventRegister Event
urn:ipproto:schema:0.1:serviceFindingService Finding
urn:ipproto:schema:0.1:assetAuthorityDisputeAsset Authority Dispute
urn:ipproto:schema:0.1:actionConfirmationDisputeAction Confirmation Dispute
urn:ipproto:schema:0.1:identityResolutionDisputeIdentity Resolution Dispute
urn:ipproto:schema:0.1:disputeResolutionDecisionDispute Resolution Decision
urn:ipproto:schema:0.1:recordUpdateRecord Update

Using the package

Depend, don't fork

Implementations depend on @ipproto/schemas and adopt the standard's shapes as their domain model, validating in CI. Extensions go through namespaced custom values, never forks of the schemas — so every implementation stays interoperable and the contract cannot drift.

import Ajv2020 from "ajv/dist/2020.js";
// load every schema in index.json, then:
const validate = ajv.getSchema("urn:ipproto:schema:0.1:resolvedAsset");
if (!validate(emission)) throw new Error("non-conformant output");