.farki File Format
The .farki format is Farkitect’s native interchange format — human-readable JSON for importing and exporting models.
Top-Level Structure
Section titled “Top-Level Structure”{ "$format": "farki/1.1", "scope": "package", "metadata": { ... }, "package": { ... }}| Field | Required | Description |
|---|---|---|
$format | Yes | Format version identifier. Current: "farki/1.1" |
scope | Yes | "package" (single package tree) or "project" (complete project) |
metadata | Yes | File metadata including creation timestamp and content summary |
package | Package scope | The root package (when scope = “package”) |
packages | Project scope | Array of root packages (when scope = “project”) |
Metadata
Section titled “Metadata”"metadata": { "createdAt": "2026-03-15T00:00:00.000Z", "summary": [ { "name": "M2 ArchiMate 3.2", "layer": "M2", "elementCount": 61 } ]}Project-scope files may also include name, description, and sourceProject.
Package
Section titled “Package”{ "name": "M1 Farquind Applications", "layer": "M1", "imports": ["M2 ArchiMate 3.2"], "elements": [ ... ], "diagrams": [ ... ], "catalogs": [ ... ]}| Field | Required | Description |
|---|---|---|
name | Yes | Package name |
notes | No | Markdown description |
layer | Yes | "M3", "M2", or "M1" |
packageKind | M2 only | "standard" or "common" |
isReadOnly | No | true to prevent modification |
imports | No | Array of M2 package names this package uses |
elements | No | Array of child elements |
diagrams | No | Array of diagrams |
catalogs | No | Array of catalogs |
Elements
Section titled “Elements”Class (Element Type or Instance)
Section titled “Class (Element Type or Instance)”{ "name": "FQ Vessels", "type": "Class", "$id": "fq-vessels", "classifier": "M2 ArchiMate 3.2:Application Component", "notes": "Fleet telemetry and diagnostics platform.", "propertyValues": { "Lifecycle Status": "active" }}Package (Nested)
Section titled “Package (Nested)”{ "name": "Customer Systems", "type": "Package", "$id": "customer-systems", "elements": [ ... ]}Relationship
Section titled “Relationship”{ "name": "FQ Orders serves Fleet Dashboard", "type": "Relationship", "source": "fq-orders", "target": "fleet-dashboard", "$id": "fq-orders-serves-fleet-dashboard", "classifier": "M2 ArchiMate 3.2:Serving"}Owned (Nested) Elements
Section titled “Owned (Nested) Elements”{ "name": "Entity", "type": "Class", "$id": "entity", "nestedElements": [ { "name": "customerId", "type": "Class", "$id": "customer-id", "classifier": "M2 Logical Data Model:Attribute", "propertyValues": { "Data Type": "integer", "Is Primary Key": "true" } } ]}The $id Convention
Section titled “The $id Convention”Every element has a $id — a unique, human-readable identifier within the file.
| Rule | Example |
|---|---|
| Unique within the file | No two elements share a $id |
| Kebab-case | fq-vessels, customer-segment |
| Used for cross-references | Relationships reference source/target by $id |
| Stable | Renaming in the UI doesn’t change $id |
Classifier References
Section titled “Classifier References”M1 elements reference their M2 type using Package Name:Type Name:
"classifier": "M2 Business Model Canvas:Customer Segment"Property Values
Section titled “Property Values”Flat object mapping property names to values:
"propertyValues": { "Lifecycle Status": "active", "Start Date": "2025-06-15", "Is Required": "true"}Enumeration values use the machine value, not the display name.
Diagrams
Section titled “Diagrams”{ "name": "Application Overview", "notation": "M2 ArchiMate 3.2", "viewport": { "panX": 0, "panY": 0, "zoom": 1.0 }, "nodes": [ { "element": "fq-vessels", "x": 100, "y": 200, "width": 160, "height": 80 } ], "edges": [ { "source": "fq-orders-node", "target": "fq-vessels-node", "relationship": "orders-serves-vessels" } ]}M2-Specific Fields
Section titled “M2-Specific Fields”M2 element types include additional fields:
| Field | Description |
|---|---|
notation | Visual appearance (shape, colour, icon, compartments) |
palette | Palette configuration (usually {}) |
properties | Array of Property definitions |
constraints | Relationship constraints (validPairs) |
packageRole | Sub-package role (elementTypes, relationshipTypes, etc.) |