openvibers/openvibe.contracts Commits
v0.11.0: Tools jobs — tools.job.create, tools.job.read, tools.job.cancel
Changes
nnew file mode 100644@@@ -0,0 +1,19 @@++{++ "id": "tools.job.cancel",++ "version": "1.0",++ "owner": "tools",++ "status": "active",++ "visibility": "public",++ "description": "Cancel a queued or running job the calling principal created.",++ "permissions": [++ "tools:jobs:write"++ ],++ "resourceConstraints": [++ "owner"++ ],++ "quotaClass": "tools-job",++ "events": [],++ "implementedBy": [++ "DELETE /api/v1/jobs/:id"++ ]++}nnew file mode 100644@@@ -0,0 +1,19 @@++{++ "id": "tools.job.create",++ "version": "1.0",++ "owner": "tools",++ "status": "active",++ "visibility": "public",++ "description": "Submit an asynchronous tool job (img.process, audio.process, docs.process) with its input files; the job is owned by the calling principal. Idempotency-Key supported.",++ "permissions": [++ "tools:jobs:write"++ ],++ "resourceConstraints": [++ "owner"++ ],++ "quotaClass": "tools-job",++ "events": [],++ "implementedBy": [++ "POST /api/v1/jobs (Tools satellites: img, audio, docs)"++ ]++}nnew file mode 100644@@@ -0,0 +1,21 @@++{++ "id": "tools.job.read",++ "version": "1.0",++ "owner": "tools",++ "status": "active",++ "visibility": "public",++ "description": "Read a job the calling principal created: state, progress, result (Media object references or local files), SSE progress with Last-Event-ID resume, result files.",++ "permissions": [++ "tools:jobs:read"++ ],++ "resourceConstraints": [++ "owner"++ ],++ "quotaClass": "tools-read",++ "events": [],++ "implementedBy": [++ "GET /api/v1/jobs/:id",++ "GET /api/v1/jobs/:id/events",++ "GET /api/v1/jobs/:id/files/:n"++ ]++}@@@ -1,7 +1,7 @@{-- "version": "0.1.0",++ "version": "0.2.0","contractRanges": {-- "openvibe-contracts": ">=0.2.0 <1.0.0"++ "openvibe-contracts": ">=0.7.0 <1.0.0"},"id": "tools","name": "OpenVibe.Tools",@@@ -12,10 +12,15 @@],"publicOrigin": "https://openvibe.tools","health": "/api/health",-- "capabilities": [],++ "capabilities": [++ "tools.job.create",++ "tools.job.read",++ "tools.job.cancel"++ ],"eventsProduced": [],"eventsConsumed": [],"namespacesOwned": ["tools.*"-- ]++ ],++ "notes": "Wave 11: asynchronous jobs on the img, audio and docs satellites (POST/GET/DELETE /api/v1/jobs, SSE events). Job lifecycle is not yet published to OpenVibe.Events, so eventsProduced stays empty. Tools consumes media.object.upload and media.object.read (namespace tools) when TOOLS_JOB_RESULTS=media."}@@@ -1,6 +1,6 @@{"name": "openvibe-contracts",-- "version": "0.10.0",++ "version": "0.11.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,19 @@
@@ -0,0 +1,19 @@
+{
+ "id": "tools.job.cancel",
+ "version": "1.0",
+ "owner": "tools",
+ "status": "active",
+ "visibility": "public",
+ "description": "Cancel a queued or running job the calling principal created.",
+ "permissions": [
+ "tools:jobs:write"
+ ],
+ "resourceConstraints": [
+ "owner"
+ ],
+ "quotaClass": "tools-job",
+ "events": [],
+ "implementedBy": [
+ "DELETE /api/v1/jobs/:id"
+ ]
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,19 @@
@@ -0,0 +1,19 @@
+{
+ "id": "tools.job.create",
+ "version": "1.0",
+ "owner": "tools",
+ "status": "active",
+ "visibility": "public",
+ "description": "Submit an asynchronous tool job (img.process, audio.process, docs.process) with its input files; the job is owned by the calling principal. Idempotency-Key supported.",
+ "permissions": [
+ "tools:jobs:write"
+ ],
+ "resourceConstraints": [
+ "owner"
+ ],
+ "quotaClass": "tools-job",
+ "events": [],
+ "implementedBy": [
+ "POST /api/v1/jobs (Tools satellites: img, audio, docs)"
+ ]
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
+{
+ "id": "tools.job.read",
+ "version": "1.0",
+ "owner": "tools",
+ "status": "active",
+ "visibility": "public",
+ "description": "Read a job the calling principal created: state, progress, result (Media object references or local files), SSE progress with Last-Event-ID resume, result files.",
+ "permissions": [
+ "tools:jobs:read"
+ ],
+ "resourceConstraints": [
+ "owner"
+ ],
+ "quotaClass": "tools-read",
+ "events": [],
+ "implementedBy": [
+ "GET /api/v1/jobs/:id",
+ "GET /api/v1/jobs/:id/events",
+ "GET /api/v1/jobs/:id/files/:n"
+ ]
+}
@@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
{
{
- "version": "0.1.0",
+ "version": "0.2.0",
"contractRanges": {
"contractRanges": {
- "openvibe-contracts": ">=0.2.0 <1.0.0"
+ "openvibe-contracts": ">=0.7.0 <1.0.0"
},
},
"id": "tools",
"id": "tools",
"name": "OpenVibe.Tools",
"name": "OpenVibe.Tools",
@@ -12,10 +12,15 @@
@@ -12,10 +12,15 @@
],
],
"publicOrigin": "https://openvibe.tools",
"publicOrigin": "https://openvibe.tools",
"health": "/api/health",
"health": "/api/health",
- "capabilities": [],
+ "capabilities": [
+ "tools.job.create",
+ "tools.job.read",
+ "tools.job.cancel"
+ ],
"eventsProduced": [],
"eventsProduced": [],
"eventsConsumed": [],
"eventsConsumed": [],
"namespacesOwned": [
"namespacesOwned": [
"tools.*"
"tools.*"
- ]
+ ],
+ "notes": "Wave 11: asynchronous jobs on the img, audio and docs satellites (POST/GET/DELETE /api/v1/jobs, SSE events). Job lifecycle is not yet published to OpenVibe.Events, so eventsProduced stays empty. Tools consumes media.object.upload and media.object.read (namespace tools) when TOOLS_JOB_RESULTS=media."
}
}
@@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
{
{
"name": "openvibe-contracts",
"name": "openvibe-contracts",
- "version": "0.10.0",
+ "version": "0.11.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",