Skip to main content
API reference sections

Schema

AttrValue

A typed attribute value. There is deliberately no free-string variant: content cannot be smuggled through an attribute by construction. A string only exists as [AttrValue::Token], whose values come from the vocabulary the registry declares for that key.

Type object or object or object or object or object or object or object or object

Shape

One of 8 shapes:

  1. t: "id"

    A reference (LocalReference class): valid on the local bus, dropped mechanically at the telemetry boundary. (RefId is only the schema's name for it - serde carries the bare uuid string.)

    FieldTypeDescription
    trequired"id"
    vrequiredRefId
  2. t: "time"

    Epoch milliseconds UTC.

    FieldTypeDescription
    trequired"time"
    vrequiredinteger (int64)
  3. t: "token"

    A value from the key's declared closed vocabulary.

    FieldTypeDescription
    trequired"token"
    vrequiredstring
  4. t: "count"

    FieldTypeDescription
    trequired"count"
    vrequiredinteger (uint64, >= 0)
  5. t: "int"

    A signed quantity - a UTC offset, a delta. Count for anything that cannot be negative.

    FieldTypeDescription
    trequired"int"
    vrequiredinteger (int64)
  6. t: "version"

    A dotted numeric version - 10.0.26200. Its own kind rather than a token because a version has no closed vocabulary, and rather than a free string because the boundary enforces digits and dots only: it is structurally incapable of carrying content.

    FieldTypeDescription
    trequired"version"
    vrequiredstring
  7. t: "bucket"

    A client-side bucketed numeric - see [crate::bucket].

    FieldTypeDescription
    trequired"bucket"
    vrequiredinteger (uint32, >= 0)
  8. t: "flag"

    FieldTypeDescription
    trequired"flag"
    vrequiredboolean
Example
{
  "t": "id",
  "v": "00000000-0000-4000-8000-000000000000"
}

The contract has no example values, so example bodies are generated from each schema: every field is shown with a placeholder of its type.

Generated from contract version 1. Last updated .

Privacy choices

Choose which optional tools Koru may use on this site. Your choice is saved in a cookie in this browser for 12 months. Privacy policy

Privacy choices

Keep you signed in, protect forms and remember your language and this choice.

Always on

PostHog and Google Analytics 4 measure page views and actions such as downloads, using cookies or local storage.

PostHog records how pages are used, with form inputs masked and private pages excluded. Needs Analytics.

Ahrefs Web Analytics measures visits and where they come from, and Google Ads measures whether our ads led to a visit or download.