JSON Schemas
EEP defines 24 JSON Schemas under schemas/v0.1/ (JSON Schema Draft-07). The canonical tree is in the eep-dev/EEP repository; filenames below match it exactly.
Events, subscriptions & transport
| Schema file | Role |
|---|---|
event.envelope.json | CloudEvents v1.0.2 envelope with EEP extension attributes (primary event schema) |
subscription.request.json | Subscription creation request body |
delivery.payload.json | Webhook / delivery payload wrapper |
ws-message.json | WebSocket frame format (Layer 3) |
eep-pulse-message-schema.json | Network pulse message envelope |
Discovery & registry
| Schema file | Role |
|---|---|
eep-manifest.json | /.well-known/eep.json manifest |
eep-registry.json | Registry document |
registry.search-result.json | Registry search hit shape |
Gates, sessions & HTTP error bodies
| Schema file | Role |
|---|---|
gate.config.json | Gate configuration (tiers, requirements) |
gate.proof.json | Proof payloads submitted to gates |
session.token.json | Gate session token |
delegation.proof.json | Delegation / VC-style proofs |
gate.402-response.json | HTTP 402 access restriction body |
gate.403-response.json | HTTP 403 body |
gate.429-response.json | HTTP 429 body |
gate.451-response.json | HTTP 451 body |
Commerce, operator & compliance
| Schema file | Role |
|---|---|
commerce.negotiation.json | Commerce negotiation envelope |
service.listing.json | Marketplace / service listing |
agent.wallet.json | Agent wallet structure |
operator.privacy-policy.json | Operator privacy policy profile |
operator.spending-policy.json | Spending limits / policy |
data.withdrawal.json | Data withdrawal / erasure flows |
conformance.credential.json | Conformance credential (tier claims) |
audit-log.json | Audit log entry |
Validate an event envelope
Schema Validation
import Ajv from 'ajv';import addFormats from 'ajv-formats';import schema from './schemas/v0.1/event.envelope.json';const ajv = new Ajv({ allErrors: true });addFormats(ajv);const validate = ajv.compile(schema);const event = {specversion: '1.0',id: '01HN3QK7GX-1708123456000',source: 'did:web:example.com:u:acme-corp',type: 'com.example.entity.updated',time: '2026-02-22T14:30:00Z',datacontenttype: 'application/json',eep_version: '0.1',data: { field: 'bio', current: 'New bio' },};if (!validate(event)) {console.error(validate.errors);}
Validate a Manifest
Manifest Validation
import { validateManifest } from '@eep-dev/discovery';const result = validateManifest({did: 'did:web:api.example.com',eep_version: '0.1',layers: { layer1: 'https://api.example.com/eep' },supported_content_types: ['application/json'],pqc_ready: false,x402_enabled: true,});console.log(result.valid); // true
Validate Gate Config
Gate Config Validation
import { parseGateConfig } from '@eep-dev/gates';const config = parseGateConfig({default_tier: 'public',tiers: {public: {requirements: [],access: ['profile.summary'],},premium: {label: 'Premium Access',requirements: [{ type: 'payment', amount: 10, currency: 'usd', per: 'month' },],access: ['*'],rate_limit: { requests_per_minute: 100 },},},fallback_behavior: 'default',});// Throws if invalid