openvibers/openvibe.contracts Commits
v0.6.0: OpenVibe.Events is alpha — manifest and capabilities events.event.publish/read, events.subscription.manage, events.delivery.admin
Changes
nnew file mode 100644@@@ -0,0 +1,20 @@++{++ "id": "events.delivery.admin",++ "version": "1.0",++ "owner": "events",++ "status": "active",++ "visibility": "internal",++ "description": "Operator access: inspect deliveries (including the dead-letter queue) and replay events to any subscription.",++ "permissions": [++ "events:admin"++ ],++ "resourceConstraints": [++ "none"++ ],++ "quotaClass": "events-admin",++ "events": [],++ "implementedBy": [++ "GET /api/v1/deliveries",++ "POST /api/v1/deliveries/replay"++ ]++}nnew file mode 100644@@@ -0,0 +1,20 @@++{++ "id": "events.event.publish",++ "version": "1.0",++ "owner": "events",++ "status": "active",++ "visibility": "internal",++ "description": "Publish durable events (events.event-envelope@1) as the calling service: source must be the principal's service slug and event_type must use a prefix that source owns. Idempotent on event_id.",++ "inputSchema": "events.event-envelope@1",++ "permissions": [++ "events:write"++ ],++ "resourceConstraints": [++ "owner"++ ],++ "quotaClass": "events-publish",++ "events": [],++ "implementedBy": [++ "POST /api/v1/events"++ ]++}nnew file mode 100644@@@ -0,0 +1,24 @@++{++ "id": "events.event.read",++ "version": "1.0",++ "owner": "events",++ "status": "active",++ "visibility": "internal",++ "description": "Read retained events of every visibility with a seq cursor (pull consumers), keep per-consumer checkpoints, and open realtime streams as a service principal.",++ "outputSchema": "events.event-envelope@1",++ "permissions": [++ "events:read"++ ],++ "resourceConstraints": [++ "none"++ ],++ "quotaClass": "events-read",++ "events": [],++ "implementedBy": [++ "GET /api/v1/events",++ "GET /api/v1/events/:event_id",++ "GET /api/v1/checkpoints",++ "PUT /api/v1/checkpoints",++ "GET /realtime/stream"++ ]++}nnew file mode 100644@@@ -0,0 +1,23 @@++{++ "id": "events.subscription.manage",++ "version": "1.0",++ "owner": "events",++ "status": "active",++ "visibility": "internal",++ "description": "Create, list, disable and enable the calling service's own webhook subscriptions (topic pattern + allow-listed internal endpoint, HMAC-signed deliveries with retry and dead letters).",++ "permissions": [++ "events:subscribe"++ ],++ "resourceConstraints": [++ "owner"++ ],++ "quotaClass": "events-subscribe",++ "events": [],++ "implementedBy": [++ "POST /api/v1/subscriptions",++ "GET /api/v1/subscriptions",++ "GET /api/v1/subscriptions/:id",++ "POST /api/v1/subscriptions/:id/disable",++ "POST /api/v1/subscriptions/:id/enable"++ ]++}@@@ -1,16 +1,26 @@{"version": "0.1.0","contractRanges": {-- "openvibe-contracts": "^0.1.0"++ "openvibe-contracts": ">=0.5.1 <1.0.0"},"id": "events","name": "OpenVibe.Events",-- "status": "placeholder",++ "status": "alpha","repository": "OpenVibers/OpenVibe.Events",-- "domains": [],-- "capabilities": [],++ "domains": [++ "events.openvibe.network"++ ],++ "publicOrigin": "https://events.openvibe.network",++ "health": "/api/health",++ "ready": "/api/ready",++ "capabilities": [++ "events.event.publish",++ "events.event.read",++ "events.subscription.manage",++ "events.delivery.admin"++ ],"eventsProduced": [],"eventsConsumed": [],"namespacesOwned": [],-- "notes": "Durable events, subscriptions, delivery, retry, dead letters and replay for the network. Charter only; no runtime."++ "notes": "Durable events, subscriptions, signed delivery with retry, dead letters and replay; SSE realtime gateway at /realtime/stream until ADR-005 decides where Realtime lives."}@@@ -1,6 +1,6 @@{"name": "openvibe-contracts",-- "version": "0.5.1",++ "version": "0.6.0","description": "Machine-readable contracts for the OpenVibe network: schemas, manifests, ids, error envelope, capability checks.","main": "index.js","types": "generated/typescript/index.d.ts",
new file mode 100644
new file mode 100644
@@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
+{
+ "id": "events.delivery.admin",
+ "version": "1.0",
+ "owner": "events",
+ "status": "active",
+ "visibility": "internal",
+ "description": "Operator access: inspect deliveries (including the dead-letter queue) and replay events to any subscription.",
+ "permissions": [
+ "events:admin"
+ ],
+ "resourceConstraints": [
+ "none"
+ ],
+ "quotaClass": "events-admin",
+ "events": [],
+ "implementedBy": [
+ "GET /api/v1/deliveries",
+ "POST /api/v1/deliveries/replay"
+ ]
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
+{
+ "id": "events.event.publish",
+ "version": "1.0",
+ "owner": "events",
+ "status": "active",
+ "visibility": "internal",
+ "description": "Publish durable events (events.event-envelope@1) as the calling service: source must be the principal's service slug and event_type must use a prefix that source owns. Idempotent on event_id.",
+ "inputSchema": "events.event-envelope@1",
+ "permissions": [
+ "events:write"
+ ],
+ "resourceConstraints": [
+ "owner"
+ ],
+ "quotaClass": "events-publish",
+ "events": [],
+ "implementedBy": [
+ "POST /api/v1/events"
+ ]
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,24 @@
@@ -0,0 +1,24 @@
+{
+ "id": "events.event.read",
+ "version": "1.0",
+ "owner": "events",
+ "status": "active",
+ "visibility": "internal",
+ "description": "Read retained events of every visibility with a seq cursor (pull consumers), keep per-consumer checkpoints, and open realtime streams as a service principal.",
+ "outputSchema": "events.event-envelope@1",
+ "permissions": [
+ "events:read"
+ ],
+ "resourceConstraints": [
+ "none"
+ ],
+ "quotaClass": "events-read",
+ "events": [],
+ "implementedBy": [
+ "GET /api/v1/events",
+ "GET /api/v1/events/:event_id",
+ "GET /api/v1/checkpoints",
+ "PUT /api/v1/checkpoints",
+ "GET /realtime/stream"
+ ]
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
+{
+ "id": "events.subscription.manage",
+ "version": "1.0",
+ "owner": "events",
+ "status": "active",
+ "visibility": "internal",
+ "description": "Create, list, disable and enable the calling service's own webhook subscriptions (topic pattern + allow-listed internal endpoint, HMAC-signed deliveries with retry and dead letters).",
+ "permissions": [
+ "events:subscribe"
+ ],
+ "resourceConstraints": [
+ "owner"
+ ],
+ "quotaClass": "events-subscribe",
+ "events": [],
+ "implementedBy": [
+ "POST /api/v1/subscriptions",
+ "GET /api/v1/subscriptions",
+ "GET /api/v1/subscriptions/:id",
+ "POST /api/v1/subscriptions/:id/disable",
+ "POST /api/v1/subscriptions/:id/enable"
+ ]
+}
@@ -1,16 +1,26 @@
@@ -1,16 +1,26 @@
{
{
"version": "0.1.0",
"version": "0.1.0",
"contractRanges": {
"contractRanges": {
- "openvibe-contracts": "^0.1.0"
+ "openvibe-contracts": ">=0.5.1 <1.0.0"
},
},
"id": "events",
"id": "events",
"name": "OpenVibe.Events",
"name": "OpenVibe.Events",
- "status": "placeholder",
+ "status": "alpha",
"repository": "OpenVibers/OpenVibe.Events",
"repository": "OpenVibers/OpenVibe.Events",
- "domains": [],
- "capabilities": [],
+ "domains": [
+ "events.openvibe.network"
+ ],
+ "publicOrigin": "https://events.openvibe.network",
+ "health": "/api/health",
+ "ready": "/api/ready",
+ "capabilities": [
+ "events.event.publish",
+ "events.event.read",
+ "events.subscription.manage",
+ "events.delivery.admin"
+ ],
"eventsProduced": [],
"eventsProduced": [],
"eventsConsumed": [],
"eventsConsumed": [],
"namespacesOwned": [],
"namespacesOwned": [],
- "notes": "Durable events, subscriptions, delivery, retry, dead letters and replay for the network. Charter only; no runtime."
+ "notes": "Durable events, subscriptions, signed delivery with retry, dead letters and replay; SSE realtime gateway at /realtime/stream until ADR-005 decides where Realtime lives."
}
}
@@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
{
{
"name": "openvibe-contracts",
"name": "openvibe-contracts",
- "version": "0.5.1",
+ "version": "0.6.0",
"description": "Machine-readable contracts for the OpenVibe network: schemas, manifests, ids, error envelope, capability checks.",
"description": "Machine-readable contracts for the OpenVibe network: schemas, manifests, ids, error envelope, capability checks.",
"main": "index.js",
"main": "index.js",
"types": "generated/typescript/index.d.ts",
"types": "generated/typescript/index.d.ts",