Skip to content

types/

Dynamic type definitions — custom input/output types for actions, signal types, and the data dictionary in general. A type with parents: declared inherits properties from its parent types (which may be JVM-known host types or other realm-declared types).

A type may also declare itself a spine (spine:) — a shared identity that records from other realms resolve onto, so that a CRM’s customer, a helpdesk’s company and a billing system’s account are one node. That, and the rule for choosing between parents: and spine:, is VIRTUAL_CYPHER.md §5.4.1–5.4.3; it is the foundation of every cross-realm join that is not already on a person or an email domain.

types/github.yml
- name: GitHubIssue
description: "A GitHub issue to process"
properties:
owner: "Repository owner"
repo: "Repository name"
issue: "Issue number"
title: "Issue title"
body: "Issue body"

A type whose parents: includes Signal (the host-defined signal base type) is a signal type — automatically eligible for the consequence engine, triage rules, and persistence as a SignalRecord. See events/ below.

types/stripe.yml
- name: StripeEvent
parents: [Signal]
description: "A Stripe webhook event"
properties:
eventType: "Stripe event type, e.g. charge.failed"
amount: "Charge amount in minor units"
currency: "ISO 4217 currency code"
customerId: "Stripe customer id"