Skip to content

v4.9.1 — ftm ref model browser

Choose a tag to compare

@pudo pudo released this 10 Jun 13:50
· 6 commits to main since this release

ftm ref — explore the FtM model from the command line

This release adds ftm ref, an offline command group for browsing the FollowTheMoney schema and type model one question at a time. It reads the model compiled into the installed package — so it is always in sync with your version, needs no network or API key, and is handy both at a prompt and for coding agents discovering the model programmatically.

Every command prints a table on a terminal and JSON when piped or when --json is passed, so the same command serves humans and tooling:

ftm ref                            # model overview + the subcommand index
ftm ref schemata                   # every schema, with matchable/abstract flags
ftm ref schemata --matchable       # only schemata you can match against
ftm ref schema Person              # one schema + all inherited properties
ftm ref types                      # every property type
ftm ref type country               # one type, including its supported values
ftm ref prop Person:nationality    # one property's full definition

Examples

List the schemata you can run a match against:

$ ftm ref schemata --matchable
┏━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ schema       ┃ matchable ┃ flags    ┃ extends      ┃ description               ┃
┡━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ Company      │ ✓         │          │ Asset, …     │ A corporation, usually …  │
│ Person       │ ✓         │          │ LegalEntity, │ A natural person, …       │
│              │           │          │ Thing        │                           │
│ Vessel       │ ✓         │          │ Asset, …     │ A ship or boat.           │
└──────────────┴───────────┴──────────┴──────────────┴───────────────────────────┘

Inspect one schema — extends lists every ancestor, and the property table is the complete set of fields (own + inherited) you can set on the entity:

$ ftm ref schema Person
Person  (Person)
A natural person, as opposed to a corporation of some type.

  matchable:    yes
  extends:      LegalEntity, Thing
  featured:     name, nationality, birthDate
  required:     name

  property      type    matchable  schema       description
  name          name    ✓          Thing        The primary name of the entity
  nationality   country ✓          Person       Nationality of a person
  birthDate     date    ✓          Person       Date of birth

Look at a property by qualified name — inherited names resolve against the schema you ask about (Person:name resolves to Thing:name). JSON when piped:

$ ftm ref prop Person:nationality --json
{
  "label": "Nationality",
  "matchable": true,
  "name": "nationality",
  "qname": "Person:nationality",
  "schema": "Person",
  "schemata": ["Person"],
  "type": "country",
  "values": { "ad": "Andorra", "ae": "United Arab Emirates", … }
}

Drill into a property type to see its supported values and every property that uses it:

$ ftm ref type country
country  (Country)

  matchable:  yes
  enum:       yes
  group:      countries

  property               schema
  Address:country        Address
  Person:nationality     Person


  ad  Andorra
  ae  United Arab Emirates

281 supported value(s)

Notes

  • Inherited properties are included in ref schema; stub (reverse-edge) properties are hidden unless you pass --stubs.
  • Unknown names produce a Did you mean: …? suggestion and exit with a usage error.
  • The CLI now depends on rich for table and markdown rendering; description text authored in markdown renders with formatting on a terminal.

See the CLI reference for full details.