openvibers/openvibe.contracts Commits

Define shared daily quest contracts and step contribution (#369)

OP OpenVibers committed 4 days ago · 5710a4400e · 71 files, +1544 −98

* Define daily quest contracts and contribution capability

* 0.355.0: on top of main (Daily quest contracts and step contribution)

Changes

ddiff --git a/CHANGELOG.md b/CHANGELOG.md
iindex 5bf00081..d5c1ddf5 100644
---- a/CHANGELOG.md
++++ b/CHANGELOG.md
@@@ -1,5 +1,9 @@
# Changelog
++## 0.355.0 — 2026-11-09
++
++- Daily quest contracts and step contribution
++
## 0.354.0 — 2026-11-09
- Vibe compare and Exchange chat export contracts (the Chat move)
ddiff --git a/contracts/catalog.json b/contracts/catalog.json
iindex 973c689c..2930dd32 100644
---- a/contracts/catalog.json
++++ b/contracts/catalog.json
@@@ -8382,6 +8382,42 @@
"status": "active",
"adr": "ADR-031"
},
++ {
++ "id": "quest.daily",
++ "version": "1.0.0",
++ "owner": "quest",
++ "schema": "quest/daily.v1.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active"
++ },
++ {
++ "id": "quest.daily-progress",
++ "version": "1.0.0",
++ "owner": "quest",
++ "schema": "quest/daily-progress.v1.json",
++ "visibility": "first-party",
++ "compatibility": "backward",
++ "status": "active"
++ },
++ {
++ "id": "quest.step-type",
++ "version": "1.0.0",
++ "owner": "quest",
++ "schema": "quest/step-type.v1.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active"
++ },
++ {
++ "id": "quest.step-type-request",
++ "version": "1.0.0",
++ "owner": "quest",
++ "schema": "quest/step-type-request.v1.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active"
++ },
{
"id": "quest.app-quest-request",
"version": "1.0.0",
ddiff --git a/contracts/quest/daily-progress.v1.json b/contracts/quest/daily-progress.v1.json
nnew file mode 100644
iindex 00000000..a5574c03
---- /dev/null
++++ b/contracts/quest/daily-progress.v1.json
@@@ -0,0 +1,36 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/quest/daily-progress.v1.json",
++ "title": "QuestDailyProgress",
++ "description": "quest.daily-progress@1: the caller's own progress, counted from Events in their IANA time zone.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": ["date", "title", "story", "steps", "source", "finished_today", "progress", "completed", "streak", "time_zone"],
++ "properties": {
++ "date": { "type": "string", "format": "date" },
++ "title": { "type": "string", "minLength": 1, "maxLength": 80 },
++ "story": { "type": "string", "minLength": 1, "maxLength": 180 },
++ "steps": {
++ "type": "array", "minItems": 3, "maxItems": 3,
++ "items": {
++ "type": "object", "additionalProperties": false,
++ "required": ["id", "event_type", "site", "sentence", "href", "weight", "count", "verification", "status", "source", "progress", "done"],
++ "properties": {
++ "id": { "type": "string" }, "event_type": { "type": "string" }, "site": { "type": "string" },
++ "sentence": { "type": "string" }, "href": { "type": "string", "format": "uri" },
++ "weight": { "type": "integer" }, "count": { "type": "integer", "const": 1 },
++ "verification": { "type": "string" }, "status": { "const": "approved" },
++ "source": { "type": "string" }, "progress": { "type": "integer", "minimum": 0 },
++ "done": { "type": "boolean" }
++ }
++ }
++ },
++ "source": { "enum": ["ai", "rotation"] },
++ "finished_today": { "type": "integer", "minimum": 0 },
++ "progress": { "type": "integer", "minimum": 0, "maximum": 3 },
++ "completed": { "type": "boolean" },
++ "completed_at": { "type": ["string", "null"], "format": "date-time" },
++ "streak": { "type": "integer", "minimum": 0 },
++ "time_zone": { "type": "string" }
++ }
++}
ddiff --git a/contracts/quest/daily.v1.json b/contracts/quest/daily.v1.json
nnew file mode 100644
iindex 00000000..b2866c3e
---- /dev/null
++++ b/contracts/quest/daily.v1.json
@@@ -0,0 +1,17 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/quest/daily.v1.json",
++ "title": "QuestDaily",
++ "description": "quest.daily@1: one quest shared by everyone on this UTC date. Progress is private and is not in this answer.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": ["date", "title", "story", "steps", "source", "finished_today"],
++ "properties": {
++ "date": { "type": "string", "format": "date" },
++ "title": { "type": "string", "minLength": 1, "maxLength": 80 },
++ "story": { "type": "string", "minLength": 1, "maxLength": 180 },
++ "steps": { "type": "array", "minItems": 3, "maxItems": 3, "items": { "$ref": "step-type.v1.json" } },
++ "source": { "enum": ["ai", "rotation"] },
++ "finished_today": { "type": "integer", "minimum": 0 }
++ }
++}
ddiff --git a/contracts/quest/step-type-request.v1.json b/contracts/quest/step-type-request.v1.json
nnew file mode 100644
iindex 00000000..c3333db7
---- /dev/null
++++ b/contracts/quest/step-type-request.v1.json
@@@ -0,0 +1,17 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/quest/step-type-request.v1.json",
++ "title": "QuestStepTypeRequest",
++ "description": "A developer app's proposed daily step. Quest accepts only topics in its known Events catalog, verifies the site's host and queues the proposal for staff review.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": ["id", "event_type", "site", "sentence", "href"],
++ "properties": {
++ "id": { "type": "string", "pattern": "^[a-z][a-z0-9-]{1,47}$" },
++ "event_type": { "type": "string", "minLength": 3, "maxLength": 160 },
++ "site": { "type": "string", "format": "hostname" },
++ "sentence": { "type": "string", "minLength": 1, "maxLength": 120 },
++ "href": { "type": "string", "format": "uri", "pattern": "^https://" },
++ "weight": { "type": "integer", "minimum": 1, "maximum": 5 }
++ }
++}
ddiff --git a/contracts/quest/step-type.v1.json b/contracts/quest/step-type.v1.json
nnew file mode 100644
iindex 00000000..7b09b73c
---- /dev/null
++++ b/contracts/quest/step-type.v1.json
@@@ -0,0 +1,24 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/quest/step-type.v1.json",
++ "title": "QuestStepType",
++ "description": "quest.step-type@1: a verified Events action that may be selected for a daily quest. A contributed type stays pending until staff review.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": ["id", "event_type", "site", "sentence", "href", "weight", "status"],
++ "properties": {
++ "id": { "type": "string", "minLength": 2, "maxLength": 90 },
++ "event_type": { "type": "string", "minLength": 3, "maxLength": 160 },
++ "site": { "type": "string", "format": "hostname" },
++ "sentence": { "type": "string", "minLength": 1, "maxLength": 120 },
++ "href": { "type": "string", "format": "uri", "pattern": "^https://" },
++ "weight": { "type": "integer", "minimum": 1, "maximum": 5 },
++ "count": { "type": "integer", "const": 1 },
++ "verification": { "type": "string" },
++ "status": { "enum": ["pending", "approved", "rejected"] },
++ "source": { "type": "string" },
++ "project_id": { "type": "string" },
++ "created_at": { "type": "string", "format": "date-time" },
++ "reviewed_at": { "type": ["string", "null"], "format": "date-time" }
++ }
++}
ddiff --git a/fixtures/quest.daily-progress/invalid/too-much.json b/fixtures/quest.daily-progress/invalid/too-much.json
nnew file mode 100644
iindex 00000000..fabc825a
---- /dev/null
++++ b/fixtures/quest.daily-progress/invalid/too-much.json
@@@ -0,0 +1,56 @@
++{
++ "date": "2026-11-08",
++ "title": "Around the network",
++ "story": "Visit three places today.",
++ "steps": [
++ {
++ "id": "stream",
++ "event_type": "live.stream.started",
++ "site": "openvibe.live",
++ "sentence": "Do something on openvibe.live",
++ "href": "https://openvibe.live/",
++ "weight": 1,
++ "count": 1,
++ "verification": "event subject, count within the person's local day",
++ "status": "approved",
++ "source": "quest",
++ "progress": 1,
++ "done": true
++ },
++ {
++ "id": "chat",
++ "event_type": "chat.room.message.created",
++ "site": "openvibe.chat",
++ "sentence": "Do something on openvibe.chat",
++ "href": "https://openvibe.chat/",
++ "weight": 1,
++ "count": 1,
++ "verification": "event subject, count within the person's local day",
++ "status": "approved",
++ "source": "quest",
++ "progress": 1,
++ "done": true
++ },
++ {
++ "id": "wiki",
++ "event_type": "wiki.revision.created",
++ "site": "openvibe.wiki",
++ "sentence": "Do something on openvibe.wiki",
++ "href": "https://openvibe.wiki/",
++ "weight": 1,
++ "count": 1,
++ "verification": "event subject, count within the person's local day",
++ "status": "approved",
++ "source": "quest",
++ "progress": 1,
++ "done": true
++ }
++ ],
++ "source": "rotation",
++ "finished_today": 3,
++ "progress": 4,
++ "completed": true,
++ "completed_at": "2026-11-08T22:00:00Z",
++ "streak": 1,
++ "time_zone": "UTC"
++}
ddiff --git a/fixtures/quest.daily-progress/valid/mine.json b/fixtures/quest.daily-progress/valid/mine.json
nnew file mode 100644
iindex 00000000..8fe8b654
---- /dev/null
++++ b/fixtures/quest.daily-progress/valid/mine.json
@@@ -0,0 +1,56 @@
++{
++ "date": "2026-11-08",
++ "title": "Around the network",
++ "story": "Visit three places today.",
++ "steps": [
++ {
++ "id": "stream",
++ "event_type": "live.stream.started",
++ "site": "openvibe.live",
++ "sentence": "Do something on openvibe.live",
++ "href": "https://openvibe.live/",
++ "weight": 1,
++ "count": 1,
++ "verification": "event subject, count within the person's local day",
++ "status": "approved",
++ "source": "quest",
++ "progress": 1,
++ "done": true
++ },
++ {
++ "id": "chat",
++ "event_type": "chat.room.message.created",
++ "site": "openvibe.chat",
++ "sentence": "Do something on openvibe.chat",
++ "href": "https://openvibe.chat/",
++ "weight": 1,
++ "count": 1,
++ "verification": "event subject, count within the person's local day",
++ "status": "approved",
++ "source": "quest",
++ "progress": 0,
++ "done": false
++ },
++ {
++ "id": "wiki",
++ "event_type": "wiki.revision.created",
++ "site": "openvibe.wiki",
++ "sentence": "Do something on openvibe.wiki",
++ "href": "https://openvibe.wiki/",
++ "weight": 1,
++ "count": 1,
++ "verification": "event subject, count within the person's local day",
++ "status": "approved",
++ "source": "quest",
++ "progress": 0,
++ "done": false
++ }
++ ],
++ "source": "rotation",
++ "finished_today": 3,
++ "progress": 1,
++ "completed": false,
++ "completed_at": null,
++ "streak": 0,
++ "time_zone": "America/Los_Angeles"
++}
ddiff --git a/fixtures/quest.daily/invalid/two-steps.json b/fixtures/quest.daily/invalid/two-steps.json
nnew file mode 100644
iindex 00000000..e5dc9297
---- /dev/null
++++ b/fixtures/quest.daily/invalid/two-steps.json
@@@ -0,0 +1,33 @@
++{
++ "date": "2026-11-08",
++ "title": "Around the network",
++ "story": "Visit three places today.",
++ "steps": [
++ {
++ "id": "stream",
++ "event_type": "live.stream.started",
++ "site": "openvibe.live",
++ "sentence": "Do something on openvibe.live",
++ "href": "https://openvibe.live/",
++ "weight": 1,
++ "count": 1,
++ "verification": "event subject, count within the person's local day",
++ "status": "approved",
++ "source": "quest"
++ },
++ {
++ "id": "chat",
++ "event_type": "chat.room.message.created",
++ "site": "openvibe.chat",
++ "sentence": "Do something on openvibe.chat",
++ "href": "https://openvibe.chat/",
++ "weight": 1,
++ "count": 1,
++ "verification": "event subject, count within the person's local day",
++ "status": "approved",
++ "source": "quest"
++ }
++ ],
++ "source": "rotation",
++ "finished_today": 3
++}
ddiff --git a/fixtures/quest.daily/valid/today.json b/fixtures/quest.daily/valid/today.json
nnew file mode 100644
iindex 00000000..60ea08fc
---- /dev/null
++++ b/fixtures/quest.daily/valid/today.json
@@@ -0,0 +1,45 @@
++{
++ "date": "2026-11-08",
++ "title": "Around the network",
++ "story": "Visit three places today.",
++ "steps": [
++ {
++ "id": "stream",
++ "event_type": "live.stream.started",
++ "site": "openvibe.live",
++ "sentence": "Do something on openvibe.live",
++ "href": "https://openvibe.live/",
++ "weight": 1,
++ "count": 1,
++ "verification": "event subject, count within the person's local day",
++ "status": "approved",
++ "source": "quest"
++ },
++ {
++ "id": "chat",
++ "event_type": "chat.room.message.created",
++ "site": "openvibe.chat",
++ "sentence": "Do something on openvibe.chat",
++ "href": "https://openvibe.chat/",
++ "weight": 1,
++ "count": 1,
++ "verification": "event subject, count within the person's local day",
++ "status": "approved",
++ "source": "quest"
++ },
++ {
++ "id": "wiki",
++ "event_type": "wiki.revision.created",
++ "site": "openvibe.wiki",
++ "sentence": "Do something on openvibe.wiki",
++ "href": "https://openvibe.wiki/",
++ "weight": 1,
++ "count": 1,
++ "verification": "event subject, count within the person's local day",
++ "status": "approved",
++ "source": "quest"
++ }
++ ],
++ "source": "rotation",
++ "finished_today": 3
++}
ddiff --git a/fixtures/quest.step-type-request/invalid/no-topic.json b/fixtures/quest.step-type-request/invalid/no-topic.json
nnew file mode 100644
iindex 00000000..61b9b44a
---- /dev/null
++++ b/fixtures/quest.step-type-request/invalid/no-topic.json
@@@ -0,0 +1,8 @@
++{
++ "id": "stream",
++ "event_type": "",
++ "site": "openvibe.live",
++ "sentence": "Go live",
++ "href": "https://openvibe.live/",
++ "weight": 1
++}
ddiff --git a/fixtures/quest.step-type-request/valid/known-topic.json b/fixtures/quest.step-type-request/valid/known-topic.json
nnew file mode 100644
iindex 00000000..08549af3
---- /dev/null
++++ b/fixtures/quest.step-type-request/valid/known-topic.json
@@@ -0,0 +1,8 @@
++{
++ "id": "stream",
++ "event_type": "live.stream.started",
++ "site": "openvibe.live",
++ "sentence": "Go live",
++ "href": "https://openvibe.live/",
++ "weight": 1
++}
ddiff --git a/fixtures/quest.step-type/invalid/no-topic.json b/fixtures/quest.step-type/invalid/no-topic.json
nnew file mode 100644
iindex 00000000..438d4570
---- /dev/null
++++ b/fixtures/quest.step-type/invalid/no-topic.json
@@@ -0,0 +1,8 @@
++{
++ "id": "broken",
++ "site": "openvibe.live",
++ "sentence": "Go live",
++ "href": "https://openvibe.live/",
++ "weight": 1,
++ "status": "pending"
++}
ddiff --git a/fixtures/quest.step-type/valid/built-in.json b/fixtures/quest.step-type/valid/built-in.json
nnew file mode 100644
iindex 00000000..488772c1
---- /dev/null
++++ b/fixtures/quest.step-type/valid/built-in.json
@@@ -0,0 +1,12 @@
++{
++ "id": "stream",
++ "event_type": "live.stream.started",
++ "site": "openvibe.live",
++ "sentence": "Do something on openvibe.live",
++ "href": "https://openvibe.live/",
++ "weight": 1,
++ "count": 1,
++ "verification": "event subject, count within the person's local day",
++ "status": "approved",
++ "source": "quest"
++}
ddiff --git a/generated/json-schema/bundle.json b/generated/json-schema/bundle.json
iindex 9fa6a290..0f912cd8 100644
---- a/generated/json-schema/bundle.json
++++ b/generated/json-schema/bundle.json
@@@ -93538,6 +93538,332 @@
}
}
},
++ "quest.daily": {
++ "version": "1.0.0",
++ "owner": "quest",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/quest/daily.v1.json",
++ "title": "QuestDaily",
++ "description": "quest.daily@1: one quest shared by everyone on this UTC date. Progress is private and is not in this answer.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "date",
++ "title",
++ "story",
++ "steps",
++ "source",
++ "finished_today"
++ ],
++ "properties": {
++ "date": {
++ "type": "string",
++ "format": "date"
++ },
++ "title": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 80
++ },
++ "story": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 180
++ },
++ "steps": {
++ "type": "array",
++ "minItems": 3,
++ "maxItems": 3,
++ "items": {
++ "$ref": "step-type.v1.json"
++ }
++ },
++ "source": {
++ "enum": [
++ "ai",
++ "rotation"
++ ]
++ },
++ "finished_today": {
++ "type": "integer",
++ "minimum": 0
++ }
++ }
++ }
++ },
++ "quest.daily-progress": {
++ "version": "1.0.0",
++ "owner": "quest",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/quest/daily-progress.v1.json",
++ "title": "QuestDailyProgress",
++ "description": "quest.daily-progress@1: the caller's own progress, counted from Events in their IANA time zone.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "date",
++ "title",
++ "story",
++ "steps",
++ "source",
++ "finished_today",
++ "progress",
++ "completed",
++ "streak",
++ "time_zone"
++ ],
++ "properties": {
++ "date": {
++ "type": "string",
++ "format": "date"
++ },
++ "title": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 80
++ },
++ "story": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 180
++ },
++ "steps": {
++ "type": "array",
++ "minItems": 3,
++ "maxItems": 3,
++ "items": {
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "event_type",
++ "site",
++ "sentence",
++ "href",
++ "weight",
++ "count",
++ "verification",
++ "status",
++ "source",
++ "progress",
++ "done"
++ ],
++ "properties": {
++ "id": {
++ "type": "string"
++ },
++ "event_type": {
++ "type": "string"
++ },
++ "site": {
++ "type": "string"
++ },
++ "sentence": {
++ "type": "string"
++ },
++ "href": {
++ "type": "string",
++ "format": "uri"
++ },
++ "weight": {
++ "type": "integer"
++ },
++ "count": {
++ "type": "integer",
++ "const": 1
++ },
++ "verification": {
++ "type": "string"
++ },
++ "status": {
++ "const": "approved"
++ },
++ "source": {
++ "type": "string"
++ },
++ "progress": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "done": {
++ "type": "boolean"
++ }
++ }
++ }
++ },
++ "source": {
++ "enum": [
++ "ai",
++ "rotation"
++ ]
++ },
++ "finished_today": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "progress": {
++ "type": "integer",
++ "minimum": 0,
++ "maximum": 3
++ },
++ "completed": {
++ "type": "boolean"
++ },
++ "completed_at": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "format": "date-time"
++ },
++ "streak": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "time_zone": {
++ "type": "string"
++ }
++ }
++ }
++ },
++ "quest.step-type": {
++ "version": "1.0.0",
++ "owner": "quest",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/quest/step-type.v1.json",
++ "title": "QuestStepType",
++ "description": "quest.step-type@1: a verified Events action that may be selected for a daily quest. A contributed type stays pending until staff review.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "event_type",
++ "site",
++ "sentence",
++ "href",
++ "weight",
++ "status"
++ ],
++ "properties": {
++ "id": {
++ "type": "string",
++ "minLength": 2,
++ "maxLength": 90
++ },
++ "event_type": {
++ "type": "string",
++ "minLength": 3,
++ "maxLength": 160
++ },
++ "site": {
++ "type": "string",
++ "format": "hostname"
++ },
++ "sentence": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 120
++ },
++ "href": {
++ "type": "string",
++ "format": "uri",
++ "pattern": "^https://"
++ },
++ "weight": {
++ "type": "integer",
++ "minimum": 1,
++ "maximum": 5
++ },
++ "count": {
++ "type": "integer",
++ "const": 1
++ },
++ "verification": {
++ "type": "string"
++ },
++ "status": {
++ "enum": [
++ "pending",
++ "approved",
++ "rejected"
++ ]
++ },
++ "source": {
++ "type": "string"
++ },
++ "project_id": {
++ "type": "string"
++ },
++ "created_at": {
++ "type": "string",
++ "format": "date-time"
++ },
++ "reviewed_at": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "format": "date-time"
++ }
++ }
++ }
++ },
++ "quest.step-type-request": {
++ "version": "1.0.0",
++ "owner": "quest",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/quest/step-type-request.v1.json",
++ "title": "QuestStepTypeRequest",
++ "description": "A developer app's proposed daily step. Quest accepts only topics in its known Events catalog, verifies the site's host and queues the proposal for staff review.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "event_type",
++ "site",
++ "sentence",
++ "href"
++ ],
++ "properties": {
++ "id": {
++ "type": "string",
++ "pattern": "^[a-z][a-z0-9-]{1,47}$"
++ },
++ "event_type": {
++ "type": "string",
++ "minLength": 3,
++ "maxLength": 160
++ },
++ "site": {
++ "type": "string",
++ "format": "hostname"
++ },
++ "sentence": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 120
++ },
++ "href": {
++ "type": "string",
++ "format": "uri",
++ "pattern": "^https://"
++ },
++ "weight": {
++ "type": "integer",
++ "minimum": 1,
++ "maximum": 5
++ }
++ }
++ }
++ },
"quest.app-quest-request": {
"version": "1.0.0",
"owner": "quest",
ddiff --git a/generated/openapi/actor.json b/generated/openapi/actor.json
iindex b26116e6..1df5615a 100644
---- a/generated/openapi/actor.json
++++ b/generated/openapi/actor.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Actor API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/ai.json b/generated/openapi/ai.json
iindex 3589a0f1..ad37e794 100644
---- a/generated/openapi/ai.json
++++ b/generated/openapi/ai.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.AI API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/bench.json b/generated/openapi/bench.json
iindex fc293744..3f84a256 100644
---- a/generated/openapi/bench.json
++++ b/generated/openapi/bench.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Bench API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/billing.json b/generated/openapi/billing.json
iindex 0bed8bec..dccb0c03 100644
---- a/generated/openapi/billing.json
++++ b/generated/openapi/billing.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Billing API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/blog.json b/generated/openapi/blog.json
iindex bce1fe7e..49500f33 100644
---- a/generated/openapi/blog.json
++++ b/generated/openapi/blog.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Blog API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/bot.json b/generated/openapi/bot.json
iindex 00b8caf7..99970175 100644
---- a/generated/openapi/bot.json
++++ b/generated/openapi/bot.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Bot API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/chat.json b/generated/openapi/chat.json
iindex 58c515bb..57147ecc 100644
---- a/generated/openapi/chat.json
++++ b/generated/openapi/chat.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Chat API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/codes.json b/generated/openapi/codes.json
iindex d2fe3d4e..fe550804 100644
---- a/generated/openapi/codes.json
++++ b/generated/openapi/codes.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Codes API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/community.json b/generated/openapi/community.json
iindex bdffef75..452c93b6 100644
---- a/generated/openapi/community.json
++++ b/generated/openapi/community.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Community API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/connect.json b/generated/openapi/connect.json
iindex b8abc1dd..6de87806 100644
---- a/generated/openapi/connect.json
++++ b/generated/openapi/connect.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe Connect API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe Connect as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe Connect as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/coupons.json b/generated/openapi/coupons.json
iindex 5ca161b2..b0043b95 100644
---- a/generated/openapi/coupons.json
++++ b/generated/openapi/coupons.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Coupons API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/deals.json b/generated/openapi/deals.json
iindex 73bf4cce..ad3360f4 100644
---- a/generated/openapi/deals.json
++++ b/generated/openapi/deals.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Deals API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/design.json b/generated/openapi/design.json
iindex 7c259344..16022def 100644
---- a/generated/openapi/design.json
++++ b/generated/openapi/design.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Design API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Design as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Design as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/domains.json b/generated/openapi/domains.json
iindex 39eb764f..bffe2d97 100644
---- a/generated/openapi/domains.json
++++ b/generated/openapi/domains.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Domains API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/events.json b/generated/openapi/events.json
iindex b40e77da..a747aec9 100644
---- a/generated/openapi/events.json
++++ b/generated/openapi/events.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Events API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/exchange.json b/generated/openapi/exchange.json
iindex ceef3fe9..697ff742 100644
---- a/generated/openapi/exchange.json
++++ b/generated/openapi/exchange.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Exchange API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Exchange as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Exchange as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/food.json b/generated/openapi/food.json
iindex 3bd51914..39d348ff 100644
---- a/generated/openapi/food.json
++++ b/generated/openapi/food.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Food API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/games.json b/generated/openapi/games.json
iindex 41de9336..f439f18a 100644
---- a/generated/openapi/games.json
++++ b/generated/openapi/games.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Games API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/host.json b/generated/openapi/host.json
iindex b6f678e6..4ca7bb9a 100644
---- a/generated/openapi/host.json
++++ b/generated/openapi/host.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Host API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/index.json b/generated/openapi/index.json
iindex 262414be..457e2a3a 100644
---- a/generated/openapi/index.json
++++ b/generated/openapi/index.json
@@@ -201,8 +201,8 @@
"service": "quest",
"name": "OpenVibe.Quest",
"origin": "https://openvibe.quest",
-- "operations": 3,
-- "capabilities": 1
++ "operations": 9,
++ "capabilities": 6
},
{
"service": "report",
ddiff --git a/generated/openapi/inventory.json b/generated/openapi/inventory.json
iindex 7705b77a..ddef43ff 100644
---- a/generated/openapi/inventory.json
++++ b/generated/openapi/inventory.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Inventory API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/live.json b/generated/openapi/live.json
iindex a564302d..942b57c2 100644
---- a/generated/openapi/live.json
++++ b/generated/openapi/live.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Live API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/mail.json b/generated/openapi/mail.json
iindex eb3efce5..e4713120 100644
---- a/generated/openapi/mail.json
++++ b/generated/openapi/mail.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Mail API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Mail as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Mail as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/media-hub.json b/generated/openapi/media-hub.json
iindex 073353a1..cf493da4 100644
---- a/generated/openapi/media-hub.json
++++ b/generated/openapi/media-hub.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.MediaHub API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/media.json b/generated/openapi/media.json
iindex 7e44401a..f47ec358 100644
---- a/generated/openapi/media.json
++++ b/generated/openapi/media.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Media API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/network.json b/generated/openapi/network.json
iindex 8485530f..b94afb02 100644
---- a/generated/openapi/network.json
++++ b/generated/openapi/network.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Network API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/news.json b/generated/openapi/news.json
iindex 269120af..f01fa8dc 100644
---- a/generated/openapi/news.json
++++ b/generated/openapi/news.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.News API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/openre.json b/generated/openapi/openre.json
iindex a61e6b53..231d11e8 100644
---- a/generated/openapi/openre.json
++++ b/generated/openapi/openre.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenRestream API",
-- "version": "0.354.0",
-- "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/play.json b/generated/openapi/play.json
iindex bf8227ca..559b3b63 100644
---- a/generated/openapi/play.json
++++ b/generated/openapi/play.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Play API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/quest.json b/generated/openapi/quest.json
iindex f9b43cb4..4310240a 100644
---- a/generated/openapi/quest.json
++++ b/generated/openapi/quest.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Quest API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
@@@ -389,6 +389,313 @@
}
}
}
++ },
++ "/api/v1/daily": {
++ "get": {
++ "operationId": "get_api_v1_daily",
++ "summary": "Read today's shared daily quest or a past day's quest and its public completion count.",
++ "description": "**quest.daily.read** (public): Read today's shared daily quest or a past day's quest and its public completion count.",
++ "tags": [
++ "quest.daily"
++ ],
++ "x-openvibe-capabilities": [
++ "quest.daily.read"
++ ],
++ "x-openvibe-visibility": [
++ "public"
++ ],
++ "x-openvibe-quota-class": "quest-read",
++ "security": [
++ {
++ "openvibeToken": [
++ "quest.daily.read"
++ ]
++ },
++ {}
++ ],
++ "responses": {
++ "2XX": {
++ "description": "Success",
++ "content": {
++ "application/json": {
++ "schema": {
++ "$ref": "#/components/schemas/quest.daily.v1"
++ }
++ }
++ }
++ },
++ "default": {
++ "description": "An error (RFC 9457 problem details)",
++ "content": {
++ "application/problem+json": {
++ "schema": {
++ "$ref": "#/components/schemas/errors.problem.v1"
++ }
++ }
++ }
++ }
++ }
++ }
++ },
++ "/api/v1/daily/{date}": {
++ "get": {
++ "operationId": "get_api_v1_daily_date",
++ "summary": "Read today's shared daily quest or a past day's quest and its public completion count.",
++ "description": "**quest.daily.read** (public): Read today's shared daily quest or a past day's quest and its public completion count.",
++ "tags": [
++ "quest.daily"
++ ],
++ "x-openvibe-capabilities": [
++ "quest.daily.read"
++ ],
++ "x-openvibe-visibility": [
++ "public"
++ ],
++ "x-openvibe-quota-class": "quest-read",
++ "security": [
++ {
++ "openvibeToken": [
++ "quest.daily.read"
++ ]
++ },
++ {}
++ ],
++ "parameters": [
++ {
++ "name": "date",
++ "in": "path",
++ "required": true,
++ "schema": {
++ "type": "string"
++ }
++ }
++ ],
++ "responses": {
++ "2XX": {
++ "description": "Success",
++ "content": {
++ "application/json": {
++ "schema": {
++ "$ref": "#/components/schemas/quest.daily.v1"
++ }
++ }
++ }
++ },
++ "default": {
++ "description": "An error (RFC 9457 problem details)",
++ "content": {
++ "application/problem+json": {
++ "schema": {
++ "$ref": "#/components/schemas/errors.problem.v1"
++ }
++ }
++ }
++ }
++ }
++ }
++ },
++ "/api/v1/me/daily": {
++ "get": {
++ "operationId": "get_api_v1_me_daily",
++ "summary": "Read the signed-in person's daily checklist, completion and streak, verified from Events in their time zone.",
++ "description": "**quest.daily_progress.read** (first-party): Read the signed-in person's daily checklist, completion and streak, verified from Events in their time zone.",
++ "tags": [
++ "quest.daily_progress"
++ ],
++ "x-openvibe-capabilities": [
++ "quest.daily_progress.read"
++ ],
++ "x-openvibe-visibility": [
++ "first-party"
++ ],
++ "x-openvibe-quota-class": "quest-read",
++ "security": [
++ {
++ "openvibeToken": [
++ "quest.daily_progress.read"
++ ]
++ }
++ ],
++ "responses": {
++ "2XX": {
++ "description": "Success",
++ "content": {
++ "application/json": {
++ "schema": {
++ "$ref": "#/components/schemas/quest.daily-progress.v1"
++ }
++ }
++ }
++ },
++ "default": {
++ "description": "An error (RFC 9457 problem details)",
++ "content": {
++ "application/problem+json": {
++ "schema": {
++ "$ref": "#/components/schemas/errors.problem.v1"
++ }
++ }
++ }
++ }
++ }
++ }
++ },
++ "/api/v1/step-types": {
++ "get": {
++ "operationId": "get_api_v1_step_types",
++ "summary": "List approved daily step types, each bound to an event topic and its verification rule.",
++ "description": "**quest.step_types.read** (public): List approved daily step types, each bound to an event topic and its verification rule.",
++ "tags": [
++ "quest.step_types"
++ ],
++ "x-openvibe-capabilities": [
++ "quest.step_types.read"
++ ],
++ "x-openvibe-visibility": [
++ "public"
++ ],
++ "x-openvibe-quota-class": "quest-read",
++ "security": [
++ {
++ "openvibeToken": [
++ "quest.step_types.read"
++ ]
++ },
++ {}
++ ],
++ "responses": {
++ "2XX": {
++ "description": "Success",
++ "content": {
++ "application/json": {
++ "schema": {
++ "$ref": "#/components/schemas/quest.step-type.v1"
++ }
++ }
++ }
++ },
++ "default": {
++ "description": "An error (RFC 9457 problem details)",
++ "content": {
++ "application/problem+json": {
++ "schema": {
++ "$ref": "#/components/schemas/errors.problem.v1"
++ }
++ }
++ }
++ }
++ }
++ },
++ "post": {
++ "operationId": "post_api_v1_step_types",
++ "summary": "Suggest a step type on a known OpenVibe.Events topic.",
++ "description": "**quest.steps.contribute** (public): Suggest a step type on a known OpenVibe.Events topic. A developer app's proposal remains pending until staff review.",
++ "tags": [
++ "quest.steps"
++ ],
++ "x-openvibe-capabilities": [
++ "quest.steps.contribute"
++ ],
++ "x-openvibe-visibility": [
++ "public"
++ ],
++ "x-openvibe-quota-class": "quest-step-write",
++ "security": [
++ {
++ "openvibeToken": [
++ "quest.steps.contribute"
++ ]
++ }
++ ],
++ "requestBody": {
++ "required": false,
++ "content": {
++ "application/json": {
++ "schema": {
++ "$ref": "#/components/schemas/quest.step-type-request.v1"
++ }
++ }
++ }
++ },
++ "responses": {
++ "2XX": {
++ "description": "Success",
++ "content": {
++ "application/json": {
++ "schema": {
++ "$ref": "#/components/schemas/quest.step-type.v1"
++ }
++ }
++ }
++ },
++ "default": {
++ "description": "An error (RFC 9457 problem details)",
++ "content": {
++ "application/problem+json": {
++ "schema": {
++ "$ref": "#/components/schemas/errors.problem.v1"
++ }
++ }
++ }
++ }
++ }
++ }
++ },
++ "/api/v1/step-types/{id}/review": {
++ "post": {
++ "operationId": "post_api_v1_step_types_id_review",
++ "summary": "Staff service review of a contributed daily step type; approved types may enter the generator's registry.",
++ "description": "**quest.steps.review** (internal): Staff service review of a contributed daily step type; approved types may enter the generator's registry.",
++ "tags": [
++ "quest.steps"
++ ],
++ "x-openvibe-capabilities": [
++ "quest.steps.review"
++ ],
++ "x-openvibe-visibility": [
++ "internal"
++ ],
++ "x-openvibe-quota-class": "quest-step-review",
++ "security": [
++ {
++ "openvibeToken": [
++ "quest.steps.review"
++ ]
++ }
++ ],
++ "parameters": [
++ {
++ "name": "id",
++ "in": "path",
++ "required": true,
++ "schema": {
++ "type": "string"
++ }
++ }
++ ],
++ "responses": {
++ "2XX": {
++ "description": "Success",
++ "content": {
++ "application/json": {
++ "schema": {
++ "$ref": "#/components/schemas/quest.step-type.v1"
++ }
++ }
++ }
++ },
++ "default": {
++ "description": "An error (RFC 9457 problem details)",
++ "content": {
++ "application/problem+json": {
++ "schema": {
++ "$ref": "#/components/schemas/errors.problem.v1"
++ }
++ }
++ }
++ }
++ }
++ }
}
},
"components": {
@@@ -670,6 +977,304 @@
"minimum": 0
}
}
++ },
++ "quest.daily-progress.v1": {
++ "title": "QuestDailyProgress",
++ "description": "quest.daily-progress@1: the caller's own progress, counted from Events in their IANA time zone.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "date",
++ "title",
++ "story",
++ "steps",
++ "source",
++ "finished_today",
++ "progress",
++ "completed",
++ "streak",
++ "time_zone"
++ ],
++ "properties": {
++ "date": {
++ "type": "string",
++ "format": "date"
++ },
++ "title": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 80
++ },
++ "story": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 180
++ },
++ "steps": {
++ "type": "array",
++ "minItems": 3,
++ "maxItems": 3,
++ "items": {
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "event_type",
++ "site",
++ "sentence",
++ "href",
++ "weight",
++ "count",
++ "verification",
++ "status",
++ "source",
++ "progress",
++ "done"
++ ],
++ "properties": {
++ "id": {
++ "type": "string"
++ },
++ "event_type": {
++ "type": "string"
++ },
++ "site": {
++ "type": "string"
++ },
++ "sentence": {
++ "type": "string"
++ },
++ "href": {
++ "type": "string",
++ "format": "uri"
++ },
++ "weight": {
++ "type": "integer"
++ },
++ "count": {
++ "type": "integer",
++ "const": 1
++ },
++ "verification": {
++ "type": "string"
++ },
++ "status": {
++ "const": "approved"
++ },
++ "source": {
++ "type": "string"
++ },
++ "progress": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "done": {
++ "type": "boolean"
++ }
++ }
++ }
++ },
++ "source": {
++ "enum": [
++ "ai",
++ "rotation"
++ ]
++ },
++ "finished_today": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "progress": {
++ "type": "integer",
++ "minimum": 0,
++ "maximum": 3
++ },
++ "completed": {
++ "type": "boolean"
++ },
++ "completed_at": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "format": "date-time"
++ },
++ "streak": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "time_zone": {
++ "type": "string"
++ }
++ }
++ },
++ "quest.daily.v1": {
++ "title": "QuestDaily",
++ "description": "quest.daily@1: one quest shared by everyone on this UTC date. Progress is private and is not in this answer.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "date",
++ "title",
++ "story",
++ "steps",
++ "source",
++ "finished_today"
++ ],
++ "properties": {
++ "date": {
++ "type": "string",
++ "format": "date"
++ },
++ "title": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 80
++ },
++ "story": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 180
++ },
++ "steps": {
++ "type": "array",
++ "minItems": 3,
++ "maxItems": 3,
++ "items": {
++ "$ref": "#/components/schemas/quest.step-type.v1"
++ }
++ },
++ "source": {
++ "enum": [
++ "ai",
++ "rotation"
++ ]
++ },
++ "finished_today": {
++ "type": "integer",
++ "minimum": 0
++ }
++ }
++ },
++ "quest.step-type-request.v1": {
++ "title": "QuestStepTypeRequest",
++ "description": "A developer app's proposed daily step. Quest accepts only topics in its known Events catalog, verifies the site's host and queues the proposal for staff review.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "event_type",
++ "site",
++ "sentence",
++ "href"
++ ],
++ "properties": {
++ "id": {
++ "type": "string",
++ "pattern": "^[a-z][a-z0-9-]{1,47}$"
++ },
++ "event_type": {
++ "type": "string",
++ "minLength": 3,
++ "maxLength": 160
++ },
++ "site": {
++ "type": "string",
++ "format": "hostname"
++ },
++ "sentence": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 120
++ },
++ "href": {
++ "type": "string",
++ "format": "uri",
++ "pattern": "^https://"
++ },
++ "weight": {
++ "type": "integer",
++ "minimum": 1,
++ "maximum": 5
++ }
++ }
++ },
++ "quest.step-type.v1": {
++ "title": "QuestStepType",
++ "description": "quest.step-type@1: a verified Events action that may be selected for a daily quest. A contributed type stays pending until staff review.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "event_type",
++ "site",
++ "sentence",
++ "href",
++ "weight",
++ "status"
++ ],
++ "properties": {
++ "id": {
++ "type": "string",
++ "minLength": 2,
++ "maxLength": 90
++ },
++ "event_type": {
++ "type": "string",
++ "minLength": 3,
++ "maxLength": 160
++ },
++ "site": {
++ "type": "string",
++ "format": "hostname"
++ },
++ "sentence": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 120
++ },
++ "href": {
++ "type": "string",
++ "format": "uri",
++ "pattern": "^https://"
++ },
++ "weight": {
++ "type": "integer",
++ "minimum": 1,
++ "maximum": 5
++ },
++ "count": {
++ "type": "integer",
++ "const": 1
++ },
++ "verification": {
++ "type": "string"
++ },
++ "status": {
++ "enum": [
++ "pending",
++ "approved",
++ "rejected"
++ ]
++ },
++ "source": {
++ "type": "string"
++ },
++ "project_id": {
++ "type": "string"
++ },
++ "created_at": {
++ "type": "string",
++ "format": "date-time"
++ },
++ "reviewed_at": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "format": "date-time"
++ }
++ }
}
},
"securitySchemes": {
ddiff --git a/generated/openapi/report.json b/generated/openapi/report.json
iindex ff7d6327..f84deb10 100644
---- a/generated/openapi/report.json
++++ b/generated/openapi/report.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Report API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/reviews.json b/generated/openapi/reviews.json
iindex 127c3143..23fcfe2d 100644
---- a/generated/openapi/reviews.json
++++ b/generated/openapi/reviews.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Reviews API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/run.json b/generated/openapi/run.json
iindex 3bc3be51..0d25c1ed 100644
---- a/generated/openapi/run.json
++++ b/generated/openapi/run.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Run API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/search.json b/generated/openapi/search.json
iindex 4d8ed6a1..cf75912c 100644
---- a/generated/openapi/search.json
++++ b/generated/openapi/search.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Search API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/services.json b/generated/openapi/services.json
iindex 0c9dd65c..4ea1c5ce 100644
---- a/generated/openapi/services.json
++++ b/generated/openapi/services.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Services API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/sources.json b/generated/openapi/sources.json
iindex bff48354..d5b97ffd 100644
---- a/generated/openapi/sources.json
++++ b/generated/openapi/sources.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Sources API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/space.json b/generated/openapi/space.json
iindex 8dacc2c7..8e75a727 100644
---- a/generated/openapi/space.json
++++ b/generated/openapi/space.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Space API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/tips.json b/generated/openapi/tips.json
iindex f5a7c4e9..3f03bebf 100644
---- a/generated/openapi/tips.json
++++ b/generated/openapi/tips.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Tips API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/today.json b/generated/openapi/today.json
iindex 15ed667e..a62a30ba 100644
---- a/generated/openapi/today.json
++++ b/generated/openapi/today.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Today API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Today as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Today as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/tools.json b/generated/openapi/tools.json
iindex 8a2d0042..9b4402e6 100644
---- a/generated/openapi/tools.json
++++ b/generated/openapi/tools.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Tools API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/trade.json b/generated/openapi/trade.json
iindex 941b5868..155354f9 100644
---- a/generated/openapi/trade.json
++++ b/generated/openapi/trade.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Trade API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/vip.json b/generated/openapi/vip.json
iindex 683aa588..58a84516 100644
---- a/generated/openapi/vip.json
++++ b/generated/openapi/vip.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.VIP API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/vision.json b/generated/openapi/vision.json
iindex 615b70b1..29b9ef03 100644
---- a/generated/openapi/vision.json
++++ b/generated/openapi/vision.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Vision API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/watch.json b/generated/openapi/watch.json
iindex 8264c654..93f1f130 100644
---- a/generated/openapi/watch.json
++++ b/generated/openapi/watch.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Watch API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/wiki.json b/generated/openapi/wiki.json
iindex a4a7b823..e9821403 100644
---- a/generated/openapi/wiki.json
++++ b/generated/openapi/wiki.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Wiki API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/work.json b/generated/openapi/work.json
iindex fc1fe089..3856c491 100644
---- a/generated/openapi/work.json
++++ b/generated/openapi/work.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Work API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/zone.json b/generated/openapi/zone.json
iindex 3d19666e..66dd8ddf 100644
---- a/generated/openapi/zone.json
++++ b/generated/openapi/zone.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Zone API",
-- "version": "0.354.0",
-- "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.354.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.355.0",
++ "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.355.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/typescript/index.d.ts b/generated/typescript/index.d.ts
iindex a55a42d7..f363e921 100644
---- a/generated/typescript/index.d.ts
++++ b/generated/typescript/index.d.ts
@@@ -274496,6 +274496,121 @@ export interface AccessKeyList {
keys: AccessKey[];
}
++/** [email protected] (owner: quest) */
++/**
++ * quest.daily@1: one quest shared by everyone on this UTC date. Progress is private and is not in this answer.
++ */
++export interface QuestDaily {
++ date: string;
++ title: string;
++ story: string;
++ /**
++ * @minItems 3
++ * @maxItems 3
++ */
++ steps: [QuestStepType, QuestStepType, QuestStepType];
++ source: "ai" | "rotation";
++ finished_today: number;
++}
++
++/** [email protected] (owner: quest) */
++/**
++ * quest.daily-progress@1: the caller's own progress, counted from Events in their IANA time zone.
++ */
++export interface QuestDailyProgress {
++ date: string;
++ title: string;
++ story: string;
++ /**
++ * @minItems 3
++ * @maxItems 3
++ */
++ steps: [
++ {
++ id: string;
++ event_type: string;
++ site: string;
++ sentence: string;
++ href: string;
++ weight: number;
++ count: 1;
++ verification: string;
++ status: "approved";
++ source: string;
++ progress: number;
++ done: boolean;
++ },
++ {
++ id: string;
++ event_type: string;
++ site: string;
++ sentence: string;
++ href: string;
++ weight: number;
++ count: 1;
++ verification: string;
++ status: "approved";
++ source: string;
++ progress: number;
++ done: boolean;
++ },
++ {
++ id: string;
++ event_type: string;
++ site: string;
++ sentence: string;
++ href: string;
++ weight: number;
++ count: 1;
++ verification: string;
++ status: "approved";
++ source: string;
++ progress: number;
++ done: boolean;
++ }
++ ];
++ source: "ai" | "rotation";
++ finished_today: number;
++ progress: number;
++ completed: boolean;
++ completed_at?: string | null;
++ streak: number;
++ time_zone: string;
++}
++
++/** [email protected] (owner: quest) */
++/**
++ * quest.step-type@1: a verified Events action that may be selected for a daily quest. A contributed type stays pending until staff review.
++ */
++export interface QuestStepType {
++ id: string;
++ event_type: string;
++ site: string;
++ sentence: string;
++ href: string;
++ weight: number;
++ count?: 1;
++ verification?: string;
++ status: "pending" | "approved" | "rejected";
++ source?: string;
++ project_id?: string;
++ created_at?: string;
++ reviewed_at?: string | null;
++}
++
++/** [email protected] (owner: quest) */
++/**
++ * A developer app's proposed daily step. Quest accepts only topics in its known Events catalog, verifies the site's host and queues the proposal for staff review.
++ */
++export interface QuestStepTypeRequest {
++ id: string;
++ event_type: string;
++ site: string;
++ sentence: string;
++ href: string;
++ weight?: number;
++}
++
/** [email protected] (owner: quest) */
/**
* quest.app-quest-request@1: PUT /api/v1/app-quests/:slug on OpenVibe.Quest with an app token (capability quest.app_quest.manage). A developer app defines a quest on its own project's events: each step counts events of type app.<project_key>.<name> whose envelope actor is a person (the app publishing on_behalf_of them). The badge is the only reward: app quests never pay OpenCoins. Only production apps' events are counted (Events never hands sandbox events to first-party consumers).
ddiff --git a/manifests/capabilities/quest.daily.read.json b/manifests/capabilities/quest.daily.read.json
nnew file mode 100644
iindex 00000000..7a3f2002
---- /dev/null
++++ b/manifests/capabilities/quest.daily.read.json
@@@ -0,0 +1,7 @@
++{
++ "id": "quest.daily.read", "version": "1.0", "owner": "quest", "status": "active", "visibility": "public",
++ "description": "Read today's shared daily quest or a past day's quest and its public completion count.",
++ "inputSchema": "common.no-body@1", "outputSchema": "quest.daily@1", "permissions": ["none"],
++ "resourceConstraints": [], "quotaClass": "quest-read", "events": [],
++ "implementedBy": ["GET /api/v1/daily", "GET /api/v1/daily/:date"]
++}
ddiff --git a/manifests/capabilities/quest.daily_progress.read.json b/manifests/capabilities/quest.daily_progress.read.json
nnew file mode 100644
iindex 00000000..afb36f02
---- /dev/null
++++ b/manifests/capabilities/quest.daily_progress.read.json
@@@ -0,0 +1,7 @@
++{
++ "id": "quest.daily_progress.read", "version": "1.0", "owner": "quest", "status": "active", "visibility": "first-party",
++ "description": "Read the signed-in person's daily checklist, completion and streak, verified from Events in their time zone.",
++ "inputSchema": "common.no-body@1", "outputSchema": "quest.daily-progress@1", "permissions": ["quest:daily:read-own"],
++ "resourceConstraints": ["owner"], "quotaClass": "quest-read", "events": [],
++ "implementedBy": ["GET /api/v1/me/daily"]
++}
ddiff --git a/manifests/capabilities/quest.step_types.read.json b/manifests/capabilities/quest.step_types.read.json
nnew file mode 100644
iindex 00000000..dc881aaf
---- /dev/null
++++ b/manifests/capabilities/quest.step_types.read.json
@@@ -0,0 +1,7 @@
++{
++ "id": "quest.step_types.read", "version": "1.0", "owner": "quest", "status": "active", "visibility": "public",
++ "description": "List approved daily step types, each bound to an event topic and its verification rule.",
++ "inputSchema": "common.no-body@1", "outputSchema": "quest.step-type@1", "permissions": ["none"],
++ "resourceConstraints": [], "quotaClass": "quest-read", "events": [],
++ "implementedBy": ["GET /api/v1/step-types"]
++}
ddiff --git a/manifests/capabilities/quest.steps.contribute.json b/manifests/capabilities/quest.steps.contribute.json
nnew file mode 100644
iindex 00000000..aa3183c3
---- /dev/null
++++ b/manifests/capabilities/quest.steps.contribute.json
@@@ -0,0 +1,7 @@
++{
++ "id": "quest.steps.contribute", "version": "1.0", "owner": "quest", "status": "active", "visibility": "public",
++ "description": "Suggest a step type on a known OpenVibe.Events topic. A developer app's proposal remains pending until staff review.",
++ "inputSchema": "quest.step-type-request@1", "outputSchema": "quest.step-type@1", "permissions": ["quest:steps:contribute"],
++ "resourceConstraints": ["project"], "quotaClass": "quest-step-write", "events": [],
++ "implementedBy": ["POST /api/v1/step-types"]
++}
ddiff --git a/manifests/capabilities/quest.steps.review.json b/manifests/capabilities/quest.steps.review.json
nnew file mode 100644
iindex 00000000..35c8bfd0
---- /dev/null
++++ b/manifests/capabilities/quest.steps.review.json
@@@ -0,0 +1,7 @@
++{
++ "id": "quest.steps.review", "version": "1.0", "owner": "quest", "status": "active", "visibility": "internal",
++ "description": "Staff service review of a contributed daily step type; approved types may enter the generator's registry.",
++ "inputSchema": "common.no-body@1", "outputSchema": "quest.step-type@1", "permissions": ["quest:steps:review"],
++ "resourceConstraints": [], "quotaClass": "quest-step-review", "events": [],
++ "implementedBy": ["POST /api/v1/step-types/:id/review"]
++}
ddiff --git a/manifests/services/quest.json b/manifests/services/quest.json
iindex 0782d44c..437fbc25 100644
---- a/manifests/services/quest.json
++++ b/manifests/services/quest.json
@@@ -16,7 +16,12 @@
"publicSite": "service"
},
"capabilities": [
-- "quest.app_quest.manage"
++ "quest.app_quest.manage",
++ "quest.daily.read",
++ "quest.daily_progress.read",
++ "quest.step_types.read",
++ "quest.steps.contribute",
++ "quest.steps.review"
],
"eventsProduced": [
"quest.index_document.upserted",
ddiff --git a/package-lock.json b/package-lock.json
iindex bec09779..ee27370f 100644
---- a/package-lock.json
++++ b/package-lock.json
@@@ -1,12 +1,12 @@
{
"name": "openvibe-contracts",
-- "version": "0.354.0",
++ "version": "0.355.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "openvibe-contracts",
-- "version": "0.354.0",
++ "version": "0.355.0",
"license": "AGPL-3.0-only",
"dependencies": {
"ajv": "^8.17.1",
ddiff --git a/package.json b/package.json
iindex 06d43839..4e6087b8 100644
---- a/package.json
++++ b/package.json
@@@ -1,6 +1,6 @@
{
"name": "openvibe-contracts",
-- "version": "0.354.0",
++ "version": "0.355.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",