Add v1 offer, entitlement, and issuer manifest schemas

This commit is contained in:
Joshua 2026-02-17 11:43:31 -08:00
parent 83bfd1829d
commit ac6a5df8ab
4 changed files with 345 additions and 0 deletions

View File

@ -28,6 +28,10 @@ docs/
roadmap-membership-platform.md
review-notes.md
platform-spec-alignment-review.md
schemas/
offer.v1.schema.json
entitlement.v1.schema.json
issuer-manifest.v1.schema.json
README.md
```

View File

@ -0,0 +1,94 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://edut.ai/schemas/entitlement.v1.schema.json",
"title": "EDUT Entitlement Schema v1",
"type": "object",
"additionalProperties": false,
"required": [
"schema_version",
"entitlement_id",
"offer_id",
"issuer_id",
"wallet_address",
"state",
"issued_at"
],
"properties": {
"schema_version": {
"type": "string",
"const": "entitlement.v1"
},
"entitlement_id": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9._:-]{2,191}$"
},
"offer_id": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9._-]{2,127}$"
},
"issuer_id": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9._-]{2,127}$"
},
"wallet_address": {
"type": "string",
"pattern": "^0x[a-fA-F0-9]{40}$"
},
"workspace_id": {
"type": [
"string",
"null"
],
"pattern": "^[a-z0-9][a-z0-9._-]{2,127}$"
},
"state": {
"type": "string",
"enum": [
"active",
"suspended",
"revoked",
"expired"
]
},
"purchase": {
"type": "object",
"additionalProperties": false,
"required": [
"tx_hash",
"chain_id",
"currency",
"amount_atomic",
"policy_hash"
],
"properties": {
"tx_hash": {
"type": "string",
"pattern": "^0x[a-fA-F0-9]{64}$"
},
"chain_id": {
"type": "integer",
"minimum": 1
},
"currency": {
"type": "string"
},
"amount_atomic": {
"type": "string",
"pattern": "^[0-9]{1,78}$"
},
"policy_hash": {
"type": "string",
"pattern": "^[a-fA-F0-9]{64}$"
}
}
},
"issued_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
}

View File

@ -0,0 +1,96 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://edut.ai/schemas/issuer-manifest.v1.schema.json",
"title": "EDUT Issuer Manifest Schema v1",
"type": "object",
"additionalProperties": false,
"required": [
"schema_version",
"issuer_id",
"display_name",
"signing_keys",
"capabilities",
"published_at"
],
"properties": {
"schema_version": {
"type": "string",
"const": "issuer_manifest.v1"
},
"issuer_id": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9._-]{2,127}$"
},
"display_name": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"contact_email": {
"type": "string",
"format": "email"
},
"signing_keys": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"key_id",
"algorithm",
"public_key",
"status"
],
"properties": {
"key_id": {
"type": "string",
"pattern": "^[a-zA-Z0-9._:-]{3,128}$"
},
"algorithm": {
"type": "string",
"enum": [
"ed25519",
"secp256k1"
]
},
"public_key": {
"type": "string",
"minLength": 16,
"maxLength": 2048
},
"status": {
"type": "string",
"enum": [
"active",
"retired"
]
}
}
}
},
"capabilities": {
"type": "object",
"additionalProperties": false,
"required": [
"can_publish_offers",
"can_issue_entitlements"
],
"properties": {
"can_publish_offers": {
"type": "boolean"
},
"can_issue_entitlements": {
"type": "boolean"
},
"requires_review": {
"type": "boolean"
}
}
},
"published_at": {
"type": "string",
"format": "date-time"
}
}
}

View File

@ -0,0 +1,151 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://edut.ai/schemas/offer.v1.schema.json",
"title": "EDUT Offer Schema v1",
"type": "object",
"additionalProperties": false,
"required": [
"schema_version",
"offer_id",
"issuer_id",
"title",
"status",
"pricing",
"policies",
"created_at",
"updated_at"
],
"properties": {
"schema_version": {
"type": "string",
"const": "offer.v1"
},
"offer_id": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9._-]{2,127}$"
},
"issuer_id": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9._-]{2,127}$"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"summary": {
"type": "string",
"maxLength": 400
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"paused",
"retired"
]
},
"pricing": {
"type": "object",
"additionalProperties": false,
"required": [
"currency",
"amount_atomic",
"decimals"
],
"properties": {
"currency": {
"type": "string",
"enum": [
"USDC",
"ETH"
]
},
"amount_atomic": {
"type": "string",
"pattern": "^[0-9]{1,78}$"
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 18
},
"chain_id": {
"type": "integer",
"minimum": 1
}
}
},
"policies": {
"type": "object",
"additionalProperties": false,
"required": [
"member_only",
"workspace_bound",
"transferable"
],
"properties": {
"member_only": {
"type": "boolean"
},
"workspace_bound": {
"type": "boolean"
},
"transferable": {
"type": "boolean"
},
"max_per_wallet": {
"type": [
"integer",
"null"
],
"minimum": 1
},
"requires_admin_approval": {
"type": "boolean"
}
}
},
"entitlement": {
"type": "object",
"additionalProperties": false,
"required": [
"type",
"scope"
],
"properties": {
"type": {
"type": "string",
"enum": [
"module_license",
"service_plan",
"access_pass"
]
},
"scope": {
"type": "string",
"enum": [
"wallet",
"workspace"
]
},
"runtime_policy_ref": {
"type": "string"
}
}
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
},
"metadata": {
"type": "object",
"additionalProperties": true
}
}
}