Skip to content

Sensorium Interface Control Request v1

Source schema: doc/schemas/sensorium-interface-control-request.v1.schema.json

Fields

Field Required Shape Description
schema yes const: sensorium-interface-control-request.v1
schema/v yes const: 1
action yes enum: claim, cancel, renew, release, handoff
interface/id yes ref: #/$defs/interface_ref
caller/ref yes ref: #/$defs/ref
grant/id yes ref: #/$defs/ref
source/generation-ref yes ref: #/$defs/ref
claim/id no ref: #/$defs/claim_ref
handoff/accept no boolean
target/claim-id no ref: #/$defs/claim_ref
lease/id no ref: #/$defs/lease_ref
lease/epoch no integer
lease/requested-ms no integer
deadline/at yes string
causal/context yes ref: causal-context.v1.schema.json

Definitions

Definition Shape Description
ref string
interface_ref string
claim_ref string
lease_ref string

Conditional Rules

Rule 1

When:

{
  "properties": {
    "action": {
      "const": "claim"
    }
  },
  "required": [
    "action"
  ]
}

Then:

{
  "required": [
    "claim/id",
    "handoff/accept",
    "lease/requested-ms"
  ],
  "not": {
    "anyOf": [
      {
        "required": [
          "target/claim-id"
        ]
      },
      {
        "required": [
          "lease/id"
        ]
      },
      {
        "required": [
          "lease/epoch"
        ]
      }
    ]
  }
}

Rule 2

When:

{
  "properties": {
    "action": {
      "const": "cancel"
    }
  },
  "required": [
    "action"
  ]
}

Then:

{
  "required": [
    "claim/id"
  ],
  "not": {
    "anyOf": [
      {
        "required": [
          "target/claim-id"
        ]
      },
      {
        "required": [
          "lease/id"
        ]
      },
      {
        "required": [
          "lease/epoch"
        ]
      },
      {
        "required": [
          "lease/requested-ms"
        ]
      }
    ]
  }
}

Rule 3

When:

{
  "properties": {
    "action": {
      "enum": [
        "renew",
        "release",
        "handoff"
      ]
    }
  },
  "required": [
    "action"
  ]
}

Then:

{
  "required": [
    "lease/id",
    "lease/epoch"
  ]
}

Rule 4

When:

{
  "properties": {
    "action": {
      "const": "renew"
    }
  },
  "required": [
    "action"
  ]
}

Then:

{
  "required": [
    "lease/requested-ms"
  ]
}

Rule 5

When:

{
  "properties": {
    "action": {
      "const": "handoff"
    }
  },
  "required": [
    "action"
  ]
}

Then:

{
  "required": [
    "target/claim-id"
  ]
}

Field Semantics

schema

  • Required: yes
  • Shape: const: sensorium-interface-control-request.v1

schema/v

  • Required: yes
  • Shape: const: 1

action

  • Required: yes
  • Shape: enum: claim, cancel, renew, release, handoff

interface/id

  • Required: yes
  • Shape: ref: #/$defs/interface_ref

caller/ref

  • Required: yes
  • Shape: ref: #/$defs/ref

grant/id

  • Required: yes
  • Shape: ref: #/$defs/ref

source/generation-ref

  • Required: yes
  • Shape: ref: #/$defs/ref

claim/id

  • Required: no
  • Shape: ref: #/$defs/claim_ref

handoff/accept

  • Required: no
  • Shape: boolean

target/claim-id

  • Required: no
  • Shape: ref: #/$defs/claim_ref

lease/id

  • Required: no
  • Shape: ref: #/$defs/lease_ref

lease/epoch

  • Required: no
  • Shape: integer

lease/requested-ms

  • Required: no
  • Shape: integer

deadline/at

  • Required: yes
  • Shape: string

causal/context

  • Required: yes
  • Shape: ref: causal-context.v1.schema.json

Definition Semantics

$defs.ref

  • Shape: string

$defs.interface_ref

  • Shape: string

$defs.claim_ref

  • Shape: string

$defs.lease_ref

  • Shape: string