Skip to content

Relationship Class Changed v1

Source schema: doc/schemas/relationship-class-changed.v1.schema.json

Append-only local fact recording a relationship class definition transition.

Governing Basis

Project Lineage

Requirements

Stories

Fields

Field Required Shape Description
schema yes const: relationship-class-changed.v1
schema/v yes const: 1
fact/id yes string
class/id yes ref: relationship-class.v1.schema.json#/$defs/class_id
transition yes enum: created, updated, archived, unarchived
prior/definition no ref: relationship-class.v1.schema.json
next/definition no ref: relationship-class.v1.schema.json
actor/ref yes string
event/at yes string
reason/code no string
reason/note no string
tx/id yes string

Conditional Rules

Rule 1

When:

{
  "properties": {
    "transition": {
      "const": "created"
    }
  },
  "required": [
    "transition"
  ]
}

Then:

{
  "required": [
    "next/definition"
  ],
  "not": {
    "required": [
      "prior/definition"
    ]
  }
}

Rule 2

When:

{
  "properties": {
    "transition": {
      "const": "updated"
    }
  },
  "required": [
    "transition"
  ]
}

Then:

{
  "required": [
    "prior/definition",
    "next/definition"
  ]
}

Rule 3

When:

{
  "properties": {
    "transition": {
      "const": "archived"
    }
  },
  "required": [
    "transition"
  ]
}

Then:

{
  "required": [
    "prior/definition",
    "reason/code"
  ],
  "not": {
    "required": [
      "next/definition"
    ]
  }
}

Rule 4

When:

{
  "properties": {
    "transition": {
      "const": "unarchived"
    }
  },
  "required": [
    "transition"
  ]
}

Then:

{
  "required": [
    "prior/definition",
    "next/definition",
    "reason/code"
  ]
}

Field Semantics

schema

  • Required: yes
  • Shape: const: relationship-class-changed.v1

schema/v

  • Required: yes
  • Shape: const: 1

fact/id

  • Required: yes
  • Shape: string

class/id

  • Required: yes
  • Shape: ref: relationship-class.v1.schema.json#/$defs/class_id

transition

  • Required: yes
  • Shape: enum: created, updated, archived, unarchived

prior/definition

  • Required: no
  • Shape: ref: relationship-class.v1.schema.json

next/definition

  • Required: no
  • Shape: ref: relationship-class.v1.schema.json

actor/ref

  • Required: yes
  • Shape: string

event/at

  • Required: yes
  • Shape: string

reason/code

  • Required: no
  • Shape: string

reason/note

  • Required: no
  • Shape: string

tx/id

  • Required: yes
  • Shape: string