OpenVibe.Deals API

Generated at from openvibe-contracts v0.53.0 and openvibe-sdk v0.11.0.

Server https://openvibe.deals. 18 routes performing 12 capabilities. OpenAPI 3.1 document.

GET /api/v1/flags

Moderation: disable or enable an offer, record a person's review of imported or AI-assisted text (reviews are recorded for a usr_ subject only), read and resolve flags including vote-ring flags.

Capabilities
deals.offer.moderate
Visibility
first-party
Input
deals.moderation-request@1
Response
application/json deals.moderation-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>deals.offer.moderate</strong> (first-party): Moderation: disable or enable an offer, record a person&#39;s review of imported or AI-assisted text (reviews are recorded for a usr_ subject only), read and resolve flags including vote-ring flags. Audited.</p>

POST /api/v1/flags/{id}/resolve

Moderation: disable or enable an offer, record a person's review of imported or AI-assisted text (reviews are recorded for a usr_ subject only), read and resolve flags including vote-ring flags.

Capabilities
deals.offer.moderate
Visibility
first-party
Parameters
  • id (path, required)
Request body
application/json deals.moderation-request@1
Response
application/json deals.moderation-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>deals.offer.moderate</strong> (first-party): Moderation: disable or enable an offer, record a person&#39;s review of imported or AI-assisted text (reviews are recorded for a usr_ subject only), read and resolve flags including vote-ring flags. Audited.</p>

POST /api/v1/offers

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).

Capabilities
deals.offer.submit
Visibility
first-party
Request body
application/json deals.offer-submit-request@1
Response
application/json deals.offer-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>deals.offer.submit</strong> (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.</p>

PATCH /api/v1/offers/{id}

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

Capabilities
deals.offer.update
Visibility
first-party
Parameters
  • id (path, required)
Request body
application/json deals.offer-update-request@1
Response
application/json deals.offer-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>deals.offer.update</strong> (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).</p>

POST /api/v1/offers/{id}/disable

Moderation: disable or enable an offer, record a person's review of imported or AI-assisted text (reviews are recorded for a usr_ subject only), read and resolve flags including vote-ring flags.

Capabilities
deals.offer.moderate
Visibility
first-party
Parameters
  • id (path, required)
Request body
application/json deals.moderation-request@1
Response
application/json deals.moderation-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>deals.offer.moderate</strong> (first-party): Moderation: disable or enable an offer, record a person&#39;s review of imported or AI-assisted text (reviews are recorded for a usr_ subject only), read and resolve flags including vote-ring flags. Audited.</p>

POST /api/v1/offers/{id}/enable

Moderation: disable or enable an offer, record a person's review of imported or AI-assisted text (reviews are recorded for a usr_ subject only), read and resolve flags including vote-ring flags.

Capabilities
deals.offer.moderate
Visibility
first-party
Parameters
  • id (path, required)
Request body
application/json deals.moderation-request@1
Response
application/json deals.moderation-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>deals.offer.moderate</strong> (first-party): Moderation: disable or enable an offer, record a person&#39;s review of imported or AI-assisted text (reviews are recorded for a usr_ subject only), read and resolve flags including vote-ring flags. Audited.</p>

POST /api/v1/offers/{id}/expire

Mark an active offer expired (the person who submitted it, or a moderator).

Capabilities
deals.offer.expire
Visibility
first-party
Parameters
  • id (path, required)
Request body
application/json deals.offer-action-request@1
Response
application/json deals.offer-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>deals.offer.expire</strong> (first-party): Mark an active offer expired (the person who submitted it, or a moderator). Unknown expiry is never assumed; offers with a stated end expire on their own.</p>

POST /api/v1/offers/{id}/flags

Report a problem with an offer for the acting person (expired, price_wrong, duplicate, spam, other).

Capabilities
deals.flag.create
Visibility
first-party
Parameters
  • id (path, required)
Request body
application/json deals.flag-request@1
Response
application/json deals.flag-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>deals.flag.create</strong> (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.</p>

POST /api/v1/offers/{id}/merge

Duplicate resolution (moderation): merge an offer into another, or unmerge it.

Capabilities
deals.offer.merge
Visibility
first-party
Parameters
  • id (path, required)
Request body
application/json deals.offer-action-request@1
Response
application/json deals.offer-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>deals.offer.merge</strong> (first-party): Duplicate resolution (moderation): merge an offer into another, or unmerge it. Nothing is copied or deleted: votes, observations, sources and comments stay where they were written and the canonical offer reads across the group (a voter counts once). Audited with the tallies before and after; reversible.</p>

POST /api/v1/offers/{id}/observations

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

Capabilities
deals.offer.update
Visibility
first-party
Parameters
  • id (path, required)
Request body
application/json deals.offer-update-request@1
Response
application/json deals.offer-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>deals.offer.update</strong> (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).</p>

POST /api/v1/offers/{id}/review

Moderation: disable or enable an offer, record a person's review of imported or AI-assisted text (reviews are recorded for a usr_ subject only), read and resolve flags including vote-ring flags.

Capabilities
deals.offer.moderate
Visibility
first-party
Parameters
  • id (path, required)
Request body
application/json deals.moderation-request@1
Response
application/json deals.moderation-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>deals.offer.moderate</strong> (first-party): Moderation: disable or enable an offer, record a person&#39;s review of imported or AI-assisted text (reviews are recorded for a usr_ subject only), read and resolve flags including vote-ring flags. Audited.</p>

POST /api/v1/offers/{id}/unmerge

Duplicate resolution (moderation): merge an offer into another, or unmerge it.

Capabilities
deals.offer.merge
Visibility
first-party
Parameters
  • id (path, required)
Request body
application/json deals.offer-action-request@1
Response
application/json deals.offer-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>deals.offer.merge</strong> (first-party): Duplicate resolution (moderation): merge an offer into another, or unmerge it. Nothing is copied or deleted: votes, observations, sources and comments stay where they were written and the canonical offer reads across the group (a voter counts once). Audited with the tallies before and after; reversible.</p>

PUT /api/v1/offers/{id}/vote

Set the acting person's vote (+1 / -1) on an offer.

Capabilities
deals.vote.set
Visibility
first-party
Parameters
  • id (path, required)
Request body
application/json deals.vote-request@1
Response
application/json deals.vote-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>deals.vote.set</strong> (first-party): Set the acting person&#39;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&#39;s own offer; vote-ring detection flags moderators.</p>

DELETE /api/v1/offers/{id}/vote

Remove the acting person's vote on an offer (kept as a removed row for history).

Capabilities
deals.vote.remove
Visibility
first-party
Parameters
  • id (path, required)
Response
application/json deals.vote-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>deals.vote.remove</strong> (first-party): Remove the acting person&#39;s vote on an offer (kept as a removed row for history). Same abuse controls as deals.vote.set.</p>

POST /api/v1/products/resolve

Resolve a product by its aliases (gtin, mpn, sku, exact name, url), creating it when none matches (create: false to only look up).

Capabilities
deals.product.resolve
Visibility
first-party
Request body
application/json deals.product-resolve-request@1
Response
application/json deals.product-resolve-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>deals.product.resolve</strong> (first-party): Resolve a product by its aliases (gtin, mpn, sku, exact name, url), creating it when none matches (create: false to only look up). Aliases that already name another product are reported as conflicts, never re-pointed.</p>

GET /api/v1/watches

List the acting person's watches and saved searches with their notification counts.

Capabilities
deals.watch.read
Visibility
first-party
Response
application/json deals.watch-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>deals.watch.read</strong> (first-party): List the acting person&#39;s watches and saved searches with their notification counts.</p>

POST /api/v1/watches

Create a keyword, product or price-below watch, or a saved search (never notifies), for the acting person.

Capabilities
deals.watch.create
Visibility
first-party
Request body
application/json deals.watch-request@1
Response
application/json deals.watch-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>deals.watch.create</strong> (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).</p>

DELETE /api/v1/watches/{id}

Delete one of the acting person's watches or saved searches.

Capabilities
deals.watch.delete
Visibility
first-party
Parameters
  • id (path, required)
Response
application/json deals.watch-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>deals.watch.delete</strong> (first-party): Delete one of the acting person&#39;s watches or saved searches.</p>