openvibers/openvibe.events Commits
Propose the events.publish/subscribe/read/admin capability manifests and the events service manifest for openvibe-contracts
Changes
nnew file mode 100644@@@ -0,0 +1,20 @@++{++ "id": "events.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.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.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.subscribe",++ "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"++ ]++}nnew file mode 100644@@@ -0,0 +1,26 @@++{++ "version": "0.1.0",++ "contractRanges": {++ "openvibe-contracts": ">=0.5.1 <1.0.0"++ },++ "id": "events",++ "name": "OpenVibe.Events",++ "status": "alpha",++ "repository": "OpenVibers/OpenVibe.Events",++ "domains": [++ "events.openvibe.network"++ ],++ "publicOrigin": "https://events.openvibe.network",++ "health": "/api/health",++ "ready": "/api/ready",++ "capabilities": [++ "events.publish",++ "events.subscribe",++ "events.read",++ "events.admin"++ ],++ "eventsProduced": [],++ "eventsConsumed": [],++ "namespacesOwned": [],++ "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."++}
new file mode 100644
new file mode 100644
@@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
+{
+ "id": "events.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.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.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.subscribe",
+ "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"
+ ]
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
+{
+ "version": "0.1.0",
+ "contractRanges": {
+ "openvibe-contracts": ">=0.5.1 <1.0.0"
+ },
+ "id": "events",
+ "name": "OpenVibe.Events",
+ "status": "alpha",
+ "repository": "OpenVibers/OpenVibe.Events",
+ "domains": [
+ "events.openvibe.network"
+ ],
+ "publicOrigin": "https://events.openvibe.network",
+ "health": "/api/health",
+ "ready": "/api/ready",
+ "capabilities": [
+ "events.publish",
+ "events.subscribe",
+ "events.read",
+ "events.admin"
+ ],
+ "eventsProduced": [],
+ "eventsConsumed": [],
+ "namespacesOwned": [],
+ "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."
+}