openvibers/openvibe.contracts Commits
v0.5.0: paste capabilities owned by Community (create, write as acting subject, moderate); identity.subject.resolve active
Changes
@@@ -1,10 +1,10 @@{"id": "community.paste.create","version": "1.0",-- "owner": "live",++ "owner": "community","status": "active","visibility": "public",-- "description": "Create a paste. Authority moves to OpenVibe.Community in Wave 5.",++ "description": "Create a paste (text or screenshot). A service token creates it for the acting subject named in X-OV-Subject, or as origin \"ai\" for derived pastes (roadmap 33).","outputSchema": "common.entity-ref@1","permissions": ["community:write"@@@ -17,6 +17,6 @@"community.paste.created"],"implementedBy": [-- "POST /api/pastes (Live; Community proxies)"++ "POST /api/pastes (Community)"]}nnew file mode 100644@@@ -0,0 +1,23 @@++{++ "id": "community.paste.moderate",++ "version": "1.0",++ "owner": "community",++ "status": "active",++ "visibility": "internal",++ "description": "Staff moderation of any paste or comment (censor, delete, bulk). The caller vouches that the acting subject is staff.",++ "permissions": [++ "community:moderate"++ ],++ "resourceConstraints": [++ "none"++ ],++ "quotaClass": "community-moderate",++ "events": [++ "community.paste.moderated"++ ],++ "implementedBy": [++ "POST /api/pastes/:slug/censor",++ "POST /api/pastes/bulk",++ "DELETE /api/pastes/:slug/comments/:id"++ ]++}nnew file mode 100644@@@ -0,0 +1,23 @@++{++ "id": "community.paste.write",++ "version": "1.0",++ "owner": "community",++ "status": "active",++ "visibility": "first-party",++ "description": "Edit, delete, fork, like, copy and comment on pastes as the acting subject (X-OV-Subject). Ownership is checked by Community, never by the caller.",++ "permissions": [++ "community:write"++ ],++ "resourceConstraints": [++ "owner"++ ],++ "quotaClass": "community-write",++ "events": [++ "community.paste.updated",++ "community.comment.created"++ ],++ "implementedBy": [++ "PUT|DELETE /api/pastes/:slug",++ "POST /api/pastes/:slug/{fork,like,copy,comments}"++ ]++}@@@ -2,7 +2,7 @@"id": "identity.subject.resolve","version": "1.0","owner": "network",-- "status": "planned",++ "status": "active","visibility": "first-party","description": "Resolve a subject (or a legacy service-local id) to its canonical SubjectRef and display projection.","inputSchema": "identity.legacy-identity-map@1",@@@ -15,5 +15,8 @@],"quotaClass": "identity-read","events": [],-- "implementedBy": []++ "implementedBy": [++ "GET /internal/identity/resolve",++ "POST /internal/identity/resolve-batch"++ ]}@@@ -1,7 +1,7 @@{"version": "0.1.0","contractRanges": {-- "openvibe-contracts": "^0.1.0"++ "openvibe-contracts": ">=0.5.0 <1.0.0"},"id": "community","name": "OpenVibe.Community",@@@ -13,6 +13,9 @@"publicOrigin": "https://openvibe.community","health": "/api/health","capabilities": [++ "community.paste.create",++ "community.paste.write",++ "community.paste.moderate","community.post.create"],"eventsProduced": [],@@@ -15,13 +15,12 @@"health": "/api/health","ready": "/api/ready","capabilities": [-- "chat.message.send",-- "community.paste.create"++ "chat.message.send"],"eventsProduced": [],"eventsConsumed": [],"namespacesOwned": ["live.*"],-- "notes": "Still hosts chat, ingest, comments, money and AI authorities until Waves 5-13."++ "notes": "Still hosts chat, ingest, money and AI authorities until Waves 6-13; paste authority moved to Community (W5)."}@@@ -1,6 +1,6 @@{"name": "openvibe-contracts",-- "version": "0.4.0",++ "version": "0.5.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",
@@ -1,10 +1,10 @@
@@ -1,10 +1,10 @@
{
{
"id": "community.paste.create",
"id": "community.paste.create",
"version": "1.0",
"version": "1.0",
- "owner": "live",
+ "owner": "community",
"status": "active",
"status": "active",
"visibility": "public",
"visibility": "public",
- "description": "Create a paste. Authority moves to OpenVibe.Community in Wave 5.",
+ "description": "Create a paste (text or screenshot). A service token creates it for the acting subject named in X-OV-Subject, or as origin \"ai\" for derived pastes (roadmap 33).",
"outputSchema": "common.entity-ref@1",
"outputSchema": "common.entity-ref@1",
"permissions": [
"permissions": [
"community:write"
"community:write"
@@ -17,6 +17,6 @@
@@ -17,6 +17,6 @@
"community.paste.created"
"community.paste.created"
],
],
"implementedBy": [
"implementedBy": [
- "POST /api/pastes (Live; Community proxies)"
+ "POST /api/pastes (Community)"
]
]
}
}
new file mode 100644
new file mode 100644
@@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
+{
+ "id": "community.paste.moderate",
+ "version": "1.0",
+ "owner": "community",
+ "status": "active",
+ "visibility": "internal",
+ "description": "Staff moderation of any paste or comment (censor, delete, bulk). The caller vouches that the acting subject is staff.",
+ "permissions": [
+ "community:moderate"
+ ],
+ "resourceConstraints": [
+ "none"
+ ],
+ "quotaClass": "community-moderate",
+ "events": [
+ "community.paste.moderated"
+ ],
+ "implementedBy": [
+ "POST /api/pastes/:slug/censor",
+ "POST /api/pastes/bulk",
+ "DELETE /api/pastes/:slug/comments/:id"
+ ]
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
+{
+ "id": "community.paste.write",
+ "version": "1.0",
+ "owner": "community",
+ "status": "active",
+ "visibility": "first-party",
+ "description": "Edit, delete, fork, like, copy and comment on pastes as the acting subject (X-OV-Subject). Ownership is checked by Community, never by the caller.",
+ "permissions": [
+ "community:write"
+ ],
+ "resourceConstraints": [
+ "owner"
+ ],
+ "quotaClass": "community-write",
+ "events": [
+ "community.paste.updated",
+ "community.comment.created"
+ ],
+ "implementedBy": [
+ "PUT|DELETE /api/pastes/:slug",
+ "POST /api/pastes/:slug/{fork,like,copy,comments}"
+ ]
+}
@@ -2,7 +2,7 @@
@@ -2,7 +2,7 @@
"id": "identity.subject.resolve",
"id": "identity.subject.resolve",
"version": "1.0",
"version": "1.0",
"owner": "network",
"owner": "network",
- "status": "planned",
+ "status": "active",
"visibility": "first-party",
"visibility": "first-party",
"description": "Resolve a subject (or a legacy service-local id) to its canonical SubjectRef and display projection.",
"description": "Resolve a subject (or a legacy service-local id) to its canonical SubjectRef and display projection.",
"inputSchema": "identity.legacy-identity-map@1",
"inputSchema": "identity.legacy-identity-map@1",
@@ -15,5 +15,8 @@
@@ -15,5 +15,8 @@
],
],
"quotaClass": "identity-read",
"quotaClass": "identity-read",
"events": [],
"events": [],
- "implementedBy": []
+ "implementedBy": [
+ "GET /internal/identity/resolve",
+ "POST /internal/identity/resolve-batch"
+ ]
}
}
@@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
{
{
"version": "0.1.0",
"version": "0.1.0",
"contractRanges": {
"contractRanges": {
- "openvibe-contracts": "^0.1.0"
+ "openvibe-contracts": ">=0.5.0 <1.0.0"
},
},
"id": "community",
"id": "community",
"name": "OpenVibe.Community",
"name": "OpenVibe.Community",
@@ -13,6 +13,9 @@
@@ -13,6 +13,9 @@
"publicOrigin": "https://openvibe.community",
"publicOrigin": "https://openvibe.community",
"health": "/api/health",
"health": "/api/health",
"capabilities": [
"capabilities": [
+ "community.paste.create",
+ "community.paste.write",
+ "community.paste.moderate",
"community.post.create"
"community.post.create"
],
],
"eventsProduced": [],
"eventsProduced": [],
@@ -15,13 +15,12 @@
@@ -15,13 +15,12 @@
"health": "/api/health",
"health": "/api/health",
"ready": "/api/ready",
"ready": "/api/ready",
"capabilities": [
"capabilities": [
- "chat.message.send",
- "community.paste.create"
+ "chat.message.send"
],
],
"eventsProduced": [],
"eventsProduced": [],
"eventsConsumed": [],
"eventsConsumed": [],
"namespacesOwned": [
"namespacesOwned": [
"live.*"
"live.*"
],
],
- "notes": "Still hosts chat, ingest, comments, money and AI authorities until Waves 5-13."
+ "notes": "Still hosts chat, ingest, money and AI authorities until Waves 6-13; paste authority moved to Community (W5)."
}
}
@@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
{
{
"name": "openvibe-contracts",
"name": "openvibe-contracts",
- "version": "0.4.0",
+ "version": "0.5.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",