{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "Tach Domain Configuration Schema", "description": "Domain-level configuration for the Tach CLI", "type": "object", "properties": { "root": { "type": "object", "properties": { "depends_on": { "type": "array", "items": { "oneOf": [ { "type": "string", "description": "Path to the dependency" }, { "type": "object", "required": ["path"], "properties": { "path": { "type": "string", "description": "Path to the dependency" }, "deprecated": { "type": "boolean", "default": false, "description": "Flag usages of this dependency without failing tach check" } } } ] }, "default": null, "description": "List of dependencies for the module" }, "cannot_depend_on": { "type": "array", "items": { "type": "string", "description": "Path to the dependency" }, "default": null, "description": "List of forbidden dependencies for the module" }, "layer": { "type": "string", "description": "The architectural layer this module belongs to" }, "unchecked": { "type": "boolean", "default": false, "description": "Flag to skip checks for this module" }, "utility": { "type": "boolean", "description": "Whether this module is a utility module" }, "strict": { "type": "boolean", "default": false, "description": "DEPRECATED: Use 'interfaces' instead" }, "visibility": { "type": "array", "items": { "type": "string" }, "default": null, "description": "List of visibility patterns" } }, "additionalProperties": false, "description": "Configuration for the root module of the domain" }, "modules": { "type": "array", "items": { "type": "object", "oneOf": [ { "required": ["path"], "properties": { "path": { "type": "string", "description": "Path to the module" }, "depends_on": { "type": "array", "items": { "oneOf": [ { "type": "string", "description": "Path to the dependency" }, { "type": "object", "required": ["path"], "properties": { "path": { "type": "string", "description": "Path to the dependency" }, "deprecated": { "type": "boolean", "default": false, "description": "Flag usages of this dependency without failing tach check" } }, "additionalProperties": false } ] }, "default": null, "description": "List of dependencies for the module" }, "cannot_depend_on": { "type": "array", "items": { "type": "string", "description": "Path to the dependency" }, "default": null, "description": "List of forbidden dependencies for the module" }, "depends_on_external": { "type": "array", "items": { "type": "string", "description": "Path to the dependency" }, "default": null, "description": "List of external dependencies for the module" }, "cannot_depend_on_external": { "type": "array", "items": { "type": "string", "description": "Path to the dependency" }, "default": null, "description": "List of forbidden external dependencies for the module" }, "layer": { "type": "string", "description": "The architectural layer this module belongs to" }, "unchecked": { "type": "boolean", "default": false, "description": "Flag to skip checks for this module" }, "utility": { "type": "boolean", "description": "Whether this module is a utility module" }, "strict": { "type": "boolean", "default": false, "description": "DEPRECATED: Use 'interfaces' instead" }, "visibility": { "type": "array", "items": { "type": "string" }, "default": null, "description": "List of visibility patterns" } }, "additionalProperties": false }, { "required": ["paths"], "properties": { "paths": { "type": "array", "items": { "type": "string" }, "description": "List of module paths that share the same configuration" }, "depends_on": { "type": "array", "items": { "oneOf": [ { "type": "string", "description": "Path to the dependency" }, { "type": "object", "required": ["path"], "properties": { "path": { "type": "string", "description": "Path to the dependency" }, "deprecated": { "type": "boolean", "default": false, "description": "Flag usages of this dependency without failing tach check" } }, "additionalProperties": false } ] }, "default": null, "description": "List of dependencies for the module" }, "cannot_depend_on": { "type": "array", "items": { "type": "string", "description": "Path to the dependency" }, "default": null, "description": "List of forbidden dependencies for the module" }, "depends_on_external": { "type": "array", "items": { "type": "string", "description": "Path to the dependency" }, "default": null, "description": "List of external dependencies for the module" }, "cannot_depend_on_external": { "type": "array", "items": { "type": "string", "description": "Path to the dependency" }, "default": null, "description": "List of forbidden external dependencies for the module" }, "layer": { "type": "string", "description": "The architectural layer this module belongs to" }, "unchecked": { "type": "boolean", "default": false, "description": "Flag to skip checks for this module" }, "utility": { "type": "boolean", "description": "Whether this module is a utility module" }, "strict": { "type": "boolean", "default": false, "description": "DEPRECATED: Use 'interfaces' instead" }, "visibility": { "type": "array", "items": { "type": "string" }, "default": null, "description": "List of visibility patterns" } }, "additionalProperties": false } ] }, "default": [], "description": "List of module configurations" }, "interfaces": { "type": "array", "items": { "type": "object", "properties": { "expose": { "type": "array", "items": { "type": "string" }, "description": "List of regex patterns that match paths to expose in this interface" }, "from": { "type": "array", "items": { "type": "string" }, "description": "List of regex patterns that match modules which adopt this interface" }, "visibility": { "type": "array", "items": { "type": "string" }, "default": null, "description": "List of visibility patterns" }, "exclusive": { "type": "boolean", "default": false, "description": "Whether this interface is exclusive" }, "data_types": { "type": "string", "default": "all", "description": "The data types allowed to cross the interface" } }, "additionalProperties": false }, "default": [], "description": "List of interface configurations" } }, "additionalProperties": false }