openvibers/openvibe.contracts Commits

Contracts 0.329.0: mail.mask, mail.burner, mail.agent-inbox and mail.message-summary (#337)

OP OpenVibers committed 6 days ago · 5d416b8d58 · 67 files, +746 −91

Changes

ddiff --git a/CHANGELOG.md b/CHANGELOG.md
iindex c17707f4..bd29938f 100644
---- a/CHANGELOG.md
++++ b/CHANGELOG.md
@@@ -1,5 +1,13 @@
# Changelog
++## 0.329.0 — 2026-11-07
++
++- Add `mail.mask@1`: a per-site address on OpenVibe.Mail that delivers into its owner's OpenVibe mailbox and nowhere else. It carries the `msk_…` id, the owner's Network subject, the `<words>.<four characters>@<mask domain>` address, the person's label and purpose, whether it is enabled (a disabled mask leaves the SQL directory Stalwart reads, so it bounces) and when it was made. M1 is receive-only, so this is metadata: no body, no forwarding target.
++- Add `mail.burner@1`: a throwaway receive-only address with its `bnr_…` id, an owner (null for the ten-minute burner made without an account), the eight-character address on a rotating burner domain, the expiry, `first_message_only` and the creation time. The one-time read token a create call returns is deliberately not part of the resource.
++- Add `mail.agent-inbox@1`: an agent's address `<agent>.<user>@openvibe.email`, its `agi_…` id, the owner, the cleaned agent id and the creation time. The mail lands in the person's mailbox; one agent has one inbox.
++- Add `mail.message-summary@1`: the one shape a list API returns for a message — id, sender addresses, subject and received time. `additionalProperties` is false, so a `body`, `preview` or `html` field fails the contract rather than leaking into an API; the body is read only by the verification-code endpoint, in memory.
++- All four are new contracts, not changes to existing ones, and the minor is expand-only. Valid and invalid fixtures cover a disabled mask, a guessed address, an anonymous and a one-message burner, a bad owner or agent id, a non-address, and a summary that carries a body.
++
## 0.328.0 — 2026-11-07
- Add `actor.assignment@1`: one node of the tree of delegated work (plan §12) — id, root, parent, depth, origin (`person`, `routine`, `outside`), mode (`work`, `consult`, `notify`), reply (`resume`, `poll`, `none`), the agent and task it runs as, the node's level and effective level, the root's budget (limit, spent and remaining), state and timestamps. A node is one hand-off: a person giving Actor a task, a routine or Watch trigger starting a run, an agent handing work to another agent, or Actor starting a Codes or Space task. The effective level is the higher of the agent's own and the one inherited along a person's or routine's line; outside work never passes a level down. A cancel cascades down the tree, and a root's budget stops its children when spent. `GET /api/v1/assignments/:id` answers the node and its children and `POST /api/v1/assignments/:id/cancel` cancels the subtree; both are owner-only and another person gets 404. An existing task gets a root lazily.
ddiff --git a/contracts/catalog.json b/contracts/catalog.json
iindex d50e83ea..78d9d066 100644
---- a/contracts/catalog.json
++++ b/contracts/catalog.json
@@@ -9975,6 +9975,42 @@
"visibility": "public",
"compatibility": "backward",
"status": "active"
++ },
++ {
++ "id": "mail.mask",
++ "version": "1.0.0",
++ "owner": "mail",
++ "schema": "mail/mask.v1.json",
++ "visibility": "first-party",
++ "compatibility": "backward",
++ "status": "active"
++ },
++ {
++ "id": "mail.burner",
++ "version": "1.0.0",
++ "owner": "mail",
++ "schema": "mail/burner.v1.json",
++ "visibility": "first-party",
++ "compatibility": "backward",
++ "status": "active"
++ },
++ {
++ "id": "mail.agent-inbox",
++ "version": "1.0.0",
++ "owner": "mail",
++ "schema": "mail/agent-inbox.v1.json",
++ "visibility": "first-party",
++ "compatibility": "backward",
++ "status": "active"
++ },
++ {
++ "id": "mail.message-summary",
++ "version": "1.0.0",
++ "owner": "mail",
++ "schema": "mail/message-summary.v1.json",
++ "visibility": "first-party",
++ "compatibility": "backward",
++ "status": "active"
}
]
}
ddiff --git a/contracts/mail/agent-inbox.v1.json b/contracts/mail/agent-inbox.v1.json
nnew file mode 100644
iindex 00000000..f5dc85df
---- /dev/null
++++ b/contracts/mail/agent-inbox.v1.json
@@@ -0,0 +1,39 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/mail/agent-inbox.v1.json",
++ "title": "MailAgentInbox",
++ "description": "An address an agent can read, on the person's own domain: <agent>.<user>@openvibe.email. The mail lands in the person's mailbox, like every other address OpenVibe.Mail hands out; what makes it an agent's inbox is that the service reads it back for the agent acting for that person. One agent has one inbox: asking twice returns the same resource.",
++ "type": "object",
++ "required": ["id", "owner", "agent_id", "address", "created_at"],
++ "additionalProperties": false,
++ "properties": {
++ "id": {
++ "type": "string",
++ "pattern": "^agi_[0-9A-HJKMNP-TV-Z]{26}$",
++ "description": "The inbox id. Opaque outside OpenVibe.Mail."
++ },
++ "owner": {
++ "type": "string",
++ "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
++ "description": "The Network subject id of the person whose mailbox receives the agent's mail."
++ },
++ "agent_id": {
++ "type": "string",
++ "pattern": "^[a-z0-9](?:[a-z0-9-]{0,30}[a-z0-9])?$",
++ "maxLength": 32,
++ "description": "The agent's name in the address, lowercased and cleaned (letters, digits and hyphens)."
++ },
++ "address": {
++ "type": "string",
++ "format": "email",
++ "pattern": "^[a-z0-9-]+\\.[a-z0-9-]+@[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+$",
++ "maxLength": 254,
++ "description": "The agent's address. In M1 the user part is the person's Network username, falling back to their mailbox local when that readable address is already taken."
++ },
++ "created_at": {
++ "type": "string",
++ "format": "date-time",
++ "description": "When the inbox was made, ISO 8601 UTC."
++ }
++ }
++}
ddiff --git a/contracts/mail/burner.v1.json b/contracts/mail/burner.v1.json
nnew file mode 100644
iindex 00000000..de61b1f8
---- /dev/null
++++ b/contracts/mail/burner.v1.json
@@@ -0,0 +1,42 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/mail/burner.v1.json",
++ "title": "MailBurner",
++ "description": "A throwaway receive-only address on OpenVibe.Mail. It expires after ten minutes, an hour, a day or a week, or after the first message when first_message_only is set. When it expires its mail is deleted and the address bounces. A ten-minute burner may be made without an account (owner is null) and is then read with the one-time token the create call returns; the token is deliberately not part of this resource.",
++ "type": "object",
++ "required": ["id", "owner", "address", "expires_at", "first_message_only", "created_at"],
++ "additionalProperties": false,
++ "properties": {
++ "id": {
++ "type": "string",
++ "pattern": "^bnr_[0-9A-HJKMNP-TV-Z]{26}$",
++ "description": "The burner id. Opaque outside OpenVibe.Mail."
++ },
++ "owner": {
++ "type": ["string", "null"],
++ "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
++ "description": "The Network subject id of the person who made the burner, or null for a ten-minute burner made without an account."
++ },
++ "address": {
++ "type": "string",
++ "format": "email",
++ "pattern": "^[a-z0-9]{8}@[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+$",
++ "maxLength": 254,
++ "description": "The burner address: eight unguessable characters on one of the rotating burner domains."
++ },
++ "expires_at": {
++ "type": "string",
++ "format": "date-time",
++ "description": "When the address stops resolving and its mail is due for deletion, ISO 8601 UTC."
++ },
++ "first_message_only": {
++ "type": "boolean",
++ "description": "When true the burner accepts one message and then stops resolving."
++ },
++ "created_at": {
++ "type": "string",
++ "format": "date-time",
++ "description": "When the burner was made, ISO 8601 UTC."
++ }
++ }
++}
ddiff --git a/contracts/mail/mask.v1.json b/contracts/mail/mask.v1.json
nnew file mode 100644
iindex 00000000..f9130620
---- /dev/null
++++ b/contracts/mail/mask.v1.json
@@@ -0,0 +1,47 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/mail/mask.v1.json",
++ "title": "MailMask",
++ "description": "A per-site address on OpenVibe.Mail that delivers into its owner's OpenVibe mailbox and nowhere else. Turning it off makes the address bounce: it leaves the SQL directory Stalwart reads, so a new message is refused. The address is <words>.<four characters>@<mask domain>; the four characters keep two people from guessing each other's mask. The contract is metadata only: it never carries a message body.",
++ "type": "object",
++ "required": ["id", "owner", "address", "label", "purpose", "enabled", "created_at"],
++ "additionalProperties": false,
++ "properties": {
++ "id": {
++ "type": "string",
++ "pattern": "^msk_[0-9A-HJKMNP-TV-Z]{26}$",
++ "description": "The mask id. Opaque outside OpenVibe.Mail; never a database integer."
++ },
++ "owner": {
++ "type": "string",
++ "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
++ "description": "The Network subject id of the person whose mailbox receives the mask's mail. A mask never forwards outside OpenVibe."
++ },
++ "address": {
++ "type": "string",
++ "format": "email",
++ "pattern": "^[a-z0-9](?:[a-z0-9-]{0,30}[a-z0-9])?\\.[a-z0-9]{4}@[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+$",
++ "maxLength": 254,
++ "description": "The mask address: the words the person chose, a dot, four unguessable characters, and the mask domain (mask.openvibe.email in M1)."
++ },
++ "label": {
++ "type": ["string", "null"],
++ "maxLength": 120,
++ "description": "The person's name for the mask, e.g. \"Amazon\". Free text; never interpreted as an address."
++ },
++ "purpose": {
++ "type": ["string", "null"],
++ "maxLength": 120,
++ "description": "What the mask is for, e.g. \"shopping\". Optional metadata for the person's own list."
++ },
++ "enabled": {
++ "type": "boolean",
++ "description": "Whether the mask resolves. When false the SQL directory has no row for the address, so the mail server refuses it."
++ },
++ "created_at": {
++ "type": "string",
++ "format": "date-time",
++ "description": "When the mask was made, ISO 8601 UTC."
++ }
++ }
++}
ddiff --git a/contracts/mail/message-summary.v1.json b/contracts/mail/message-summary.v1.json
nnew file mode 100644
iindex 00000000..88d367c8
---- /dev/null
++++ b/contracts/mail/message-summary.v1.json
@@@ -0,0 +1,37 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/mail/message-summary.v1.json",
++ "title": "MailMessageSummary",
++ "description": "One message in a mask, burner or agent inbox, as OpenVibe.Mail's list API returns it: the id, the senders, the subject and the time. It deliberately has no preview and no body: a message body is read only by the verification-code endpoint, in memory, and is never part of a list, an event or a database row. additionalProperties is false so a field like body, preview or html fails the contract rather than leaking into an API.",
++ "type": "object",
++ "required": ["id", "from", "subject", "received_at"],
++ "additionalProperties": false,
++ "properties": {
++ "id": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 512,
++ "description": "The mail server's message id (a JMAP Email id). Opaque outside OpenVibe.Mail."
++ },
++ "from": {
++ "type": "array",
++ "maxItems": 100,
++ "items": {
++ "type": "string",
++ "format": "email",
++ "maxLength": 254
++ },
++ "description": "The sender addresses, as the mail server parsed them. An address list, not a display name."
++ },
++ "subject": {
++ "type": ["string", "null"],
++ "maxLength": 2000,
++ "description": "The subject line, or null when the message had none."
++ },
++ "received_at": {
++ "type": ["string", "null"],
++ "format": "date-time",
++ "description": "When the mail server received the message, ISO 8601 UTC, or null when it did not record a time."
++ }
++ }
++}
ddiff --git a/fixtures/mail.agent-inbox/invalid/bad-agent.json b/fixtures/mail.agent-inbox/invalid/bad-agent.json
nnew file mode 100644
iindex 00000000..906afcc6
---- /dev/null
++++ b/fixtures/mail.agent-inbox/invalid/bad-agent.json
@@@ -0,0 +1,7 @@
++{
++ "id": "agi_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "owner": "usr_01JAB2C3D4E5F6G7H8J9K0MNPS",
++ "agent_id": "Helper!",
++ "address": "[email protected]",
++ "created_at": "2026-11-07T12:00:00Z"
++}
ddiff --git a/fixtures/mail.agent-inbox/invalid/not-an-address.json b/fixtures/mail.agent-inbox/invalid/not-an-address.json
nnew file mode 100644
iindex 00000000..2b37ff68
---- /dev/null
++++ b/fixtures/mail.agent-inbox/invalid/not-an-address.json
@@@ -0,0 +1,7 @@
++{
++ "id": "agi_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "owner": "usr_01JAB2C3D4E5F6G7H8J9K0MNPS",
++ "agent_id": "helper",
++ "address": "helper",
++ "created_at": "2026-11-07T12:00:00Z"
++}
ddiff --git a/fixtures/mail.agent-inbox/valid/helper.json b/fixtures/mail.agent-inbox/valid/helper.json
nnew file mode 100644
iindex 00000000..055ece7e
---- /dev/null
++++ b/fixtures/mail.agent-inbox/valid/helper.json
@@@ -0,0 +1,7 @@
++{
++ "id": "agi_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "owner": "usr_01JAB2C3D4E5F6G7H8J9K0MNPS",
++ "agent_id": "helper",
++ "address": "[email protected]",
++ "created_at": "2026-11-07T12:00:00Z"
++}
ddiff --git a/fixtures/mail.burner/invalid/bad-address.json b/fixtures/mail.burner/invalid/bad-address.json
nnew file mode 100644
iindex 00000000..472d2c6a
---- /dev/null
++++ b/fixtures/mail.burner/invalid/bad-address.json
@@@ -0,0 +1,8 @@
++{
++ "id": "bnr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "owner": null,
++ "address": "[email protected]",
++ "expires_at": "2026-11-07T12:10:00Z",
++ "first_message_only": false,
++ "created_at": "2026-11-07T12:00:00Z"
++}
ddiff --git a/fixtures/mail.burner/invalid/bad-owner.json b/fixtures/mail.burner/invalid/bad-owner.json
nnew file mode 100644
iindex 00000000..246ec98e
---- /dev/null
++++ b/fixtures/mail.burner/invalid/bad-owner.json
@@@ -0,0 +1,8 @@
++{
++ "id": "bnr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "owner": "someone",
++ "address": "[email protected]",
++ "expires_at": "2026-11-07T12:10:00Z",
++ "first_message_only": false,
++ "created_at": "2026-11-07T12:00:00Z"
++}
ddiff --git a/fixtures/mail.burner/valid/anonymous.json b/fixtures/mail.burner/valid/anonymous.json
nnew file mode 100644
iindex 00000000..07f688fa
---- /dev/null
++++ b/fixtures/mail.burner/valid/anonymous.json
@@@ -0,0 +1,8 @@
++{
++ "id": "bnr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "owner": null,
++ "address": "[email protected]",
++ "expires_at": "2026-11-07T12:10:00Z",
++ "first_message_only": false,
++ "created_at": "2026-11-07T12:00:00Z"
++}
ddiff --git a/fixtures/mail.burner/valid/one-message.json b/fixtures/mail.burner/valid/one-message.json
nnew file mode 100644
iindex 00000000..8ac29b67
---- /dev/null
++++ b/fixtures/mail.burner/valid/one-message.json
@@@ -0,0 +1,8 @@
++{
++ "id": "bnr_01JAB2C3D4E5F6G7H8J9K0MNPR",
++ "owner": "usr_01JAB2C3D4E5F6G7H8J9K0MNPS",
++ "address": "[email protected]",
++ "expires_at": "2026-11-08T12:00:00Z",
++ "first_message_only": true,
++ "created_at": "2026-11-07T12:00:00Z"
++}
ddiff --git a/fixtures/mail.mask/invalid/bad-owner.json b/fixtures/mail.mask/invalid/bad-owner.json
nnew file mode 100644
iindex 00000000..c9c3ee64
---- /dev/null
++++ b/fixtures/mail.mask/invalid/bad-owner.json
@@@ -0,0 +1,9 @@
++{
++ "id": "msk_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "owner": "alice",
++ "address": "[email protected]",
++ "label": "Amazon",
++ "purpose": null,
++ "enabled": true,
++ "created_at": "2026-11-07T12:00:00Z"
++}
ddiff --git a/fixtures/mail.mask/invalid/guessable.json b/fixtures/mail.mask/invalid/guessable.json
nnew file mode 100644
iindex 00000000..34f622a6
---- /dev/null
++++ b/fixtures/mail.mask/invalid/guessable.json
@@@ -0,0 +1,9 @@
++{
++ "id": "msk_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "owner": "usr_01JAB2C3D4E5F6G7H8J9K0MNPS",
++ "address": "[email protected]",
++ "label": "Amazon",
++ "purpose": null,
++ "enabled": true,
++ "created_at": "2026-11-07T12:00:00Z"
++}
ddiff --git a/fixtures/mail.mask/valid/amazon.json b/fixtures/mail.mask/valid/amazon.json
nnew file mode 100644
iindex 00000000..13a905aa
---- /dev/null
++++ b/fixtures/mail.mask/valid/amazon.json
@@@ -0,0 +1,9 @@
++{
++ "id": "msk_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "owner": "usr_01JAB2C3D4E5F6G7H8J9K0MNPS",
++ "address": "[email protected]",
++ "label": "Amazon",
++ "purpose": "shopping",
++ "enabled": true,
++ "created_at": "2026-11-07T12:00:00Z"
++}
ddiff --git a/fixtures/mail.mask/valid/off.json b/fixtures/mail.mask/valid/off.json
nnew file mode 100644
iindex 00000000..90dd44dd
---- /dev/null
++++ b/fixtures/mail.mask/valid/off.json
@@@ -0,0 +1,9 @@
++{
++ "id": "msk_01JAB2C3D4E5F6G7H8J9K0MNPR",
++ "owner": "usr_01JAB2C3D4E5F6G7H8J9K0MNPS",
++ "address": "[email protected]",
++ "label": null,
++ "purpose": null,
++ "enabled": false,
++ "created_at": "2026-11-07T12:01:00Z"
++}
ddiff --git a/fixtures/mail.message-summary/invalid/carries-body.json b/fixtures/mail.message-summary/invalid/carries-body.json
nnew file mode 100644
iindex 00000000..7f607234
---- /dev/null
++++ b/fixtures/mail.message-summary/invalid/carries-body.json
@@@ -0,0 +1,7 @@
++{
++ "id": "maaaaad",
++ "from": ["[email protected]"],
++ "subject": "Your verification code",
++ "received_at": "2026-11-07T12:00:00Z",
++ "body": "Your verification code is 918273"
++}
ddiff --git a/fixtures/mail.message-summary/valid/one.json b/fixtures/mail.message-summary/valid/one.json
nnew file mode 100644
iindex 00000000..d82801f0
---- /dev/null
++++ b/fixtures/mail.message-summary/valid/one.json
@@@ -0,0 +1,6 @@
++{
++ "id": "maaaaad",
++ "from": ["[email protected]"],
++ "subject": "Your verification code",
++ "received_at": "2026-11-07T12:00:00Z"
++}
ddiff --git a/generated/json-schema/bundle.json b/generated/json-schema/bundle.json
iindex 5b136aa9..7861a83a 100644
---- a/generated/json-schema/bundle.json
++++ b/generated/json-schema/bundle.json
@@@ -109339,6 +109339,232 @@
}
}
}
++ },
++ "mail.mask": {
++ "version": "1.0.0",
++ "owner": "mail",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/mail/mask.v1.json",
++ "title": "MailMask",
++ "description": "A per-site address on OpenVibe.Mail that delivers into its owner's OpenVibe mailbox and nowhere else. Turning it off makes the address bounce: it leaves the SQL directory Stalwart reads, so a new message is refused. The address is <words>.<four characters>@<mask domain>; the four characters keep two people from guessing each other's mask. The contract is metadata only: it never carries a message body.",
++ "type": "object",
++ "required": [
++ "id",
++ "owner",
++ "address",
++ "label",
++ "purpose",
++ "enabled",
++ "created_at"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "id": {
++ "type": "string",
++ "pattern": "^msk_[0-9A-HJKMNP-TV-Z]{26}$",
++ "description": "The mask id. Opaque outside OpenVibe.Mail; never a database integer."
++ },
++ "owner": {
++ "type": "string",
++ "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
++ "description": "The Network subject id of the person whose mailbox receives the mask's mail. A mask never forwards outside OpenVibe."
++ },
++ "address": {
++ "type": "string",
++ "format": "email",
++ "pattern": "^[a-z0-9](?:[a-z0-9-]{0,30}[a-z0-9])?\\.[a-z0-9]{4}@[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+$",
++ "maxLength": 254,
++ "description": "The mask address: the words the person chose, a dot, four unguessable characters, and the mask domain (mask.openvibe.email in M1)."
++ },
++ "label": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "maxLength": 120,
++ "description": "The person's name for the mask, e.g. \"Amazon\". Free text; never interpreted as an address."
++ },
++ "purpose": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "maxLength": 120,
++ "description": "What the mask is for, e.g. \"shopping\". Optional metadata for the person's own list."
++ },
++ "enabled": {
++ "type": "boolean",
++ "description": "Whether the mask resolves. When false the SQL directory has no row for the address, so the mail server refuses it."
++ },
++ "created_at": {
++ "type": "string",
++ "format": "date-time",
++ "description": "When the mask was made, ISO 8601 UTC."
++ }
++ }
++ }
++ },
++ "mail.burner": {
++ "version": "1.0.0",
++ "owner": "mail",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/mail/burner.v1.json",
++ "title": "MailBurner",
++ "description": "A throwaway receive-only address on OpenVibe.Mail. It expires after ten minutes, an hour, a day or a week, or after the first message when first_message_only is set. When it expires its mail is deleted and the address bounces. A ten-minute burner may be made without an account (owner is null) and is then read with the one-time token the create call returns; the token is deliberately not part of this resource.",
++ "type": "object",
++ "required": [
++ "id",
++ "owner",
++ "address",
++ "expires_at",
++ "first_message_only",
++ "created_at"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "id": {
++ "type": "string",
++ "pattern": "^bnr_[0-9A-HJKMNP-TV-Z]{26}$",
++ "description": "The burner id. Opaque outside OpenVibe.Mail."
++ },
++ "owner": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
++ "description": "The Network subject id of the person who made the burner, or null for a ten-minute burner made without an account."
++ },
++ "address": {
++ "type": "string",
++ "format": "email",
++ "pattern": "^[a-z0-9]{8}@[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+$",
++ "maxLength": 254,
++ "description": "The burner address: eight unguessable characters on one of the rotating burner domains."
++ },
++ "expires_at": {
++ "type": "string",
++ "format": "date-time",
++ "description": "When the address stops resolving and its mail is due for deletion, ISO 8601 UTC."
++ },
++ "first_message_only": {
++ "type": "boolean",
++ "description": "When true the burner accepts one message and then stops resolving."
++ },
++ "created_at": {
++ "type": "string",
++ "format": "date-time",
++ "description": "When the burner was made, ISO 8601 UTC."
++ }
++ }
++ }
++ },
++ "mail.agent-inbox": {
++ "version": "1.0.0",
++ "owner": "mail",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/mail/agent-inbox.v1.json",
++ "title": "MailAgentInbox",
++ "description": "An address an agent can read, on the person's own domain: <agent>.<user>@openvibe.email. The mail lands in the person's mailbox, like every other address OpenVibe.Mail hands out; what makes it an agent's inbox is that the service reads it back for the agent acting for that person. One agent has one inbox: asking twice returns the same resource.",
++ "type": "object",
++ "required": [
++ "id",
++ "owner",
++ "agent_id",
++ "address",
++ "created_at"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "id": {
++ "type": "string",
++ "pattern": "^agi_[0-9A-HJKMNP-TV-Z]{26}$",
++ "description": "The inbox id. Opaque outside OpenVibe.Mail."
++ },
++ "owner": {
++ "type": "string",
++ "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
++ "description": "The Network subject id of the person whose mailbox receives the agent's mail."
++ },
++ "agent_id": {
++ "type": "string",
++ "pattern": "^[a-z0-9](?:[a-z0-9-]{0,30}[a-z0-9])?$",
++ "maxLength": 32,
++ "description": "The agent's name in the address, lowercased and cleaned (letters, digits and hyphens)."
++ },
++ "address": {
++ "type": "string",
++ "format": "email",
++ "pattern": "^[a-z0-9-]+\\.[a-z0-9-]+@[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+$",
++ "maxLength": 254,
++ "description": "The agent's address. In M1 the user part is the person's Network username, falling back to their mailbox local when that readable address is already taken."
++ },
++ "created_at": {
++ "type": "string",
++ "format": "date-time",
++ "description": "When the inbox was made, ISO 8601 UTC."
++ }
++ }
++ }
++ },
++ "mail.message-summary": {
++ "version": "1.0.0",
++ "owner": "mail",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/mail/message-summary.v1.json",
++ "title": "MailMessageSummary",
++ "description": "One message in a mask, burner or agent inbox, as OpenVibe.Mail's list API returns it: the id, the senders, the subject and the time. It deliberately has no preview and no body: a message body is read only by the verification-code endpoint, in memory, and is never part of a list, an event or a database row. additionalProperties is false so a field like body, preview or html fails the contract rather than leaking into an API.",
++ "type": "object",
++ "required": [
++ "id",
++ "from",
++ "subject",
++ "received_at"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "id": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 512,
++ "description": "The mail server's message id (a JMAP Email id). Opaque outside OpenVibe.Mail."
++ },
++ "from": {
++ "type": "array",
++ "maxItems": 100,
++ "items": {
++ "type": "string",
++ "format": "email",
++ "maxLength": 254
++ },
++ "description": "The sender addresses, as the mail server parsed them. An address list, not a display name."
++ },
++ "subject": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "maxLength": 2000,
++ "description": "The subject line, or null when the message had none."
++ },
++ "received_at": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "format": "date-time",
++ "description": "When the mail server received the message, ISO 8601 UTC, or null when it did not record a time."
++ }
++ }
++ }
}
}
}
ddiff --git a/generated/openapi/actor.json b/generated/openapi/actor.json
iindex 4eb59c0b..b8dddeda 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.328.0",
-- "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 19344f1a..2a99da97 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.328.0",
-- "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 2279876c..17f2c47c 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.328.0",
-- "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 107d4bf7..23c2558c 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.328.0",
-- "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 5346dc90..0da3a256 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.328.0",
-- "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 8a3d28fc..7ee917d8 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.328.0",
-- "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 f4abfcd9..0b5ba234 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.328.0",
-- "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 125c53a5..c035e780 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.328.0",
-- "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 5fcbdc5d..f8e58e6b 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.328.0",
-- "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 1a0ece03..54cda962 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.328.0",
-- "description": "Routes of OpenVibe Connect as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe Connect as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 f421af77..49fc5c46 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.328.0",
-- "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 790a4fc7..c0a67424 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.328.0",
-- "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 e272794d..f9d77950 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.328.0",
-- "description": "Routes of OpenVibe.Design as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Design as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 5cbe8a5d..22335010 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.328.0",
-- "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 dbc5b106..7a8ab422 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.328.0",
-- "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 45d62a28..19eae659 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.328.0",
-- "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 c0e9f083..2186a788 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.328.0",
-- "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 9257a85e..83338af8 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.328.0",
-- "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.329.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/inventory.json b/generated/openapi/inventory.json
iindex fc6ab373..520790c5 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.328.0",
-- "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 4434c549..1aaa6216 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.328.0",
-- "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 c5093823..8e544021 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.328.0",
-- "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 db4d3dbc..2fcb80b4 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.328.0",
-- "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 7f2b6723..2f839cfa 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.328.0",
-- "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 b8875fcd..c54a613e 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.328.0",
-- "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 7d225ded..902c37ee 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.328.0",
-- "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 1ca59dae..daa79166 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.328.0",
-- "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 fcd4e670..5a6173c1 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.328.0",
-- "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.329.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/report.json b/generated/openapi/report.json
iindex e9963eea..3129e19a 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.328.0",
-- "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 bd6d9dfe..061f3654 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.328.0",
-- "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 e6511087..82b7f9e9 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.328.0",
-- "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 5852d986..832d1ebc 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.328.0",
-- "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 0b36a08b..933c0058 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.328.0",
-- "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 bfde4ee7..38c2d8f1 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.328.0",
-- "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 880f83e5..b7d31ee2 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.328.0",
-- "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 f43aa57c..f14d854b 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.328.0",
-- "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 877a4e03..39297854 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.328.0",
-- "description": "Routes of OpenVibe.Today as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Today as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 b871c02c..873c05e7 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.328.0",
-- "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 b636d1b7..b7e0d42f 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.328.0",
-- "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 c00b7f41..547e6730 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.328.0",
-- "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 208504de..e93e6674 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.328.0",
-- "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 f2e855ff..8d0d5b3c 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.328.0",
-- "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 7464f89a..9b371219 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.328.0",
-- "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 190baa1f..a1d68955 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.328.0",
-- "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 63ca7c2a..93c9ad8e 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.328.0",
-- "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.328.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.329.0",
++ "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.329.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 efcb2f1a..91cb7992 100644
---- a/generated/typescript/index.d.ts
++++ b/generated/typescript/index.d.ts
@@@ -301911,3 +301911,121 @@ export interface NetworkMenuFeeds {
*/
updated_at: string;
}
++
++/** [email protected] (owner: mail) */
++/**
++ * A per-site address on OpenVibe.Mail that delivers into its owner's OpenVibe mailbox and nowhere else. Turning it off makes the address bounce: it leaves the SQL directory Stalwart reads, so a new message is refused. The address is <words>.<four characters>@<mask domain>; the four characters keep two people from guessing each other's mask. The contract is metadata only: it never carries a message body.
++ */
++export interface MailMask {
++ /**
++ * The mask id. Opaque outside OpenVibe.Mail; never a database integer.
++ */
++ id: string;
++ /**
++ * The Network subject id of the person whose mailbox receives the mask's mail. A mask never forwards outside OpenVibe.
++ */
++ owner: string;
++ /**
++ * The mask address: the words the person chose, a dot, four unguessable characters, and the mask domain (mask.openvibe.email in M1).
++ */
++ address: string;
++ /**
++ * The person's name for the mask, e.g. "Amazon". Free text; never interpreted as an address.
++ */
++ label: string | null;
++ /**
++ * What the mask is for, e.g. "shopping". Optional metadata for the person's own list.
++ */
++ purpose: string | null;
++ /**
++ * Whether the mask resolves. When false the SQL directory has no row for the address, so the mail server refuses it.
++ */
++ enabled: boolean;
++ /**
++ * When the mask was made, ISO 8601 UTC.
++ */
++ created_at: string;
++}
++
++/** [email protected] (owner: mail) */
++/**
++ * A throwaway receive-only address on OpenVibe.Mail. It expires after ten minutes, an hour, a day or a week, or after the first message when first_message_only is set. When it expires its mail is deleted and the address bounces. A ten-minute burner may be made without an account (owner is null) and is then read with the one-time token the create call returns; the token is deliberately not part of this resource.
++ */
++export interface MailBurner {
++ /**
++ * The burner id. Opaque outside OpenVibe.Mail.
++ */
++ id: string;
++ /**
++ * The Network subject id of the person who made the burner, or null for a ten-minute burner made without an account.
++ */
++ owner: string | null;
++ /**
++ * The burner address: eight unguessable characters on one of the rotating burner domains.
++ */
++ address: string;
++ /**
++ * When the address stops resolving and its mail is due for deletion, ISO 8601 UTC.
++ */
++ expires_at: string;
++ /**
++ * When true the burner accepts one message and then stops resolving.
++ */
++ first_message_only: boolean;
++ /**
++ * When the burner was made, ISO 8601 UTC.
++ */
++ created_at: string;
++}
++
++/** [email protected] (owner: mail) */
++/**
++ * An address an agent can read, on the person's own domain: <agent>.<user>@openvibe.email. The mail lands in the person's mailbox, like every other address OpenVibe.Mail hands out; what makes it an agent's inbox is that the service reads it back for the agent acting for that person. One agent has one inbox: asking twice returns the same resource.
++ */
++export interface MailAgentInbox {
++ /**
++ * The inbox id. Opaque outside OpenVibe.Mail.
++ */
++ id: string;
++ /**
++ * The Network subject id of the person whose mailbox receives the agent's mail.
++ */
++ owner: string;
++ /**
++ * The agent's name in the address, lowercased and cleaned (letters, digits and hyphens).
++ */
++ agent_id: string;
++ /**
++ * The agent's address. In M1 the user part is the person's Network username, falling back to their mailbox local when that readable address is already taken.
++ */
++ address: string;
++ /**
++ * When the inbox was made, ISO 8601 UTC.
++ */
++ created_at: string;
++}
++
++/** [email protected] (owner: mail) */
++/**
++ * One message in a mask, burner or agent inbox, as OpenVibe.Mail's list API returns it: the id, the senders, the subject and the time. It deliberately has no preview and no body: a message body is read only by the verification-code endpoint, in memory, and is never part of a list, an event or a database row. additionalProperties is false so a field like body, preview or html fails the contract rather than leaking into an API.
++ */
++export interface MailMessageSummary {
++ /**
++ * The mail server's message id (a JMAP Email id). Opaque outside OpenVibe.Mail.
++ */
++ id: string;
++ /**
++ * The sender addresses, as the mail server parsed them. An address list, not a display name.
++ *
++ * @maxItems 100
++ */
++ from: string[];
++ /**
++ * The subject line, or null when the message had none.
++ */
++ subject: string | null;
++ /**
++ * When the mail server received the message, ISO 8601 UTC, or null when it did not record a time.
++ */
++ received_at: string | null;
++}
ddiff --git a/package-lock.json b/package-lock.json
iindex 135cfb7e..9860fe9b 100644
---- a/package-lock.json
++++ b/package-lock.json
@@@ -1,12 +1,12 @@
{
"name": "openvibe-contracts",
-- "version": "0.328.0",
++ "version": "0.329.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "openvibe-contracts",
-- "version": "0.328.0",
++ "version": "0.329.0",
"license": "AGPL-3.0-only",
"dependencies": {
"ajv": "^8.17.1",
ddiff --git a/package.json b/package.json
iindex 59230c50..4293748e 100644
---- a/package.json
++++ b/package.json
@@@ -1,6 +1,6 @@
{
"name": "openvibe-contracts",
-- "version": "0.328.0",
++ "version": "0.329.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",