LinkCompute link.compute@1

Generated at from openvibe-contracts v0.419.0 and openvibe-sdk v0.161.0.

Version
1.0.0
Owner
network
Visibility
public
Status
active
Compatibility
backward
Schema
https://openvibe.network/contracts/link/compute.v1.json

Where a person's work can run. Only ready candidates may be picked; a missing rental quote is never a price.

Fields

FieldTypeRequiredDescriptionConstraints
sourceshttps://openvibe.network/contracts/link/compute.v1.json#/$defs/sourceyes
candidateshttps://openvibe.network/contracts/link/compute.v1.json#/$defs/candidateyes

Examples

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

Valid: personal-and-coming-soon
{
  "sources": [
    {
      "kind": "personal",
      "name": "Your Link machines",
      "status": "ready",
      "reason": null
    },
    {
      "kind": "cloud",
      "name": "OpenVibe cloud machines",
      "status": "coming_soon",
      "reason": "No cloud pool is accepting jobs yet."
    },
    {
      "kind": "exchange",
      "name": "Exchange GPU rentals",
      "status": "coming_soon",
      "reason": "A live quote is required.",
      "price": null
    },
    {
      "kind": "community",
      "name": "Community machines",
      "status": "coming_soon",
      "reason": "Shared placement is being connected."
    }
  ],
  "candidates": [
    {
      "id": "dev_01J0000000000000000000000",
      "kind": "personal",
      "name": "Studio",
      "status": "ready",
      "reason": null,
      "price": {
        "amount_usd": 0,
        "unit": "hour"
      }
    }
  ]
}
Rejected: unknown-source
{
  "sources": [
    {
      "kind": "invalid",
      "name": "Unknown",
      "status": "ready",
      "reason": null
    }
  ],
  "candidates": []
}

Validate

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