Define objects, their types and attributes, and the links that connect them.
Objects are the nodes of your architecture; links are the relationships between them. Together they form the graph that every diagram and view is built from.
Objects
An object has a title, a type, and optional metadata:
title: Tenant Service
type: microservice:service
description: Owns tenant records and provisioning state.
tech:
- typescript
- postgresql
status: active
objects:
tenant_repo: null
provisioner: null| Key | Purpose |
|---|---|
title | Display name |
type | Object type from the schema; use base:subtype when a subtype applies (e.g. container:database) |
description | Short explanation |
attributes | Free-form metadata map |
| Schema fields | Type-defined fields such as status, tech, owner |
objects | Child object slugs |
attachments | Declared files on the object (handbook, OpenAPI, ERD, SQL, …) |
Types come from the schema
Available type values depend on the model’s objects_schema. The C4 schema
includes actor, organization, product, system, container,
component, microservice, external, and more. Schema subtypes (for
example container:database or microservice:service) are valid object types.
Links
A link points from one object to another. Use the short form or the extended form:
links:
- api_serviceReference styles
| Style | Example |
|---|---|
| Sibling | api_service |
| Parent scope | product.application |
| Absolute | example-saas.product.application.api_service |
References must resolve
If a link target cannot be resolved, validation reports an
unknown-reference. Keep targets accurate as you rename objects.
Tags
Tags are group:value strings drawn from a global taxonomy. Use them to classify objects and links for filtering in Explore:
tags:
- domain:billing
- env:prodModel relationships explicitly with links rather than implying them in prose. Links are what power navigation, filtering, and workflow diagrams.
Last updated on