RateCard platform.rate-card@1

Generated at from openvibe-contracts v0.79.0 and openvibe-sdk v0.25.0.

Version
1.0.0
Owner
network
Visibility
first-party
Status
active
Compatibility
backward
Decision
ADR-034
Schema
https://openvibe.network/contracts/platform/rate-card.v1.json

One provider price with its free allowance, in the provider's real billing unit, with effective dates and where it was checked (roadmap WS-Z3 task 5). Changed only by review; never written by an AI on its own.

Fields

FieldTypeRequiredDescriptionConstraints
idstringyes
providerstringyes
adapterstring
metricstringyese.g. queue-operation-64kb, request, gib-delivered, message, gb-month, class-a-op
unit_sizenumberyes
  • minimum 0
unit_price_usdnumberyes
  • minimum 0
free_allowancenumberyes
  • minimum 0
reset_periodenumyes
  • one of "day", "month", "none"
regionstring
effective_fromstringyes
  • format date
effective_untilstring
  • format date
sourcestringyes
  • format uri
verified_atstringyes
  • format date

Examples

From the contract's own test fixtures: valid ones validate, rejected ones must fail.

Valid: queue-ops
{
  "id": "rc_example_queue_ops",
  "provider": "example-queues",
  "adapter": "example-queue-v1",
  "metric": "queue-operation-64kb",
  "unit_size": 1000000,
  "unit_price_usd": 0.4,
  "free_allowance": 1000000,
  "reset_period": "month",
  "effective_from": "2026-09-01",
  "source": "https://example.com/pricing",
  "verified_at": "2026-09-28"
}
Rejected: negative-price
{
  "id": "rc",
  "provider": "p",
  "metric": "m",
  "unit_size": 1,
  "unit_price_usd": -1,
  "free_allowance": 0,
  "reset_period": "month",
  "effective_from": "2026-09-01",
  "source": "https://example.com",
  "verified_at": "2026-09-28"
}
Rejected: no-source
{
  "id": "rc",
  "provider": "p",
  "metric": "m",
  "unit_size": 1,
  "unit_price_usd": 1,
  "free_allowance": 0,
  "reset_period": "month",
  "effective_from": "2026-09-01",
  "verified_at": "2026-09-28"
}

Validate

const contracts = require('openvibe-contracts');
contracts.validate('platform.rate-card@1', value);   // { valid, errors: [{ path, message }] }