Product · Governance

Trust your taxonomy again.

Every change records who, what, when, and why. Revert any one. Tag known-good states. Compare tags side by side. Catch broken references before they reach the API. This is what was missing from the spreadsheet.

Change events

Every change is a record.

Create, update, delete, revert, tag, bulk_import — six event kinds, one timeline. Every event captures author, timestamp, entity, and an optional message. The timeline is the audit log; the audit log is the timeline.

  • Filterable by event kind, entity, author, scheme
  • Click any event to see the field-level diff
  • Author avatar with initials and color from the workspace
  • Available via the API for export to your own audit pipeline
ChangeEvent
json
{
  "id":         "ce_2389",
  "kind":       "update",
  "entityKind": "concept",
  "entityId":   "c_camry",
  "entityName": "Toyota Camry",
  "summary":    "Edited prefLabel · en",
  "message":    "Match the 2026 marketing copy",
  "author":     { "name": "Valentin", "initials": "VL" },
  "at":         "2026-04-25T14:32:08Z"
}

Tags

Pin a state. Diff two states.

Tagging names a ChangeEvent (`v1.3`, `2026-Q2`). Downstream consumers pin API calls to the tag for stability. Tags can't be moved — to supersede a tag, append a new one. The tag-to-tag diff shows added, modified, and removed concepts as a single rollup.

  • Unique tag names per ontology
  • Tag list visible in History panel and Export modal
  • Tag-to-tag diff with added / modified / removed counts
  • Tags emit `tag.created` webhooks for downstream pipelines

Revert

Undo, without losing history.

Revert appends a new event that inverts a prior one. The original event stays visible in history. A revert can itself be reverted. For ranges (`revert everything since v1.2`) we generate one event per affected entity and run it as an async job.

  • Single-event revert from the diff modal
  • Multi-event revert with progress UI for large ranges
  • Reverts are linked back to the original event for traceability
  • Plain old append-only history — nothing is ever deleted
Revert via API
bash
# Single event
curl -X POST "https://api.semlify.com/v1/change-events/ce_087/revert" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{ "message": "wrong domain on poweredBy" }'

# Range revert (since tag v1.2)
curl -X POST ".../tags/v1.2/revert-since" -H "..."

Validation panel

Catch issues before they ship.

A live panel that runs every check on every edit. Orphan concepts, domain / range violations, duplicate prefLabels per scheme, deprecated-but-still-referenced. Click any issue to jump to the offender. Filter by severity. Resolve in place.

  • Five built-in rules covering the most common drift patterns
  • Errors block exports; warnings don't
  • Runs on every save in under a second for ontologies up to 5,000 concepts
  • Validation results exposed via the API so downstream pipelines can react

Stop being afraid to change a concept.

Every change is reversible. Every state is reachable. Free workspace, no credit card.