openvibers/openvibe.contracts Commits
0.208.0: Coupons, Deals and Trade open what a person does for themselves to apps (lookups, submissions, reports, votes, flags, watches, watchlists and alerts); moderation stays first-party (#195)
Changes
@@@ -4,6 +4,19 @@ All notable changes to `openvibe-contracts`. Releases are git tags (`vX.Y.Z`) thfrom `https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/<tag>`. Before v0.30.0,the notes were in the tag and commit messages (`git tag -n1`).++## 0.208.0 — 2026-10-20++++- Coupons, Deals and Trade open what a person does for themselves to apps (all three already act for an app only as++ its `on_behalf_of` person and refuse sandbox tokens):++ - Coupons: `coupon.lookup` and `merchant.resolve` (public data), `coupon.submit` (sensitive: a code under the++ person's name, status unknown until reports) and `report.create` (worked or failed, one a day per code).++ - Deals: `offer.submit` (sensitive), `offer.update` (the person's own offers, or a new price observation),++ `flag.create`, `vote.set` (sensitive) and `vote.remove`, and `watch.create`, `.read` and `.delete`.++ - Trade: `instrument.resolve`, and the person's own `watchlist.*` and `alert.*`.++- Moderation (`coupons.status.update`, `coupons.merchant.manage`, `deals.offer.moderate`, `.merge`, `.expire`),++ `deals.product.resolve` (which creates products) and `trade.context.read` (drafts awaiting review and OpenVibe.AI's++ workflow input) stay first-party.++## 0.207.0 — 2026-10-20- Reviews and the Wiki open their reads to apps: `reviews.entity.resolve` (look up a business, product or place and@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Actor API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.AI API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Billing API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Blog API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Bot API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Chat API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Codes API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Community API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Coupons API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -20,7 +20,7 @@"get": {"operationId": "get_api_v1_coupons_id","summary": "Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code.",-- "description": "**coupons.coupon.lookup** (first-party): Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code. Public data only, the same response for every caller; anonymous callers may use the routes with tighter rate limits. The charter's coupons.lookup.",++ "description": "**coupons.coupon.lookup** (public): Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code. Public data only, the same response for every caller; anonymous callers may use the routes with tighter rate limits. The charter's coupons.lookup.","tags": ["coupons.coupon"],@@@ -28,7 +28,7 @@"coupons.coupon.lookup"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "coupons-lookup","security": [@@@ -76,7 +76,7 @@"post": {"operationId": "post_api_v1_coupons_id_report","summary": "Report that a code worked or failed, on behalf of a person (X-OV-Subject).",-- "description": "**coupons.report.create** (first-party): Report that a code worked or failed, on behalf of a person (X-OV-Subject). One report per person, code and UTC day; only the latest per person counts; rate-limited per person; AI output (X-OV-Origin: ai) is refused. The response carries aggregates only, never a reporter. The charter's coupons.report.",++ "description": "**coupons.report.create** (public): Report that a code worked or failed, on behalf of a person (X-OV-Subject). One report per person, code and UTC day; only the latest per person counts; rate-limited per person; AI output (X-OV-Origin: ai) is refused. The response carries aggregates only, never a reporter. The charter's coupons.report.","tags": ["coupons.report"],@@@ -84,7 +84,7 @@"coupons.report.create"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "coupons-report","security": [@@@ -208,7 +208,7 @@"post": {"operationId": "post_api_v1_coupons_submit","summary": "Submit a coupon code for a merchant (by merchant id, host or URL) on behalf of a person (X-OV-Subject) or as AI output (X-OV-Origin: ai, held for staff review).",-- "description": "**coupons.coupon.submit** (first-party): Submit a coupon code for a merchant (by merchant id, host or URL) on behalf of a person (X-OV-Subject) or as AI output (X-OV-Origin: ai, held for staff review). The code starts with status unknown; a status, confidence or 'verified' field is refused. A site no merchant covers becomes a pending merchant for staff review. The charter's coupons.submit.",++ "description": "**coupons.coupon.submit** (public): Submit a coupon code for a merchant (by merchant id, host or URL) on behalf of a person (X-OV-Subject) or as AI output (X-OV-Origin: ai, held for staff review). The code starts with status unknown; a status, confidence or 'verified' field is refused. A site no merchant covers becomes a pending merchant for staff review. The charter's coupons.submit.","tags": ["coupons.coupon"],@@@ -216,7 +216,7 @@"coupons.coupon.submit"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "coupons-write","security": [@@@ -320,7 +320,7 @@"get": {"operationId": "get_api_v1_merchants_id","summary": "Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code.",-- "description": "**coupons.coupon.lookup** (first-party): Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code. Public data only, the same response for every caller; anonymous callers may use the routes with tighter rate limits. The charter's coupons.lookup.",++ "description": "**coupons.coupon.lookup** (public): Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code. Public data only, the same response for every caller; anonymous callers may use the routes with tighter rate limits. The charter's coupons.lookup.","tags": ["coupons.coupon"],@@@ -328,7 +328,7 @@"coupons.coupon.lookup"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "coupons-lookup","security": [@@@ -376,7 +376,7 @@"get": {"operationId": "get_api_v1_merchants_id_coupons","summary": "Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code.",-- "description": "**coupons.coupon.lookup** (first-party): Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code. Public data only, the same response for every caller; anonymous callers may use the routes with tighter rate limits. The charter's coupons.lookup.",++ "description": "**coupons.coupon.lookup** (public): Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code. Public data only, the same response for every caller; anonymous callers may use the routes with tighter rate limits. The charter's coupons.lookup.","tags": ["coupons.coupon"],@@@ -384,7 +384,7 @@"coupons.coupon.lookup"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "coupons-lookup","security": [@@@ -564,7 +564,7 @@"get": {"operationId": "get_api_v1_merchants_resolve_host","summary": "Resolve a hostname to an active merchant (normalized host, eTLD+1 from a bundled public-suffix subset, subdomain rules; path rules never match host-only lookups).",-- "description": "**coupons.merchant.resolve** (first-party): Resolve a hostname to an active merchant (normalized host, eTLD+1 from a bundled public-suffix subset, subdomain rules; path rules never match host-only lookups). Public data only; anonymous callers may use the route with tighter rate limits.",++ "description": "**coupons.merchant.resolve** (public): Resolve a hostname to an active merchant (normalized host, eTLD+1 from a bundled public-suffix subset, subdomain rules; path rules never match host-only lookups). Public data only; anonymous callers may use the route with tighter rate limits.","tags": ["coupons.merchant"],@@@ -572,7 +572,7 @@"coupons.merchant.resolve"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "coupons-lookup","security": [@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Deals API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -135,7 +135,7 @@"post": {"operationId": "post_api_v1_offers","summary": "Submit a deal for the acting person (X-OV-Subject): a link, title and what the person sees now (price with its currency, shipping, condition, availability — each optional, never defaulted).",-- "description": "**deals.offer.submit** (first-party): Submit a deal for the acting person (X-OV-Subject): a link, title and what the person sees now (price with its currency, shipping, condition, availability — each optional, never defaulted). The first observation is recorded with its time. A link already posted answers 409 offer.duplicate with the existing offer. With X-OV-Origin: ai the text is AI-assisted: disclosed and noindex until a person reviews it. Rate-limited per person.",++ "description": "**deals.offer.submit** (public): Submit a deal for the acting person (X-OV-Subject): a link, title and what the person sees now (price with its currency, shipping, condition, availability — each optional, never defaulted). The first observation is recorded with its time. A link already posted answers 409 offer.duplicate with the existing offer. With X-OV-Origin: ai the text is AI-assisted: disclosed and noindex until a person reviews it. Rate-limited per person.","tags": ["deals.offer"],@@@ -143,7 +143,7 @@"deals.offer.submit"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "deals-write","security": [@@@ -191,7 +191,7 @@"patch": {"operationId": "patch_api_v1_offers_id","summary": "Edit an offer the acting person submitted (title, description, category, stated expiry, product link), or record a new observation of any active offer for the acting person (POST …/observations: price",-- "description": "**deals.offer.update** (first-party): Edit an offer the acting person submitted (title, description, category, stated expiry, product link), or record a new observation of any active offer for the acting person (POST …/observations: price with currency, shipping, condition, availability, with the time it was observed). Prices are never edited in place; each observation is a new row. Services may state observed_at (never in the future).",++ "description": "**deals.offer.update** (public): Edit an offer the acting person submitted (title, description, category, stated expiry, product link), or record a new observation of any active offer for the acting person (POST …/observations: price with currency, shipping, condition, availability, with the time it was observed). Prices are never edited in place; each observation is a new row. Services may state observed_at (never in the future).","tags": ["deals.offer"],@@@ -199,7 +199,7 @@"deals.offer.update"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "deals-write","security": [@@@ -455,7 +455,7 @@"post": {"operationId": "post_api_v1_offers_id_flags","summary": "Report a problem with an offer for the acting person (expired, price_wrong, duplicate, spam, other).",-- "description": "**deals.flag.create** (first-party): Report a problem with an offer for the acting person (expired, price_wrong, duplicate, spam, other). One open report per person and offer; rate-limited. Flags never change an offer by themselves.",++ "description": "**deals.flag.create** (public): Report a problem with an offer for the acting person (expired, price_wrong, duplicate, spam, other). One open report per person and offer; rate-limited. Flags never change an offer by themselves.","tags": ["deals.flag"],@@@ -463,7 +463,7 @@"deals.flag.create"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "deals-write","security": [@@@ -587,7 +587,7 @@"post": {"operationId": "post_api_v1_offers_id_observations","summary": "Edit an offer the acting person submitted (title, description, category, stated expiry, product link), or record a new observation of any active offer for the acting person (POST …/observations: price",-- "description": "**deals.offer.update** (first-party): Edit an offer the acting person submitted (title, description, category, stated expiry, product link), or record a new observation of any active offer for the acting person (POST …/observations: price with currency, shipping, condition, availability, with the time it was observed). Prices are never edited in place; each observation is a new row. Services may state observed_at (never in the future).",++ "description": "**deals.offer.update** (public): Edit an offer the acting person submitted (title, description, category, stated expiry, product link), or record a new observation of any active offer for the acting person (POST …/observations: price with currency, shipping, condition, availability, with the time it was observed). Prices are never edited in place; each observation is a new row. Services may state observed_at (never in the future).","tags": ["deals.offer"],@@@ -595,7 +595,7 @@"deals.offer.update"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "deals-write","security": [@@@ -785,7 +785,7 @@"delete": {"operationId": "delete_api_v1_offers_id_vote","summary": "Remove the acting person's vote on an offer (kept as a removed row for history).",-- "description": "**deals.vote.remove** (first-party): Remove the acting person's vote on an offer (kept as a removed row for history). Same abuse controls as deals.vote.set.",++ "description": "**deals.vote.remove** (public): Remove the acting person's vote on an offer (kept as a removed row for history). Same abuse controls as deals.vote.set.","tags": ["deals.vote"],@@@ -793,7 +793,7 @@"deals.vote.remove"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "deals-vote","security": [@@@ -839,7 +839,7 @@"put": {"operationId": "put_api_v1_offers_id_vote","summary": "Set the acting person's vote (+1 / -1) on an offer.",-- "description": "**deals.vote.set** (first-party): Set the acting person's vote (+1 / -1) on an offer. Server-authoritative: weight and hotness are computed by Deals (hot@1), never taken from the request. Rate-limited per person, per IP hash and per offer; no votes on one's own offer; vote-ring detection flags moderators.",++ "description": "**deals.vote.set** (public): Set the acting person's vote (+1 / -1) on an offer. Server-authoritative: weight and hotness are computed by Deals (hot@1), never taken from the request. Rate-limited per person, per IP hash and per offer; no votes on one's own offer; vote-ring detection flags moderators.","tags": ["deals.vote"],@@@ -847,7 +847,7 @@"deals.vote.set"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "deals-vote","security": [@@@ -961,7 +961,7 @@"get": {"operationId": "get_api_v1_watches","summary": "List the acting person's watches and saved searches with their notification counts.",-- "description": "**deals.watch.read** (first-party): List the acting person's watches and saved searches with their notification counts.",++ "description": "**deals.watch.read** (public): List the acting person's watches and saved searches with their notification counts.","tags": ["deals.watch"],@@@ -969,7 +969,7 @@"deals.watch.read"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "deals-read","security": [@@@ -1005,7 +1005,7 @@"post": {"operationId": "post_api_v1_watches","summary": "Create a keyword, product or price-below watch, or a saved search (never notifies), for the acting person.",-- "description": "**deals.watch.create** (first-party): Create a keyword, product or price-below watch, or a saved search (never notifies), for the acting person. A watch notifies at most once per observation (deals.watch.matched, internal; Deals never emails).",++ "description": "**deals.watch.create** (public): Create a keyword, product or price-below watch, or a saved search (never notifies), for the acting person. A watch notifies at most once per observation (deals.watch.matched, internal; Deals never emails).","tags": ["deals.watch"],@@@ -1013,7 +1013,7 @@"deals.watch.create"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "deals-write","security": [@@@ -1061,7 +1061,7 @@"delete": {"operationId": "delete_api_v1_watches_id","summary": "Delete one of the acting person's watches or saved searches.",-- "description": "**deals.watch.delete** (first-party): Delete one of the acting person's watches or saved searches.",++ "description": "**deals.watch.delete** (public): Delete one of the acting person's watches or saved searches.","tags": ["deals.watch"],@@@ -1069,7 +1069,7 @@"deals.watch.delete"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "deals-write","security": [@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Events API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Food API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Games API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Host API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Inventory API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Live API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.MediaHub API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Media API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Network API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.News API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenRestream API",-- "version": "0.207.0",-- "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Play API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Quest API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Reviews API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Run API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Search API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Services API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Sources API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Space API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Tips API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Tools API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Trade API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -20,7 +20,7 @@"get": {"operationId": "get_api_v1_alerts","summary": "Read the alert rules and recent deliveries of the person in X-OV-Subject.",-- "description": "**trade.alert.read** (first-party): Read the alert rules and recent deliveries of the person in X-OV-Subject.",++ "description": "**trade.alert.read** (public): Read the alert rules and recent deliveries of the person in X-OV-Subject.","tags": ["trade.alert"],@@@ -28,7 +28,7 @@"trade.alert.read"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "trade-read","security": [@@@ -64,7 +64,7 @@"post": {"operationId": "post_api_v1_alerts","summary": "Create an alert rule for the person in X-OV-Subject: threshold (a crossing of a metric in a unit), filing_type or new_document.",-- "description": "**trade.alert.create** (first-party): Create an alert rule for the person in X-OV-Subject: threshold (a crossing of a metric in a unit), filing_type or new_document. Deliveries are unique per (rule, triggering observation or document) and are sent as trade.alert.triggered (visibility subject); no email.",++ "description": "**trade.alert.create** (public): Create an alert rule for the person in X-OV-Subject: threshold (a crossing of a metric in a unit), filing_type or new_document. Deliveries are unique per (rule, triggering observation or document) and are sent as trade.alert.triggered (visibility subject); no email.","tags": ["trade.alert"],@@@ -72,7 +72,7 @@"trade.alert.create"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "trade-write","security": [@@@ -120,7 +120,7 @@"delete": {"operationId": "delete_api_v1_alerts_id","summary": "Delete an alert rule of the person in X-OV-Subject.",-- "description": "**trade.alert.delete** (first-party): Delete an alert rule of the person in X-OV-Subject.",++ "description": "**trade.alert.delete** (public): Delete an alert rule of the person in X-OV-Subject.","tags": ["trade.alert"],@@@ -128,7 +128,7 @@"trade.alert.delete"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "trade-write","security": [@@@ -176,7 +176,7 @@"get": {"operationId": "get_api_v1_alerts_deliveries","summary": "Read the alert rules and recent deliveries of the person in X-OV-Subject.",-- "description": "**trade.alert.read** (first-party): Read the alert rules and recent deliveries of the person in X-OV-Subject.",++ "description": "**trade.alert.read** (public): Read the alert rules and recent deliveries of the person in X-OV-Subject.","tags": ["trade.alert"],@@@ -184,7 +184,7 @@"trade.alert.read"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "trade-read","security": [@@@ -586,7 +586,7 @@"get": {"operationId": "get_api_v1_instruments_resolve","summary": "Resolve a ticker, SEC CIK or exact company name to an instrument, deterministically (CIK, then ticker, then exact normalised name; several name matches are \"ambiguous\" and none is chosen).",-- "description": "**trade.instrument.resolve** (first-party): Resolve a ticker, SEC CIK or exact company name to an instrument, deterministically (CIK, then ticker, then exact normalised name; several name matches are \"ambiguous\" and none is chosen). Browsers and anonymous readers need no capability.",++ "description": "**trade.instrument.resolve** (public): Resolve a ticker, SEC CIK or exact company name to an instrument, deterministically (CIK, then ticker, then exact normalised name; several name matches are \"ambiguous\" and none is chosen). Browsers and anonymous readers need no capability.","tags": ["trade.instrument"],@@@ -594,7 +594,7 @@"trade.instrument.resolve"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "trade-read","security": [@@@ -688,7 +688,7 @@"get": {"operationId": "get_api_v1_watchlists","summary": "Read the watchlists of the person in X-OV-Subject (never anyone else's: another person's watchlist is 404).",-- "description": "**trade.watchlist.read** (first-party): Read the watchlists of the person in X-OV-Subject (never anyone else's: another person's watchlist is 404).",++ "description": "**trade.watchlist.read** (public): Read the watchlists of the person in X-OV-Subject (never anyone else's: another person's watchlist is 404).","tags": ["trade.watchlist"],@@@ -696,7 +696,7 @@"trade.watchlist.read"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "trade-read","security": [@@@ -732,7 +732,7 @@"post": {"operationId": "post_api_v1_watchlists","summary": "Create a private watchlist for the person in X-OV-Subject.",-- "description": "**trade.watchlist.create** (first-party): Create a private watchlist for the person in X-OV-Subject.",++ "description": "**trade.watchlist.create** (public): Create a private watchlist for the person in X-OV-Subject.","tags": ["trade.watchlist"],@@@ -740,7 +740,7 @@"trade.watchlist.create"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "trade-write","security": [@@@ -788,7 +788,7 @@"delete": {"operationId": "delete_api_v1_watchlists_id","summary": "Delete a watchlist of the person in X-OV-Subject.",-- "description": "**trade.watchlist.delete** (first-party): Delete a watchlist of the person in X-OV-Subject.",++ "description": "**trade.watchlist.delete** (public): Delete a watchlist of the person in X-OV-Subject.","tags": ["trade.watchlist"],@@@ -796,7 +796,7 @@"trade.watchlist.delete"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "trade-write","security": [@@@ -842,7 +842,7 @@"get": {"operationId": "get_api_v1_watchlists_id","summary": "Read the watchlists of the person in X-OV-Subject (never anyone else's: another person's watchlist is 404).",-- "description": "**trade.watchlist.read** (first-party): Read the watchlists of the person in X-OV-Subject (never anyone else's: another person's watchlist is 404).",++ "description": "**trade.watchlist.read** (public): Read the watchlists of the person in X-OV-Subject (never anyone else's: another person's watchlist is 404).","tags": ["trade.watchlist"],@@@ -850,7 +850,7 @@"trade.watchlist.read"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "trade-read","security": [@@@ -896,7 +896,7 @@"patch": {"operationId": "patch_api_v1_watchlists_id","summary": "Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.",-- "description": "**trade.watchlist.update** (first-party): Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.",++ "description": "**trade.watchlist.update** (public): Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.","tags": ["trade.watchlist"],@@@ -904,7 +904,7 @@"trade.watchlist.update"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "trade-write","security": [@@@ -962,7 +962,7 @@"delete": {"operationId": "delete_api_v1_watchlists_id_items_symbol","summary": "Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.",-- "description": "**trade.watchlist.update** (first-party): Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.",++ "description": "**trade.watchlist.update** (public): Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.","tags": ["trade.watchlist"],@@@ -970,7 +970,7 @@"trade.watchlist.update"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "trade-write","security": [@@@ -1027,7 +1027,7 @@"put": {"operationId": "put_api_v1_watchlists_id_items_symbol","summary": "Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.",-- "description": "**trade.watchlist.update** (first-party): Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.",++ "description": "**trade.watchlist.update** (public): Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.","tags": ["trade.watchlist"],@@@ -1035,7 +1035,7 @@"trade.watchlist.update"],"x-openvibe-visibility": [-- "first-party"++ "public"],"x-openvibe-quota-class": "trade-write","security": [@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.VIP API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Watch API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Wiki API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Work API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Zone API",-- "version": "0.207.0",-- "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",++ "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.208.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"@@@ -3,7 +3,7 @@"version": "1.0","owner": "coupons","status": "active",-- "visibility": "first-party",++ "visibility": "public","description": "Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code. Public data only, the same response for every caller; anonymous callers may use the routes with tighter rate limits. The charter's coupons.lookup.","permissions": ["coupons:read"@@@ -3,7 +3,8 @@"version": "1.0","owner": "coupons","status": "active",-- "visibility": "first-party",++ "visibility": "public",++ "sensitive": true,"description": "Submit a coupon code for a merchant (by merchant id, host or URL) on behalf of a person (X-OV-Subject) or as AI output (X-OV-Origin: ai, held for staff review). The code starts with status unknown; a status, confidence or 'verified' field is refused. A site no merchant covers becomes a pending merchant for staff review. The charter's coupons.submit.","permissions": ["coupons:write"@@@ -3,7 +3,7 @@"version": "1.0","owner": "coupons","status": "active",-- "visibility": "first-party",++ "visibility": "public","description": "Resolve a hostname to an active merchant (normalized host, eTLD+1 from a bundled public-suffix subset, subdomain rules; path rules never match host-only lookups). Public data only; anonymous callers may use the route with tighter rate limits.","permissions": ["coupons:read"@@@ -3,7 +3,7 @@"version": "1.0","owner": "coupons","status": "active",-- "visibility": "first-party",++ "visibility": "public","description": "Report that a code worked or failed, on behalf of a person (X-OV-Subject). One report per person, code and UTC day; only the latest per person counts; rate-limited per person; AI output (X-OV-Origin: ai) is refused. The response carries aggregates only, never a reporter. The charter's coupons.report.","permissions": ["coupons:report"@@@ -3,7 +3,7 @@"version": "1.0","owner": "deals","status": "active",-- "visibility": "first-party",++ "visibility": "public","description": "Report a problem with an offer for the acting person (expired, price_wrong, duplicate, spam, other). One open report per person and offer; rate-limited. Flags never change an offer by themselves.","permissions": ["deals:write"@@@ -3,7 +3,8 @@"version": "1.0","owner": "deals","status": "active",-- "visibility": "first-party",++ "visibility": "public",++ "sensitive": true,"description": "Submit a deal for the acting person (X-OV-Subject): a link, title and what the person sees now (price with its currency, shipping, condition, availability — each optional, never defaulted). The first observation is recorded with its time. A link already posted answers 409 offer.duplicate with the existing offer. With X-OV-Origin: ai the text is AI-assisted: disclosed and noindex until a person reviews it. Rate-limited per person.","permissions": ["deals:write"@@@ -3,7 +3,7 @@"version": "1.0","owner": "deals","status": "active",-- "visibility": "first-party",++ "visibility": "public","description": "Edit an offer the acting person submitted (title, description, category, stated expiry, product link), or record a new observation of any active offer for the acting person (POST …/observations: price with currency, shipping, condition, availability, with the time it was observed). Prices are never edited in place; each observation is a new row. Services may state observed_at (never in the future).","permissions": ["deals:write"@@@ -3,7 +3,7 @@"version": "1.0","owner": "deals","status": "active",-- "visibility": "first-party",++ "visibility": "public","description": "Remove the acting person's vote on an offer (kept as a removed row for history). Same abuse controls as deals.vote.set.","permissions": ["deals:vote"@@@ -3,7 +3,8 @@"version": "1.0","owner": "deals","status": "active",-- "visibility": "first-party",++ "visibility": "public",++ "sensitive": true,"description": "Set the acting person's vote (+1 / -1) on an offer. Server-authoritative: weight and hotness are computed by Deals (hot@1), never taken from the request. Rate-limited per person, per IP hash and per offer; no votes on one's own offer; vote-ring detection flags moderators.","permissions": ["deals:vote"@@@ -3,7 +3,7 @@"version": "1.0","owner": "deals","status": "active",-- "visibility": "first-party",++ "visibility": "public","description": "Create a keyword, product or price-below watch, or a saved search (never notifies), for the acting person. A watch notifies at most once per observation (deals.watch.matched, internal; Deals never emails).","permissions": ["deals:watch"@@@ -3,7 +3,7 @@"version": "1.0","owner": "deals","status": "active",-- "visibility": "first-party",++ "visibility": "public","description": "Delete one of the acting person's watches or saved searches.","permissions": ["deals:watch"@@@ -3,7 +3,7 @@"version": "1.0","owner": "deals","status": "active",-- "visibility": "first-party",++ "visibility": "public","description": "List the acting person's watches and saved searches with their notification counts.","permissions": ["deals:watch"@@@ -3,7 +3,7 @@"version": "1.0","owner": "trade","status": "active",-- "visibility": "first-party",++ "visibility": "public","description": "Create an alert rule for the person in X-OV-Subject: threshold (a crossing of a metric in a unit), filing_type or new_document. Deliveries are unique per (rule, triggering observation or document) and are sent as trade.alert.triggered (visibility subject); no email.","permissions": ["trade:write"@@@ -3,7 +3,7 @@"version": "1.0","owner": "trade","status": "active",-- "visibility": "first-party",++ "visibility": "public","description": "Delete an alert rule of the person in X-OV-Subject.","permissions": ["trade:write"@@@ -3,7 +3,7 @@"version": "1.0","owner": "trade","status": "active",-- "visibility": "first-party",++ "visibility": "public","description": "Read the alert rules and recent deliveries of the person in X-OV-Subject.","permissions": ["trade:read"@@@ -3,7 +3,7 @@"version": "1.0","owner": "trade","status": "active",-- "visibility": "first-party",++ "visibility": "public","description": "Resolve a ticker, SEC CIK or exact company name to an instrument, deterministically (CIK, then ticker, then exact normalised name; several name matches are \"ambiguous\" and none is chosen). Browsers and anonymous readers need no capability.","permissions": ["trade:read"@@@ -3,7 +3,7 @@"version": "1.0","owner": "trade","status": "active",-- "visibility": "first-party",++ "visibility": "public","description": "Create a private watchlist for the person in X-OV-Subject.","permissions": ["trade:write"@@@ -3,7 +3,7 @@"version": "1.0","owner": "trade","status": "active",-- "visibility": "first-party",++ "visibility": "public","description": "Delete a watchlist of the person in X-OV-Subject.","permissions": ["trade:write"@@@ -3,7 +3,7 @@"version": "1.0","owner": "trade","status": "active",-- "visibility": "first-party",++ "visibility": "public","description": "Read the watchlists of the person in X-OV-Subject (never anyone else's: another person's watchlist is 404).","permissions": ["trade:read"@@@ -3,7 +3,7 @@"version": "1.0","owner": "trade","status": "active",-- "visibility": "first-party",++ "visibility": "public","description": "Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.","permissions": ["trade:write"@@@ -1,12 +1,12 @@{"name": "openvibe-contracts",-- "version": "0.207.0",++ "version": "0.208.0","lockfileVersion": 3,"requires": true,"packages": {"": {"name": "openvibe-contracts",-- "version": "0.207.0",++ "version": "0.208.0","license": "AGPL-3.0-only","dependencies": {"ajv": "^8.17.1",@@@ -1,6 +1,6 @@{"name": "openvibe-contracts",-- "version": "0.207.0",++ "version": "0.208.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",
@@ -4,6 +4,19 @@ All notable changes to `openvibe-contracts`. Releases are git tags (`vX.Y.Z`) th
@@ -4,6 +4,19 @@ All notable changes to `openvibe-contracts`. Releases are git tags (`vX.Y.Z`) th
from `https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/<tag>`. Before v0.30.0,
from `https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/<tag>`. Before v0.30.0,
the notes were in the tag and commit messages (`git tag -n1`).
the notes were in the tag and commit messages (`git tag -n1`).
+## 0.208.0 — 2026-10-20
+
+- Coupons, Deals and Trade open what a person does for themselves to apps (all three already act for an app only as
+ its `on_behalf_of` person and refuse sandbox tokens):
+ - Coupons: `coupon.lookup` and `merchant.resolve` (public data), `coupon.submit` (sensitive: a code under the
+ person's name, status unknown until reports) and `report.create` (worked or failed, one a day per code).
+ - Deals: `offer.submit` (sensitive), `offer.update` (the person's own offers, or a new price observation),
+ `flag.create`, `vote.set` (sensitive) and `vote.remove`, and `watch.create`, `.read` and `.delete`.
+ - Trade: `instrument.resolve`, and the person's own `watchlist.*` and `alert.*`.
+- Moderation (`coupons.status.update`, `coupons.merchant.manage`, `deals.offer.moderate`, `.merge`, `.expire`),
+ `deals.product.resolve` (which creates products) and `trade.context.read` (drafts awaiting review and OpenVibe.AI's
+ workflow input) stay first-party.
+
## 0.207.0 — 2026-10-20
## 0.207.0 — 2026-10-20
- Reviews and the Wiki open their reads to apps: `reviews.entity.resolve` (look up a business, product or place and
- Reviews and the Wiki open their reads to apps: `reviews.entity.resolve` (look up a business, product or place and
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Actor API",
"title": "OpenVibe.Actor API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.AI API",
"title": "OpenVibe.AI API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Billing API",
"title": "OpenVibe.Billing API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Blog API",
"title": "OpenVibe.Blog API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Bot API",
"title": "OpenVibe.Bot API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Chat API",
"title": "OpenVibe.Chat API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Codes API",
"title": "OpenVibe.Codes API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Community API",
"title": "OpenVibe.Community API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Coupons API",
"title": "OpenVibe.Coupons API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -20,7 +20,7 @@
@@ -20,7 +20,7 @@
"get": {
"get": {
"operationId": "get_api_v1_coupons_id",
"operationId": "get_api_v1_coupons_id",
"summary": "Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code.",
"summary": "Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code.",
- "description": "**coupons.coupon.lookup** (first-party): Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code. Public data only, the same response for every caller; anonymous callers may use the routes with tighter rate limits. The charter's coupons.lookup.",
+ "description": "**coupons.coupon.lookup** (public): Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code. Public data only, the same response for every caller; anonymous callers may use the routes with tighter rate limits. The charter's coupons.lookup.",
"tags": [
"tags": [
"coupons.coupon"
"coupons.coupon"
],
],
@@ -28,7 +28,7 @@
@@ -28,7 +28,7 @@
"coupons.coupon.lookup"
"coupons.coupon.lookup"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "coupons-lookup",
"x-openvibe-quota-class": "coupons-lookup",
"security": [
"security": [
@@ -76,7 +76,7 @@
@@ -76,7 +76,7 @@
"post": {
"post": {
"operationId": "post_api_v1_coupons_id_report",
"operationId": "post_api_v1_coupons_id_report",
"summary": "Report that a code worked or failed, on behalf of a person (X-OV-Subject).",
"summary": "Report that a code worked or failed, on behalf of a person (X-OV-Subject).",
- "description": "**coupons.report.create** (first-party): Report that a code worked or failed, on behalf of a person (X-OV-Subject). One report per person, code and UTC day; only the latest per person counts; rate-limited per person; AI output (X-OV-Origin: ai) is refused. The response carries aggregates only, never a reporter. The charter's coupons.report.",
+ "description": "**coupons.report.create** (public): Report that a code worked or failed, on behalf of a person (X-OV-Subject). One report per person, code and UTC day; only the latest per person counts; rate-limited per person; AI output (X-OV-Origin: ai) is refused. The response carries aggregates only, never a reporter. The charter's coupons.report.",
"tags": [
"tags": [
"coupons.report"
"coupons.report"
],
],
@@ -84,7 +84,7 @@
@@ -84,7 +84,7 @@
"coupons.report.create"
"coupons.report.create"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "coupons-report",
"x-openvibe-quota-class": "coupons-report",
"security": [
"security": [
@@ -208,7 +208,7 @@
@@ -208,7 +208,7 @@
"post": {
"post": {
"operationId": "post_api_v1_coupons_submit",
"operationId": "post_api_v1_coupons_submit",
"summary": "Submit a coupon code for a merchant (by merchant id, host or URL) on behalf of a person (X-OV-Subject) or as AI output (X-OV-Origin: ai, held for staff review).",
"summary": "Submit a coupon code for a merchant (by merchant id, host or URL) on behalf of a person (X-OV-Subject) or as AI output (X-OV-Origin: ai, held for staff review).",
- "description": "**coupons.coupon.submit** (first-party): Submit a coupon code for a merchant (by merchant id, host or URL) on behalf of a person (X-OV-Subject) or as AI output (X-OV-Origin: ai, held for staff review). The code starts with status unknown; a status, confidence or 'verified' field is refused. A site no merchant covers becomes a pending merchant for staff review. The charter's coupons.submit.",
+ "description": "**coupons.coupon.submit** (public): Submit a coupon code for a merchant (by merchant id, host or URL) on behalf of a person (X-OV-Subject) or as AI output (X-OV-Origin: ai, held for staff review). The code starts with status unknown; a status, confidence or 'verified' field is refused. A site no merchant covers becomes a pending merchant for staff review. The charter's coupons.submit.",
"tags": [
"tags": [
"coupons.coupon"
"coupons.coupon"
],
],
@@ -216,7 +216,7 @@
@@ -216,7 +216,7 @@
"coupons.coupon.submit"
"coupons.coupon.submit"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "coupons-write",
"x-openvibe-quota-class": "coupons-write",
"security": [
"security": [
@@ -320,7 +320,7 @@
@@ -320,7 +320,7 @@
"get": {
"get": {
"operationId": "get_api_v1_merchants_id",
"operationId": "get_api_v1_merchants_id",
"summary": "Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code.",
"summary": "Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code.",
- "description": "**coupons.coupon.lookup** (first-party): Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code. Public data only, the same response for every caller; anonymous callers may use the routes with tighter rate limits. The charter's coupons.lookup.",
+ "description": "**coupons.coupon.lookup** (public): Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code. Public data only, the same response for every caller; anonymous callers may use the routes with tighter rate limits. The charter's coupons.lookup.",
"tags": [
"tags": [
"coupons.coupon"
"coupons.coupon"
],
],
@@ -328,7 +328,7 @@
@@ -328,7 +328,7 @@
"coupons.coupon.lookup"
"coupons.coupon.lookup"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "coupons-lookup",
"x-openvibe-quota-class": "coupons-lookup",
"security": [
"security": [
@@ -376,7 +376,7 @@
@@ -376,7 +376,7 @@
"get": {
"get": {
"operationId": "get_api_v1_merchants_id_coupons",
"operationId": "get_api_v1_merchants_id_coupons",
"summary": "Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code.",
"summary": "Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code.",
- "description": "**coupons.coupon.lookup** (first-party): Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code. Public data only, the same response for every caller; anonymous callers may use the routes with tighter rate limits. The charter's coupons.lookup.",
+ "description": "**coupons.coupon.lookup** (public): Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code. Public data only, the same response for every caller; anonymous callers may use the routes with tighter rate limits. The charter's coupons.lookup.",
"tags": [
"tags": [
"coupons.coupon"
"coupons.coupon"
],
],
@@ -384,7 +384,7 @@
@@ -384,7 +384,7 @@
"coupons.coupon.lookup"
"coupons.coupon.lookup"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "coupons-lookup",
"x-openvibe-quota-class": "coupons-lookup",
"security": [
"security": [
@@ -564,7 +564,7 @@
@@ -564,7 +564,7 @@
"get": {
"get": {
"operationId": "get_api_v1_merchants_resolve_host",
"operationId": "get_api_v1_merchants_resolve_host",
"summary": "Resolve a hostname to an active merchant (normalized host, eTLD+1 from a bundled public-suffix subset, subdomain rules; path rules never match host-only lookups).",
"summary": "Resolve a hostname to an active merchant (normalized host, eTLD+1 from a bundled public-suffix subset, subdomain rules; path rules never match host-only lookups).",
- "description": "**coupons.merchant.resolve** (first-party): Resolve a hostname to an active merchant (normalized host, eTLD+1 from a bundled public-suffix subset, subdomain rules; path rules never match host-only lookups). Public data only; anonymous callers may use the route with tighter rate limits.",
+ "description": "**coupons.merchant.resolve** (public): Resolve a hostname to an active merchant (normalized host, eTLD+1 from a bundled public-suffix subset, subdomain rules; path rules never match host-only lookups). Public data only; anonymous callers may use the route with tighter rate limits.",
"tags": [
"tags": [
"coupons.merchant"
"coupons.merchant"
],
],
@@ -572,7 +572,7 @@
@@ -572,7 +572,7 @@
"coupons.merchant.resolve"
"coupons.merchant.resolve"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "coupons-lookup",
"x-openvibe-quota-class": "coupons-lookup",
"security": [
"security": [
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Deals API",
"title": "OpenVibe.Deals API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -135,7 +135,7 @@
@@ -135,7 +135,7 @@
"post": {
"post": {
"operationId": "post_api_v1_offers",
"operationId": "post_api_v1_offers",
"summary": "Submit a deal for the acting person (X-OV-Subject): a link, title and what the person sees now (price with its currency, shipping, condition, availability — each optional, never defaulted).",
"summary": "Submit a deal for the acting person (X-OV-Subject): a link, title and what the person sees now (price with its currency, shipping, condition, availability — each optional, never defaulted).",
- "description": "**deals.offer.submit** (first-party): Submit a deal for the acting person (X-OV-Subject): a link, title and what the person sees now (price with its currency, shipping, condition, availability — each optional, never defaulted). The first observation is recorded with its time. A link already posted answers 409 offer.duplicate with the existing offer. With X-OV-Origin: ai the text is AI-assisted: disclosed and noindex until a person reviews it. Rate-limited per person.",
+ "description": "**deals.offer.submit** (public): Submit a deal for the acting person (X-OV-Subject): a link, title and what the person sees now (price with its currency, shipping, condition, availability — each optional, never defaulted). The first observation is recorded with its time. A link already posted answers 409 offer.duplicate with the existing offer. With X-OV-Origin: ai the text is AI-assisted: disclosed and noindex until a person reviews it. Rate-limited per person.",
"tags": [
"tags": [
"deals.offer"
"deals.offer"
],
],
@@ -143,7 +143,7 @@
@@ -143,7 +143,7 @@
"deals.offer.submit"
"deals.offer.submit"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "deals-write",
"x-openvibe-quota-class": "deals-write",
"security": [
"security": [
@@ -191,7 +191,7 @@
@@ -191,7 +191,7 @@
"patch": {
"patch": {
"operationId": "patch_api_v1_offers_id",
"operationId": "patch_api_v1_offers_id",
"summary": "Edit an offer the acting person submitted (title, description, category, stated expiry, product link), or record a new observation of any active offer for the acting person (POST …/observations: price",
"summary": "Edit an offer the acting person submitted (title, description, category, stated expiry, product link), or record a new observation of any active offer for the acting person (POST …/observations: price",
- "description": "**deals.offer.update** (first-party): Edit an offer the acting person submitted (title, description, category, stated expiry, product link), or record a new observation of any active offer for the acting person (POST …/observations: price with currency, shipping, condition, availability, with the time it was observed). Prices are never edited in place; each observation is a new row. Services may state observed_at (never in the future).",
+ "description": "**deals.offer.update** (public): Edit an offer the acting person submitted (title, description, category, stated expiry, product link), or record a new observation of any active offer for the acting person (POST …/observations: price with currency, shipping, condition, availability, with the time it was observed). Prices are never edited in place; each observation is a new row. Services may state observed_at (never in the future).",
"tags": [
"tags": [
"deals.offer"
"deals.offer"
],
],
@@ -199,7 +199,7 @@
@@ -199,7 +199,7 @@
"deals.offer.update"
"deals.offer.update"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "deals-write",
"x-openvibe-quota-class": "deals-write",
"security": [
"security": [
@@ -455,7 +455,7 @@
@@ -455,7 +455,7 @@
"post": {
"post": {
"operationId": "post_api_v1_offers_id_flags",
"operationId": "post_api_v1_offers_id_flags",
"summary": "Report a problem with an offer for the acting person (expired, price_wrong, duplicate, spam, other).",
"summary": "Report a problem with an offer for the acting person (expired, price_wrong, duplicate, spam, other).",
- "description": "**deals.flag.create** (first-party): Report a problem with an offer for the acting person (expired, price_wrong, duplicate, spam, other). One open report per person and offer; rate-limited. Flags never change an offer by themselves.",
+ "description": "**deals.flag.create** (public): Report a problem with an offer for the acting person (expired, price_wrong, duplicate, spam, other). One open report per person and offer; rate-limited. Flags never change an offer by themselves.",
"tags": [
"tags": [
"deals.flag"
"deals.flag"
],
],
@@ -463,7 +463,7 @@
@@ -463,7 +463,7 @@
"deals.flag.create"
"deals.flag.create"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "deals-write",
"x-openvibe-quota-class": "deals-write",
"security": [
"security": [
@@ -587,7 +587,7 @@
@@ -587,7 +587,7 @@
"post": {
"post": {
"operationId": "post_api_v1_offers_id_observations",
"operationId": "post_api_v1_offers_id_observations",
"summary": "Edit an offer the acting person submitted (title, description, category, stated expiry, product link), or record a new observation of any active offer for the acting person (POST …/observations: price",
"summary": "Edit an offer the acting person submitted (title, description, category, stated expiry, product link), or record a new observation of any active offer for the acting person (POST …/observations: price",
- "description": "**deals.offer.update** (first-party): Edit an offer the acting person submitted (title, description, category, stated expiry, product link), or record a new observation of any active offer for the acting person (POST …/observations: price with currency, shipping, condition, availability, with the time it was observed). Prices are never edited in place; each observation is a new row. Services may state observed_at (never in the future).",
+ "description": "**deals.offer.update** (public): Edit an offer the acting person submitted (title, description, category, stated expiry, product link), or record a new observation of any active offer for the acting person (POST …/observations: price with currency, shipping, condition, availability, with the time it was observed). Prices are never edited in place; each observation is a new row. Services may state observed_at (never in the future).",
"tags": [
"tags": [
"deals.offer"
"deals.offer"
],
],
@@ -595,7 +595,7 @@
@@ -595,7 +595,7 @@
"deals.offer.update"
"deals.offer.update"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "deals-write",
"x-openvibe-quota-class": "deals-write",
"security": [
"security": [
@@ -785,7 +785,7 @@
@@ -785,7 +785,7 @@
"delete": {
"delete": {
"operationId": "delete_api_v1_offers_id_vote",
"operationId": "delete_api_v1_offers_id_vote",
"summary": "Remove the acting person's vote on an offer (kept as a removed row for history).",
"summary": "Remove the acting person's vote on an offer (kept as a removed row for history).",
- "description": "**deals.vote.remove** (first-party): Remove the acting person's vote on an offer (kept as a removed row for history). Same abuse controls as deals.vote.set.",
+ "description": "**deals.vote.remove** (public): Remove the acting person's vote on an offer (kept as a removed row for history). Same abuse controls as deals.vote.set.",
"tags": [
"tags": [
"deals.vote"
"deals.vote"
],
],
@@ -793,7 +793,7 @@
@@ -793,7 +793,7 @@
"deals.vote.remove"
"deals.vote.remove"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "deals-vote",
"x-openvibe-quota-class": "deals-vote",
"security": [
"security": [
@@ -839,7 +839,7 @@
@@ -839,7 +839,7 @@
"put": {
"put": {
"operationId": "put_api_v1_offers_id_vote",
"operationId": "put_api_v1_offers_id_vote",
"summary": "Set the acting person's vote (+1 / -1) on an offer.",
"summary": "Set the acting person's vote (+1 / -1) on an offer.",
- "description": "**deals.vote.set** (first-party): Set the acting person's vote (+1 / -1) on an offer. Server-authoritative: weight and hotness are computed by Deals (hot@1), never taken from the request. Rate-limited per person, per IP hash and per offer; no votes on one's own offer; vote-ring detection flags moderators.",
+ "description": "**deals.vote.set** (public): Set the acting person's vote (+1 / -1) on an offer. Server-authoritative: weight and hotness are computed by Deals (hot@1), never taken from the request. Rate-limited per person, per IP hash and per offer; no votes on one's own offer; vote-ring detection flags moderators.",
"tags": [
"tags": [
"deals.vote"
"deals.vote"
],
],
@@ -847,7 +847,7 @@
@@ -847,7 +847,7 @@
"deals.vote.set"
"deals.vote.set"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "deals-vote",
"x-openvibe-quota-class": "deals-vote",
"security": [
"security": [
@@ -961,7 +961,7 @@
@@ -961,7 +961,7 @@
"get": {
"get": {
"operationId": "get_api_v1_watches",
"operationId": "get_api_v1_watches",
"summary": "List the acting person's watches and saved searches with their notification counts.",
"summary": "List the acting person's watches and saved searches with their notification counts.",
- "description": "**deals.watch.read** (first-party): List the acting person's watches and saved searches with their notification counts.",
+ "description": "**deals.watch.read** (public): List the acting person's watches and saved searches with their notification counts.",
"tags": [
"tags": [
"deals.watch"
"deals.watch"
],
],
@@ -969,7 +969,7 @@
@@ -969,7 +969,7 @@
"deals.watch.read"
"deals.watch.read"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "deals-read",
"x-openvibe-quota-class": "deals-read",
"security": [
"security": [
@@ -1005,7 +1005,7 @@
@@ -1005,7 +1005,7 @@
"post": {
"post": {
"operationId": "post_api_v1_watches",
"operationId": "post_api_v1_watches",
"summary": "Create a keyword, product or price-below watch, or a saved search (never notifies), for the acting person.",
"summary": "Create a keyword, product or price-below watch, or a saved search (never notifies), for the acting person.",
- "description": "**deals.watch.create** (first-party): Create a keyword, product or price-below watch, or a saved search (never notifies), for the acting person. A watch notifies at most once per observation (deals.watch.matched, internal; Deals never emails).",
+ "description": "**deals.watch.create** (public): Create a keyword, product or price-below watch, or a saved search (never notifies), for the acting person. A watch notifies at most once per observation (deals.watch.matched, internal; Deals never emails).",
"tags": [
"tags": [
"deals.watch"
"deals.watch"
],
],
@@ -1013,7 +1013,7 @@
@@ -1013,7 +1013,7 @@
"deals.watch.create"
"deals.watch.create"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "deals-write",
"x-openvibe-quota-class": "deals-write",
"security": [
"security": [
@@ -1061,7 +1061,7 @@
@@ -1061,7 +1061,7 @@
"delete": {
"delete": {
"operationId": "delete_api_v1_watches_id",
"operationId": "delete_api_v1_watches_id",
"summary": "Delete one of the acting person's watches or saved searches.",
"summary": "Delete one of the acting person's watches or saved searches.",
- "description": "**deals.watch.delete** (first-party): Delete one of the acting person's watches or saved searches.",
+ "description": "**deals.watch.delete** (public): Delete one of the acting person's watches or saved searches.",
"tags": [
"tags": [
"deals.watch"
"deals.watch"
],
],
@@ -1069,7 +1069,7 @@
@@ -1069,7 +1069,7 @@
"deals.watch.delete"
"deals.watch.delete"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "deals-write",
"x-openvibe-quota-class": "deals-write",
"security": [
"security": [
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Events API",
"title": "OpenVibe.Events API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Food API",
"title": "OpenVibe.Food API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Games API",
"title": "OpenVibe.Games API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Host API",
"title": "OpenVibe.Host API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Inventory API",
"title": "OpenVibe.Inventory API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Live API",
"title": "OpenVibe.Live API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.MediaHub API",
"title": "OpenVibe.MediaHub API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Media API",
"title": "OpenVibe.Media API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Network API",
"title": "OpenVibe.Network API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.News API",
"title": "OpenVibe.News API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenRestream API",
"title": "OpenRestream API",
- "version": "0.207.0",
- "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Play API",
"title": "OpenVibe.Play API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Quest API",
"title": "OpenVibe.Quest API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Reviews API",
"title": "OpenVibe.Reviews API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Run API",
"title": "OpenVibe.Run API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Search API",
"title": "OpenVibe.Search API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Services API",
"title": "OpenVibe.Services API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Sources API",
"title": "OpenVibe.Sources API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Space API",
"title": "OpenVibe.Space API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Tips API",
"title": "OpenVibe.Tips API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Tools API",
"title": "OpenVibe.Tools API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Trade API",
"title": "OpenVibe.Trade API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -20,7 +20,7 @@
@@ -20,7 +20,7 @@
"get": {
"get": {
"operationId": "get_api_v1_alerts",
"operationId": "get_api_v1_alerts",
"summary": "Read the alert rules and recent deliveries of the person in X-OV-Subject.",
"summary": "Read the alert rules and recent deliveries of the person in X-OV-Subject.",
- "description": "**trade.alert.read** (first-party): Read the alert rules and recent deliveries of the person in X-OV-Subject.",
+ "description": "**trade.alert.read** (public): Read the alert rules and recent deliveries of the person in X-OV-Subject.",
"tags": [
"tags": [
"trade.alert"
"trade.alert"
],
],
@@ -28,7 +28,7 @@
@@ -28,7 +28,7 @@
"trade.alert.read"
"trade.alert.read"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "trade-read",
"x-openvibe-quota-class": "trade-read",
"security": [
"security": [
@@ -64,7 +64,7 @@
@@ -64,7 +64,7 @@
"post": {
"post": {
"operationId": "post_api_v1_alerts",
"operationId": "post_api_v1_alerts",
"summary": "Create an alert rule for the person in X-OV-Subject: threshold (a crossing of a metric in a unit), filing_type or new_document.",
"summary": "Create an alert rule for the person in X-OV-Subject: threshold (a crossing of a metric in a unit), filing_type or new_document.",
- "description": "**trade.alert.create** (first-party): Create an alert rule for the person in X-OV-Subject: threshold (a crossing of a metric in a unit), filing_type or new_document. Deliveries are unique per (rule, triggering observation or document) and are sent as trade.alert.triggered (visibility subject); no email.",
+ "description": "**trade.alert.create** (public): Create an alert rule for the person in X-OV-Subject: threshold (a crossing of a metric in a unit), filing_type or new_document. Deliveries are unique per (rule, triggering observation or document) and are sent as trade.alert.triggered (visibility subject); no email.",
"tags": [
"tags": [
"trade.alert"
"trade.alert"
],
],
@@ -72,7 +72,7 @@
@@ -72,7 +72,7 @@
"trade.alert.create"
"trade.alert.create"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "trade-write",
"x-openvibe-quota-class": "trade-write",
"security": [
"security": [
@@ -120,7 +120,7 @@
@@ -120,7 +120,7 @@
"delete": {
"delete": {
"operationId": "delete_api_v1_alerts_id",
"operationId": "delete_api_v1_alerts_id",
"summary": "Delete an alert rule of the person in X-OV-Subject.",
"summary": "Delete an alert rule of the person in X-OV-Subject.",
- "description": "**trade.alert.delete** (first-party): Delete an alert rule of the person in X-OV-Subject.",
+ "description": "**trade.alert.delete** (public): Delete an alert rule of the person in X-OV-Subject.",
"tags": [
"tags": [
"trade.alert"
"trade.alert"
],
],
@@ -128,7 +128,7 @@
@@ -128,7 +128,7 @@
"trade.alert.delete"
"trade.alert.delete"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "trade-write",
"x-openvibe-quota-class": "trade-write",
"security": [
"security": [
@@ -176,7 +176,7 @@
@@ -176,7 +176,7 @@
"get": {
"get": {
"operationId": "get_api_v1_alerts_deliveries",
"operationId": "get_api_v1_alerts_deliveries",
"summary": "Read the alert rules and recent deliveries of the person in X-OV-Subject.",
"summary": "Read the alert rules and recent deliveries of the person in X-OV-Subject.",
- "description": "**trade.alert.read** (first-party): Read the alert rules and recent deliveries of the person in X-OV-Subject.",
+ "description": "**trade.alert.read** (public): Read the alert rules and recent deliveries of the person in X-OV-Subject.",
"tags": [
"tags": [
"trade.alert"
"trade.alert"
],
],
@@ -184,7 +184,7 @@
@@ -184,7 +184,7 @@
"trade.alert.read"
"trade.alert.read"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "trade-read",
"x-openvibe-quota-class": "trade-read",
"security": [
"security": [
@@ -586,7 +586,7 @@
@@ -586,7 +586,7 @@
"get": {
"get": {
"operationId": "get_api_v1_instruments_resolve",
"operationId": "get_api_v1_instruments_resolve",
"summary": "Resolve a ticker, SEC CIK or exact company name to an instrument, deterministically (CIK, then ticker, then exact normalised name; several name matches are \"ambiguous\" and none is chosen).",
"summary": "Resolve a ticker, SEC CIK or exact company name to an instrument, deterministically (CIK, then ticker, then exact normalised name; several name matches are \"ambiguous\" and none is chosen).",
- "description": "**trade.instrument.resolve** (first-party): Resolve a ticker, SEC CIK or exact company name to an instrument, deterministically (CIK, then ticker, then exact normalised name; several name matches are \"ambiguous\" and none is chosen). Browsers and anonymous readers need no capability.",
+ "description": "**trade.instrument.resolve** (public): Resolve a ticker, SEC CIK or exact company name to an instrument, deterministically (CIK, then ticker, then exact normalised name; several name matches are \"ambiguous\" and none is chosen). Browsers and anonymous readers need no capability.",
"tags": [
"tags": [
"trade.instrument"
"trade.instrument"
],
],
@@ -594,7 +594,7 @@
@@ -594,7 +594,7 @@
"trade.instrument.resolve"
"trade.instrument.resolve"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "trade-read",
"x-openvibe-quota-class": "trade-read",
"security": [
"security": [
@@ -688,7 +688,7 @@
@@ -688,7 +688,7 @@
"get": {
"get": {
"operationId": "get_api_v1_watchlists",
"operationId": "get_api_v1_watchlists",
"summary": "Read the watchlists of the person in X-OV-Subject (never anyone else's: another person's watchlist is 404).",
"summary": "Read the watchlists of the person in X-OV-Subject (never anyone else's: another person's watchlist is 404).",
- "description": "**trade.watchlist.read** (first-party): Read the watchlists of the person in X-OV-Subject (never anyone else's: another person's watchlist is 404).",
+ "description": "**trade.watchlist.read** (public): Read the watchlists of the person in X-OV-Subject (never anyone else's: another person's watchlist is 404).",
"tags": [
"tags": [
"trade.watchlist"
"trade.watchlist"
],
],
@@ -696,7 +696,7 @@
@@ -696,7 +696,7 @@
"trade.watchlist.read"
"trade.watchlist.read"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "trade-read",
"x-openvibe-quota-class": "trade-read",
"security": [
"security": [
@@ -732,7 +732,7 @@
@@ -732,7 +732,7 @@
"post": {
"post": {
"operationId": "post_api_v1_watchlists",
"operationId": "post_api_v1_watchlists",
"summary": "Create a private watchlist for the person in X-OV-Subject.",
"summary": "Create a private watchlist for the person in X-OV-Subject.",
- "description": "**trade.watchlist.create** (first-party): Create a private watchlist for the person in X-OV-Subject.",
+ "description": "**trade.watchlist.create** (public): Create a private watchlist for the person in X-OV-Subject.",
"tags": [
"tags": [
"trade.watchlist"
"trade.watchlist"
],
],
@@ -740,7 +740,7 @@
@@ -740,7 +740,7 @@
"trade.watchlist.create"
"trade.watchlist.create"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "trade-write",
"x-openvibe-quota-class": "trade-write",
"security": [
"security": [
@@ -788,7 +788,7 @@
@@ -788,7 +788,7 @@
"delete": {
"delete": {
"operationId": "delete_api_v1_watchlists_id",
"operationId": "delete_api_v1_watchlists_id",
"summary": "Delete a watchlist of the person in X-OV-Subject.",
"summary": "Delete a watchlist of the person in X-OV-Subject.",
- "description": "**trade.watchlist.delete** (first-party): Delete a watchlist of the person in X-OV-Subject.",
+ "description": "**trade.watchlist.delete** (public): Delete a watchlist of the person in X-OV-Subject.",
"tags": [
"tags": [
"trade.watchlist"
"trade.watchlist"
],
],
@@ -796,7 +796,7 @@
@@ -796,7 +796,7 @@
"trade.watchlist.delete"
"trade.watchlist.delete"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "trade-write",
"x-openvibe-quota-class": "trade-write",
"security": [
"security": [
@@ -842,7 +842,7 @@
@@ -842,7 +842,7 @@
"get": {
"get": {
"operationId": "get_api_v1_watchlists_id",
"operationId": "get_api_v1_watchlists_id",
"summary": "Read the watchlists of the person in X-OV-Subject (never anyone else's: another person's watchlist is 404).",
"summary": "Read the watchlists of the person in X-OV-Subject (never anyone else's: another person's watchlist is 404).",
- "description": "**trade.watchlist.read** (first-party): Read the watchlists of the person in X-OV-Subject (never anyone else's: another person's watchlist is 404).",
+ "description": "**trade.watchlist.read** (public): Read the watchlists of the person in X-OV-Subject (never anyone else's: another person's watchlist is 404).",
"tags": [
"tags": [
"trade.watchlist"
"trade.watchlist"
],
],
@@ -850,7 +850,7 @@
@@ -850,7 +850,7 @@
"trade.watchlist.read"
"trade.watchlist.read"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "trade-read",
"x-openvibe-quota-class": "trade-read",
"security": [
"security": [
@@ -896,7 +896,7 @@
@@ -896,7 +896,7 @@
"patch": {
"patch": {
"operationId": "patch_api_v1_watchlists_id",
"operationId": "patch_api_v1_watchlists_id",
"summary": "Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.",
"summary": "Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.",
- "description": "**trade.watchlist.update** (first-party): Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.",
+ "description": "**trade.watchlist.update** (public): Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.",
"tags": [
"tags": [
"trade.watchlist"
"trade.watchlist"
],
],
@@ -904,7 +904,7 @@
@@ -904,7 +904,7 @@
"trade.watchlist.update"
"trade.watchlist.update"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "trade-write",
"x-openvibe-quota-class": "trade-write",
"security": [
"security": [
@@ -962,7 +962,7 @@
@@ -962,7 +962,7 @@
"delete": {
"delete": {
"operationId": "delete_api_v1_watchlists_id_items_symbol",
"operationId": "delete_api_v1_watchlists_id_items_symbol",
"summary": "Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.",
"summary": "Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.",
- "description": "**trade.watchlist.update** (first-party): Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.",
+ "description": "**trade.watchlist.update** (public): Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.",
"tags": [
"tags": [
"trade.watchlist"
"trade.watchlist"
],
],
@@ -970,7 +970,7 @@
@@ -970,7 +970,7 @@
"trade.watchlist.update"
"trade.watchlist.update"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "trade-write",
"x-openvibe-quota-class": "trade-write",
"security": [
"security": [
@@ -1027,7 +1027,7 @@
@@ -1027,7 +1027,7 @@
"put": {
"put": {
"operationId": "put_api_v1_watchlists_id_items_symbol",
"operationId": "put_api_v1_watchlists_id_items_symbol",
"summary": "Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.",
"summary": "Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.",
- "description": "**trade.watchlist.update** (first-party): Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.",
+ "description": "**trade.watchlist.update** (public): Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.",
"tags": [
"tags": [
"trade.watchlist"
"trade.watchlist"
],
],
@@ -1035,7 +1035,7 @@
@@ -1035,7 +1035,7 @@
"trade.watchlist.update"
"trade.watchlist.update"
],
],
"x-openvibe-visibility": [
"x-openvibe-visibility": [
- "first-party"
+ "public"
],
],
"x-openvibe-quota-class": "trade-write",
"x-openvibe-quota-class": "trade-write",
"security": [
"security": [
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.VIP API",
"title": "OpenVibe.VIP API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Watch API",
"title": "OpenVibe.Watch API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Wiki API",
"title": "OpenVibe.Wiki API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Work API",
"title": "OpenVibe.Work API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Zone API",
"title": "OpenVibe.Zone API",
- "version": "0.207.0",
- "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.207.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.208.0",
+ "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.208.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,7 +3,7 @@
@@ -3,7 +3,7 @@
"version": "1.0",
"version": "1.0",
"owner": "coupons",
"owner": "coupons",
"status": "active",
"status": "active",
- "visibility": "first-party",
+ "visibility": "public",
"description": "Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code. Public data only, the same response for every caller; anonymous callers may use the routes with tighter rate limits. The charter's coupons.lookup.",
"description": "Read a merchant's active codes (status, confidence, report aggregates, restrictions, expiry or unknown, evidence) or one code. Public data only, the same response for every caller; anonymous callers may use the routes with tighter rate limits. The charter's coupons.lookup.",
"permissions": [
"permissions": [
"coupons:read"
"coupons:read"
@@ -3,7 +3,8 @@
@@ -3,7 +3,8 @@
"version": "1.0",
"version": "1.0",
"owner": "coupons",
"owner": "coupons",
"status": "active",
"status": "active",
- "visibility": "first-party",
+ "visibility": "public",
+ "sensitive": true,
"description": "Submit a coupon code for a merchant (by merchant id, host or URL) on behalf of a person (X-OV-Subject) or as AI output (X-OV-Origin: ai, held for staff review). The code starts with status unknown; a status, confidence or 'verified' field is refused. A site no merchant covers becomes a pending merchant for staff review. The charter's coupons.submit.",
"description": "Submit a coupon code for a merchant (by merchant id, host or URL) on behalf of a person (X-OV-Subject) or as AI output (X-OV-Origin: ai, held for staff review). The code starts with status unknown; a status, confidence or 'verified' field is refused. A site no merchant covers becomes a pending merchant for staff review. The charter's coupons.submit.",
"permissions": [
"permissions": [
"coupons:write"
"coupons:write"
@@ -3,7 +3,7 @@
@@ -3,7 +3,7 @@
"version": "1.0",
"version": "1.0",
"owner": "coupons",
"owner": "coupons",
"status": "active",
"status": "active",
- "visibility": "first-party",
+ "visibility": "public",
"description": "Resolve a hostname to an active merchant (normalized host, eTLD+1 from a bundled public-suffix subset, subdomain rules; path rules never match host-only lookups). Public data only; anonymous callers may use the route with tighter rate limits.",
"description": "Resolve a hostname to an active merchant (normalized host, eTLD+1 from a bundled public-suffix subset, subdomain rules; path rules never match host-only lookups). Public data only; anonymous callers may use the route with tighter rate limits.",
"permissions": [
"permissions": [
"coupons:read"
"coupons:read"
@@ -3,7 +3,7 @@
@@ -3,7 +3,7 @@
"version": "1.0",
"version": "1.0",
"owner": "coupons",
"owner": "coupons",
"status": "active",
"status": "active",
- "visibility": "first-party",
+ "visibility": "public",
"description": "Report that a code worked or failed, on behalf of a person (X-OV-Subject). One report per person, code and UTC day; only the latest per person counts; rate-limited per person; AI output (X-OV-Origin: ai) is refused. The response carries aggregates only, never a reporter. The charter's coupons.report.",
"description": "Report that a code worked or failed, on behalf of a person (X-OV-Subject). One report per person, code and UTC day; only the latest per person counts; rate-limited per person; AI output (X-OV-Origin: ai) is refused. The response carries aggregates only, never a reporter. The charter's coupons.report.",
"permissions": [
"permissions": [
"coupons:report"
"coupons:report"
@@ -3,7 +3,7 @@
@@ -3,7 +3,7 @@
"version": "1.0",
"version": "1.0",
"owner": "deals",
"owner": "deals",
"status": "active",
"status": "active",
- "visibility": "first-party",
+ "visibility": "public",
"description": "Report a problem with an offer for the acting person (expired, price_wrong, duplicate, spam, other). One open report per person and offer; rate-limited. Flags never change an offer by themselves.",
"description": "Report a problem with an offer for the acting person (expired, price_wrong, duplicate, spam, other). One open report per person and offer; rate-limited. Flags never change an offer by themselves.",
"permissions": [
"permissions": [
"deals:write"
"deals:write"
@@ -3,7 +3,8 @@
@@ -3,7 +3,8 @@
"version": "1.0",
"version": "1.0",
"owner": "deals",
"owner": "deals",
"status": "active",
"status": "active",
- "visibility": "first-party",
+ "visibility": "public",
+ "sensitive": true,
"description": "Submit a deal for the acting person (X-OV-Subject): a link, title and what the person sees now (price with its currency, shipping, condition, availability — each optional, never defaulted). The first observation is recorded with its time. A link already posted answers 409 offer.duplicate with the existing offer. With X-OV-Origin: ai the text is AI-assisted: disclosed and noindex until a person reviews it. Rate-limited per person.",
"description": "Submit a deal for the acting person (X-OV-Subject): a link, title and what the person sees now (price with its currency, shipping, condition, availability — each optional, never defaulted). The first observation is recorded with its time. A link already posted answers 409 offer.duplicate with the existing offer. With X-OV-Origin: ai the text is AI-assisted: disclosed and noindex until a person reviews it. Rate-limited per person.",
"permissions": [
"permissions": [
"deals:write"
"deals:write"
@@ -3,7 +3,7 @@
@@ -3,7 +3,7 @@
"version": "1.0",
"version": "1.0",
"owner": "deals",
"owner": "deals",
"status": "active",
"status": "active",
- "visibility": "first-party",
+ "visibility": "public",
"description": "Edit an offer the acting person submitted (title, description, category, stated expiry, product link), or record a new observation of any active offer for the acting person (POST …/observations: price with currency, shipping, condition, availability, with the time it was observed). Prices are never edited in place; each observation is a new row. Services may state observed_at (never in the future).",
"description": "Edit an offer the acting person submitted (title, description, category, stated expiry, product link), or record a new observation of any active offer for the acting person (POST …/observations: price with currency, shipping, condition, availability, with the time it was observed). Prices are never edited in place; each observation is a new row. Services may state observed_at (never in the future).",
"permissions": [
"permissions": [
"deals:write"
"deals:write"
@@ -3,7 +3,7 @@
@@ -3,7 +3,7 @@
"version": "1.0",
"version": "1.0",
"owner": "deals",
"owner": "deals",
"status": "active",
"status": "active",
- "visibility": "first-party",
+ "visibility": "public",
"description": "Remove the acting person's vote on an offer (kept as a removed row for history). Same abuse controls as deals.vote.set.",
"description": "Remove the acting person's vote on an offer (kept as a removed row for history). Same abuse controls as deals.vote.set.",
"permissions": [
"permissions": [
"deals:vote"
"deals:vote"
@@ -3,7 +3,8 @@
@@ -3,7 +3,8 @@
"version": "1.0",
"version": "1.0",
"owner": "deals",
"owner": "deals",
"status": "active",
"status": "active",
- "visibility": "first-party",
+ "visibility": "public",
+ "sensitive": true,
"description": "Set the acting person's vote (+1 / -1) on an offer. Server-authoritative: weight and hotness are computed by Deals (hot@1), never taken from the request. Rate-limited per person, per IP hash and per offer; no votes on one's own offer; vote-ring detection flags moderators.",
"description": "Set the acting person's vote (+1 / -1) on an offer. Server-authoritative: weight and hotness are computed by Deals (hot@1), never taken from the request. Rate-limited per person, per IP hash and per offer; no votes on one's own offer; vote-ring detection flags moderators.",
"permissions": [
"permissions": [
"deals:vote"
"deals:vote"
@@ -3,7 +3,7 @@
@@ -3,7 +3,7 @@
"version": "1.0",
"version": "1.0",
"owner": "deals",
"owner": "deals",
"status": "active",
"status": "active",
- "visibility": "first-party",
+ "visibility": "public",
"description": "Create a keyword, product or price-below watch, or a saved search (never notifies), for the acting person. A watch notifies at most once per observation (deals.watch.matched, internal; Deals never emails).",
"description": "Create a keyword, product or price-below watch, or a saved search (never notifies), for the acting person. A watch notifies at most once per observation (deals.watch.matched, internal; Deals never emails).",
"permissions": [
"permissions": [
"deals:watch"
"deals:watch"
@@ -3,7 +3,7 @@
@@ -3,7 +3,7 @@
"version": "1.0",
"version": "1.0",
"owner": "deals",
"owner": "deals",
"status": "active",
"status": "active",
- "visibility": "first-party",
+ "visibility": "public",
"description": "Delete one of the acting person's watches or saved searches.",
"description": "Delete one of the acting person's watches or saved searches.",
"permissions": [
"permissions": [
"deals:watch"
"deals:watch"
@@ -3,7 +3,7 @@
@@ -3,7 +3,7 @@
"version": "1.0",
"version": "1.0",
"owner": "deals",
"owner": "deals",
"status": "active",
"status": "active",
- "visibility": "first-party",
+ "visibility": "public",
"description": "List the acting person's watches and saved searches with their notification counts.",
"description": "List the acting person's watches and saved searches with their notification counts.",
"permissions": [
"permissions": [
"deals:watch"
"deals:watch"
@@ -3,7 +3,7 @@
@@ -3,7 +3,7 @@
"version": "1.0",
"version": "1.0",
"owner": "trade",
"owner": "trade",
"status": "active",
"status": "active",
- "visibility": "first-party",
+ "visibility": "public",
"description": "Create an alert rule for the person in X-OV-Subject: threshold (a crossing of a metric in a unit), filing_type or new_document. Deliveries are unique per (rule, triggering observation or document) and are sent as trade.alert.triggered (visibility subject); no email.",
"description": "Create an alert rule for the person in X-OV-Subject: threshold (a crossing of a metric in a unit), filing_type or new_document. Deliveries are unique per (rule, triggering observation or document) and are sent as trade.alert.triggered (visibility subject); no email.",
"permissions": [
"permissions": [
"trade:write"
"trade:write"
@@ -3,7 +3,7 @@
@@ -3,7 +3,7 @@
"version": "1.0",
"version": "1.0",
"owner": "trade",
"owner": "trade",
"status": "active",
"status": "active",
- "visibility": "first-party",
+ "visibility": "public",
"description": "Delete an alert rule of the person in X-OV-Subject.",
"description": "Delete an alert rule of the person in X-OV-Subject.",
"permissions": [
"permissions": [
"trade:write"
"trade:write"
@@ -3,7 +3,7 @@
@@ -3,7 +3,7 @@
"version": "1.0",
"version": "1.0",
"owner": "trade",
"owner": "trade",
"status": "active",
"status": "active",
- "visibility": "first-party",
+ "visibility": "public",
"description": "Read the alert rules and recent deliveries of the person in X-OV-Subject.",
"description": "Read the alert rules and recent deliveries of the person in X-OV-Subject.",
"permissions": [
"permissions": [
"trade:read"
"trade:read"
@@ -3,7 +3,7 @@
@@ -3,7 +3,7 @@
"version": "1.0",
"version": "1.0",
"owner": "trade",
"owner": "trade",
"status": "active",
"status": "active",
- "visibility": "first-party",
+ "visibility": "public",
"description": "Resolve a ticker, SEC CIK or exact company name to an instrument, deterministically (CIK, then ticker, then exact normalised name; several name matches are \"ambiguous\" and none is chosen). Browsers and anonymous readers need no capability.",
"description": "Resolve a ticker, SEC CIK or exact company name to an instrument, deterministically (CIK, then ticker, then exact normalised name; several name matches are \"ambiguous\" and none is chosen). Browsers and anonymous readers need no capability.",
"permissions": [
"permissions": [
"trade:read"
"trade:read"
@@ -3,7 +3,7 @@
@@ -3,7 +3,7 @@
"version": "1.0",
"version": "1.0",
"owner": "trade",
"owner": "trade",
"status": "active",
"status": "active",
- "visibility": "first-party",
+ "visibility": "public",
"description": "Create a private watchlist for the person in X-OV-Subject.",
"description": "Create a private watchlist for the person in X-OV-Subject.",
"permissions": [
"permissions": [
"trade:write"
"trade:write"
@@ -3,7 +3,7 @@
@@ -3,7 +3,7 @@
"version": "1.0",
"version": "1.0",
"owner": "trade",
"owner": "trade",
"status": "active",
"status": "active",
- "visibility": "first-party",
+ "visibility": "public",
"description": "Delete a watchlist of the person in X-OV-Subject.",
"description": "Delete a watchlist of the person in X-OV-Subject.",
"permissions": [
"permissions": [
"trade:write"
"trade:write"
@@ -3,7 +3,7 @@
@@ -3,7 +3,7 @@
"version": "1.0",
"version": "1.0",
"owner": "trade",
"owner": "trade",
"status": "active",
"status": "active",
- "visibility": "first-party",
+ "visibility": "public",
"description": "Read the watchlists of the person in X-OV-Subject (never anyone else's: another person's watchlist is 404).",
"description": "Read the watchlists of the person in X-OV-Subject (never anyone else's: another person's watchlist is 404).",
"permissions": [
"permissions": [
"trade:read"
"trade:read"
@@ -3,7 +3,7 @@
@@ -3,7 +3,7 @@
"version": "1.0",
"version": "1.0",
"owner": "trade",
"owner": "trade",
"status": "active",
"status": "active",
- "visibility": "first-party",
+ "visibility": "public",
"description": "Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.",
"description": "Rename a watchlist of the person in X-OV-Subject, or add and remove instruments on it.",
"permissions": [
"permissions": [
"trade:write"
"trade:write"
@@ -1,12 +1,12 @@
@@ -1,12 +1,12 @@
{
{
"name": "openvibe-contracts",
"name": "openvibe-contracts",
- "version": "0.207.0",
+ "version": "0.208.0",
"lockfileVersion": 3,
"lockfileVersion": 3,
"requires": true,
"requires": true,
"packages": {
"packages": {
"": {
"": {
"name": "openvibe-contracts",
"name": "openvibe-contracts",
- "version": "0.207.0",
+ "version": "0.208.0",
"license": "AGPL-3.0-only",
"license": "AGPL-3.0-only",
"dependencies": {
"dependencies": {
"ajv": "^8.17.1",
"ajv": "^8.17.1",
@@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
{
{
"name": "openvibe-contracts",
"name": "openvibe-contracts",
- "version": "0.207.0",
+ "version": "0.208.0",
"description": "Machine-readable contracts for the OpenVibe network: schemas, manifests, ids, error envelope, capability checks.",
"description": "Machine-readable contracts for the OpenVibe network: schemas, manifests, ids, error envelope, capability checks.",
"main": "index.js",
"main": "index.js",
"types": "generated/typescript/index.d.ts",
"types": "generated/typescript/index.d.ts",