Template Context Reference
When a notification template is rendered, it has access to event data through special objects. This reference guide documents all available objects and their properties.Event Object
The complete change event that triggered the notification. Available Properties:
Example Usage:
Entity Object
The entity being notified about (automatically deserialized from the event data).Common Properties (Available for All Entity Types)
These properties exist on all entities that implement EntityInterface:Entity-Specific Properties
Additional properties available based on entity type:Announcement (Thread entity)
Schema:entity/feed/thread.json (AnnouncementDetails definition)
Description: Announcements are system-wide or entity-specific messages that inform users about important updates, maintenance, or other information. These are embedded within the Thread entity with a specific threadType of "Announcement".
Announcement-Specific Fields (Thread entity with type = “Announcement”):
entity.announcement.description(string) - The announcement content (in Markdown format)entity.announcement.startTime(number) - When the announcement becomes active (Unix timestamp in milliseconds)entity.announcement.endTime(number) - When the announcement expires (Unix timestamp in milliseconds)entity.type(enum: string) - Thread type - must be “Announcement” for announcement threadsentity.message(string) - The main message of the thread in Markdown format
type set to “Announcement”. Access announcement-specific details via the announcement property which contains description, startTime, and endTime.
Chart
Schema:entity/data/chart.json
Description: A Chart presents data visually. Charts can be part of Dashboards and help users gain insights from data.
Chart-Specific Fields:
entity.chartType(enum: string) - Type of chart visualization (Line, Table, Bar, Area, Pie, Histogram, Scatter, Text, BoxPlot, SanKey, Gauge, Map, Graph, Heatmap, Timeline, Other)entity.sourceUrl(string) - Chart URL suffix from its serviceentity.dashboards(Array ofEntityReference) - All dashboards containing this chartentity.serviceType(enum: string) - Service type where this chart is hosted
Container
Schema:entity/data/container.json
Description: A Container is a collection of data files or objects in a storage system. Containers organize and provide access to structured and unstructured data.
Container-Specific Fields:
entity.parent(EntityReference) - Link to the parent container under which this entity sits, if not top levelentity.children(Array ofEntityReference) - References to child containers residing under this entityentity.dataModel(ContainerDataModel) - References to the container’s data model, if data is structured, or null otherwiseentity.prefix(string) - Optional prefix path defined for this containerentity.numberOfObjects(number) - The number of objects/files this container hasentity.size(number) - The total size in KB this container hasentity.fileFormats(Array ofFileFormat) - File & data formats identified for the containerentity.sourceUrl(string) - Source URL of containerentity.fullPath(string) - Full path of the container/fileentity.retentionPeriod(string) - Retention period of the data in the Container (ISO 8601 duration format, e.g., P23DT23H)
Conversation (Thread entity)
Schema:entity/feed/thread.json
Description: Conversations are threaded discussions where users can exchange messages and collaborate on any topic or entity.
Conversation-Specific Fields:
entity.threadTs(number) - Thread timestampentity.message(string) - Initial message contententity.threadType(string) - “Conversation”, “Task”, “Announcement”, or “Chatbot”entity.createdBy(string) - Username of user who created the threadentity.reactions(Array ofReaction) - User reactions to messagesentity.about(string) - Data asset about which this thread is created for with format<#E::{entities}::{entityName}::{field}::{fieldValue}>entity.addressedTo(string) - Entity link string the thread is addressed to (format:<#E::{entities}::{entityName}::{field}::{fieldValue}>)
Dashboard
Schema:entity/data/dashboard.json
Description: A Dashboard is a collection of Charts that presents the same data or related data to allow viewers to gain insights.
Dashboard-Specific Fields:
entity.project(string) - Name of the project / workspace / collection in which the dashboard is containedentity.dashboardType(enum: string) - Type of dashboard (Dashboard, Report)entity.sourceUrl(string) - Dashboard URL suffix from its serviceentity.charts(Array ofEntityReference) - All the charts included in this Dashboardentity.dataModels(Array ofEntityReference) - List of data models used by this dashboard or the charts contained on itentity.serviceType(enum: string) - Service type where this dashboard is hosted
DashboardDataModel
Schema:entity/data/dashboardDataModel.json
Description: A Dashboard Data Model represents the data structure and relationships used by a Dashboard. It defines how data is organized for visualization.
DashboardDataModel-Specific Fields:
entity.serviceType(enum: string) - Service type where this data model is hostedentity.dataModelType(enum: string) - Type of data model (TableauDataModel, TableauPublishedDatasource, TableauEmbeddedDatasource, SupersetDataModel, MetabaseDataModel, LookMlView, LookMlExplore, PowerBIDataModel, QlikDataModel, QuickSightDataModel, SigmaDataModel, PowerBIDataFlow, MicroStrategyDataset, ThoughtSpotDataModel)entity.sql(string) - SQL query if the Data Model is based on SQLentity.columns(Array ofColumn) - Columns from the data modelentity.project(string) - Name of the project / workspace / collection in which the dataModel is containedentity.sourceUrl(string) - Dashboard Data Model URL suffix from its service
DashboardService
Schema:entity/services/dashboardService.json
Description: A Dashboard Service represents a service that hosts dashboards (e.g., Tableau, Looker, PowerBI, Metabase).
DashboardService-Specific Fields:
entity.serviceType(string) - Type of dashboard service (Tableau, Looker, PowerBI, Metabase, Superset, Redash, Mode, Qlik)entity.connection(DashboardConnection) - Connection configuration object
Database
Schema:entity/data/database.json
Description: A Database is a collection of tables, views, and other data objects. It is created and hosted in a Database Service.
Database-Specific Fields:
entity.serviceType(enum: string) - Service type where this database is hostedentity.location(EntityReference) - Reference to the Location that contains this databaseentity.databaseSchemas(Array ofEntityReference) - References to schemas in the databaseentity.default(boolean) - For databases that don’t support a database/catalog in the hierarchy and use default database (e.g., MySql)entity.retentionPeriod(string) - Retention period of the data in the database (ISO 8601 duration format, e.g., P23DT23H)entity.sourceUrl(string) - Source URL of databaseentity.databaseProfilerConfig(DatabaseProfilerConfig) - Database profiler configuration
DatabaseSchema
Schema:entity/data/databaseSchema.json
Description: A Database Schema groups tables and views within a Database. Tables are organized under schemas.
DatabaseSchema-Specific Fields:
entity.serviceType(enum: string) - Service type where this schema is hostedentity.database(EntityReference) - Reference to Database that contains this schemaentity.tables(Array ofEntityReference) - References to tables in the schemaentity.retentionPeriod(string) - Retention period of the data in the database schema (ISO 8601 duration format, e.g., P23DT23H)entity.sourceUrl(string) - Source URL of database schemaentity.databaseSchemaProfilerConfig(DatabaseSchemaProfilerConfig) - Schema profiler configuration
DatabaseService
Schema:entity/services/databaseService.json
Description: A Database Service represents a database management system that hosts databases (e.g., Postgres, MySQL, Snowflake, BigQuery).
DatabaseService-Specific Fields:
entity.serviceType(string) - Type of database service (Postgres, MySQL, Oracle, MSSQL, Snowflake, BigQuery, Redshift, Athena, Trino, Hive, MariaDB, Presto, Impala, and 50+ other connectors)entity.connection(DatabaseConnection) - Connection configuration object
DataContract
Schema:entity/data/dataContract.json
Description: A Data Contract defines expectations for data quality, schema, and SLAs. It ensures that data meets specified requirements for consumers.
DataContract-Specific Fields:
entity.entity(EntityReference) - Entity the contract applies toentity.testSuite(EntityReference) - Reference to test suiteentity.schema(Array ofColumn) - Schema definitionentity.semantics(array) - Semantic validation rulesentity.termsOfUse(string) - Terms of useentity.security(object) - Security and access policy expectations (defined inline)entity.sla(object) - Service Level Agreement expectations (defined inline)entity.qualityExpectations(Array ofEntityReference) - Quality expectationsentity.contractUpdates(Array ofContractUpdate) - History of contract updatesentity.effectiveFrom(string) - Date from which contract is effectiveentity.effectiveUntil(string) - Date until which contract is effectiveentity.sourceUrl(string) - Source URLentity.latestResult(TestCaseResult) - Latest validation result
Glossary
Schema:entity/data/glossary.json
Description: A Glossary is a collection of terms with definitions. It provides a controlled vocabulary for the organization.
Glossary-Specific Fields:
entity.usageCount(integer) - Count of how many times terms from this glossary are usedentity.termCount(integer) - Total number of terms in glossaryentity.provider(string) - Provider typeentity.disabled(boolean) - System glossary flagentity.mutuallyExclusive(boolean) - Terms are mutually exclusiveentity.dataProducts(Array ofEntityReference) - Data products this glossary is part of
GlossaryTerm
Schema:entity/data/glossaryTerm.json
Description: A Glossary Term defines a specific concept, business term, or technical term with detailed information and relationships.
GlossaryTerm-Specific Fields:
entity.glossary(EntityReference) - Glossary that term belongs toentity.parent(EntityReference) - Parent glossary termentity.children(Array ofEntityReference) - Child glossary termsentity.relatedTerms(Array ofEntityReference) - Related termsentity.synonyms(array) - Synonyms listentity.references(Array ofTermReference) - External referencesentity.usageCount(integer) - Count of usageentity.provider(string) - Provider typeentity.disabled(boolean) - System term flagentity.mutuallyExclusive(boolean) - Children are mutually exclusiveentity.childrenCount(integer) - Count of immediate children
IngestionPipeline
Schema:entity/services/ingestionPipelines/ingestionPipeline.json
Description: An Ingestion Pipeline represents an automated workflow for ingesting metadata from external sources into OpenMetadata.
IngestionPipeline-Specific Fields:
entity.pipelineType(enum: string) - Type of ingestion pipeline (metadata, usage, lineage, profiler, autoClassification, TestSuite, dataInsight, elasticSearchReindex, dbt, application)entity.sourceConfig(SourceConfig) - Configuration for data sourceentity.openMetadataServerConnection(OpenMetadataConnection) - Connection to OpenMetadataentity.airflowConfig(AirflowConfig) - Airflow-specific configurationentity.service(EntityReference) - Link to the service for which this pipeline ingests metadataentity.pipelineStatuses(PipelineStatus) - Last execution and status for the pipelineentity.loggerLevel(enum: string) - Logging level for the workflowentity.raiseOnError(boolean) - Flag workflow as failed if errors are encountered (default: true)entity.deployed(boolean) - Indicates if workflow has been successfully deployed to Airflowentity.enabled(boolean) - Whether pipeline is active and ready to run (default: true)entity.enableStreamableLogs(boolean) - Enable real-time log streaming to Collate serverentity.applicationType(string) - Type of application when pipelineType is ‘application’entity.ingestionRunner(EntityReference) - The ingestion agent responsible for executing the pipelineentity.processingEngine(EntityReference) - The processing engine responsible for executing the pipeline logic
MessagingService
Schema:entity/services/messagingService.json
Description: A Messaging Service represents a message broker or event streaming platform (e.g., Kafka, RabbitMQ, AWS SQS).
MessagingService-Specific Fields:
entity.serviceType(string) - Type of messaging service (Kafka, RabbitMQ, Kinesis, SQS, ActiveMQ, Nats, Pulsar, and other platforms)entity.connection(MessagingConnection) - Connection configuration object
MetadataService
Schema:entity/services/metadataService.json
Description: A Metadata Service represents a system that manages and stores metadata (e.g., Apache Atlas, Hive Metastore).
MetadataService-Specific Fields:
entity.serviceType(string) - Type of metadata service (Amundsen, Atlas, IMS, OpenMetadata, and other platforms)entity.connection(MetadataConnection) - Connection configuration object
MLModel
Schema:entity/data/mlmodel.json
Description: An MLModel entity represents a machine learning model with its metadata, versions, and associations.
MLModel-Specific Fields:
entity.algorithm(string) - Algorithm usedentity.mlFeatures(Array ofMLFeature) - Features used in the modelentity.mlHyperParameters(Array ofMLHyperParameter) - Hyperparameters of the modelentity.target(string) - Target value for supervised modelsentity.dashboard(EntityReference) - Performance dashboard referenceentity.mlStore(MLStore) - Storage location for the modelentity.server(string) - Endpoint URL for the modelentity.serviceType(enum: string) - Service type where model is hostedentity.sourceUrl(string) - Source URL of modelentity.sourceHash(string) - Source hash
MLModelService
Schema:entity/services/mlmodelService.json
Description: An ML Model Service represents a platform or service that hosts and manages machine learning models (e.g., MLflow, Seldon).
MLModelService-Specific Fields:
entity.serviceType(string) - Type of ML model service (MLflow, Seldon, AWS SageMaker, Google Vertex AI, and other platforms)entity.connection(MLModelConnection) - Connection configuration object
Pipeline
Schema:entity/data/pipeline.json
Description: A Pipeline represents a workflow or DAG that processes and transforms data from source to destination.
Pipeline-Specific Fields:
entity.sourceUrl(string) - URL to the pipeline definitionentity.tasks(Array ofTask) - Tasks/steps in the pipelineentity.serviceType(enum: string) - Service type where pipeline is hostedentity.pipelineStatus(PipelineStatus) (defined inline) - Latest pipeline statusentity.state(enum: string) - Pipeline state (Active, Inactive)entity.concurrency(integer) - Concurrency levelentity.pipelineLocation(string) - Pipeline code locationentity.startDate(string) - Pipeline start dateentity.scheduleInterval(string) - Cron format scheduleentity.dataProducts(Array ofEntityReference) - Data productsentity.sourceHash(string) - Source hash
PipelineService
Schema:entity/services/pipelineService.json
Description: A Pipeline Service represents a workflow orchestration platform (e.g., Airflow, Dagster, Prefect).
PipelineService-Specific Fields:
entity.serviceType(string) - Type of pipeline service (Airflow, Dagster, Prefect, Fivetran, Glue, NiFi, and other platforms)entity.connection(PipelineConnection) - Connection configuration object
SearchService
Schema:entity/services/searchService.json
Description: A Search Service represents a search engine that indexes and enables searching metadata and data (e.g., Elasticsearch, OpenSearch).
SearchService-Specific Fields:
entity.serviceType(string) - Type of search service (Elasticsearch, OpenSearch)entity.connection(SearchConnection)
StorageService
Schema:entity/services/storageService.json
Description: A Storage Service represents cloud or on-premise storage systems that host data containers and files (e.g., S3, GCS, ADLS).
StorageService-Specific Fields:
entity.serviceType(string) - Type of storage service (S3, GCS, ADLS, Azure Blob Storage, MinIO, HDFS, and other platforms)entity.connection(StorageConnection)
Table
Schema:entity/data/table.json
Description: A Table entity organizes data in rows and columns and is defined in a Database Schema.
Table-Specific Fields:
entity.tableType(string) - Type of table (Regular, External, Dynamic, View, SecureView, MaterializedView, Iceberg, Local, Partitioned, Foreign, Transient, Stream)entity.columns(Array ofColumn) - List of column definitions for the tableentity.databaseSchema(EntityReference) - Reference to parent schemaentity.database(EntityReference) - Reference to parent databaseentity.profile(object) - Data profiling information objectentity.customMetrics(array) - List of custom metricsentity.location(EntityReference) - Location reference for the tableentity.sourceUrl(string) - Source URL of the tableentity.joins(array) - Join information with other tablesentity.sampleData(object) - Sample data from the table
Tag
Schema:entity/classification/tag.json
Description: A Tag is a label assigned to entities for classification and organization purposes.
Tag-Specific Fields:
entity.classification(EntityReference) - Reference to parent classification (tag category)entity.deprecated(boolean) - Whether tag is deprecatedentity.parent(EntityReference) - Parent tagentity.children(Array ofEntityReference) - Child tagsentity.usageCount(integer) - Usage countentity.provider(string) - Provider type for the tagentity.dataProducts(Array ofEntityReference) - Data productsentity.recognizers(Array ofrecognizer) - Recognizers for auto-detectionentity.autoClassificationEnabled(boolean) - Auto-classification flagentity.autoClassificationPriority(integer) - Priority for conflict resolutionentity.mutuallyExclusive(boolean) - Mutual exclusivity flagentity.disabled(boolean) - System tag flag
TagCategory
Schema:entity/classification/classification.json
Description: A Tag Category is a group of related tags that provides organization and structure for classifications.
TagCategory-Specific Fields:
entity.termCount(integer) - Total number of children tagsentity.usageCount(integer) - Count of usageentity.mutuallyExclusive(boolean) - Tags are mutually exclusiveentity.disabled(boolean) - System classification flagentity.provider(string) - Provider typeentity.autoClassificationConfig(object) - Auto-classification configuration
Task (Thread entity)
Schema:entity/feed/thread.json
Description: Tasks are actionable items that can be assigned to users for completion. These are embedded within the Thread entity with a specific threadType of "Task".
Task-Specific Fields:
entity.assignees(array) - List of users assigned to the taskentity.status(string) - Task status (Open, In Progress, Closed, etc.)entity.priority(string) - Task priority levelentity.dueDate(string) - When the task is dueentity.resolution(string) - How the task was resolved
TestCase
Schema:tests/testCase.json
Description: A Test Case is a test definition to capture data quality tests against tables, columns, and other data assets.
TestCase-Specific Fields:
entity.testDefinition(EntityReference) - Reference to test definitionentity.entityLink(string) - Reference to the entity being tested (as entity link string)entity.entityFQN(string) - Fully qualified name of tested entityentity.testSuite(EntityReference) - Test suite referenceentity.testSuites(Array ofEntityReference) - Multiple test suitesentity.parameterValues(array) - Parameters for the testentity.testCaseResult(object) - Results from latest test runentity.testCaseStatus(enum: string) - Current test status (Success, Failed, Aborted, Queued)entity.createdBy(string) - Creator usernameentity.computePassedFailedRowCount(boolean) - Compute row counts flagentity.incidentId(UUID) - Incident IDentity.failedRowsSample(object) - Sample failed rowsentity.inspectionQuery(string) - Query to retrieve failed rowsentity.useDynamicAssertion(boolean) - Dynamic assertion flagentity.dimensionColumns(array) - Columns to group results by
TestSuite
Schema:tests/testSuite.json
Description: A Test Suite is a collection of Test Cases that can be executed together as part of a data quality testing workflow.
TestSuite-Specific Fields:
entity.basic(boolean) - Whether suite is basic/executable (preferred over deprecatedexecutable)entity.basicEntityReference(EntityReference) - Reference to entity the suite tests (preferred over deprecatedexecutableEntityReference)entity.tests(Array ofEntityReference) - Test case referencesentity.testCaseResultSummary(array) - Test case result summaryentity.summary(object) - Test execution summary with countsentity.dataContract(EntityReference) - Associated data contractentity.inherited(boolean) - Whether inheritedentity.ingestionRunner(EntityReference) - Ingestion runner
Topic
Schema:entity/data/topic.json
Description: A Topic represents a message queue or topic in a messaging system where events are published and consumed.
Topic-Specific Fields:
entity.messageSchema(object) - Schema of messages in the topicentity.serviceType(enum: string) - Service type where topic is hostedentity.partitions(integer) - Number of partitionsentity.cleanupPolicies(array) - Cleanup policiesentity.retentionTime(number) - Retention time in millisecondsentity.replicationFactor(integer) - Replication factorentity.maximumMessageSize(integer) - Maximum message size in bytesentity.minimumInSyncReplicas(integer) - Minimum in-sync replicasentity.retentionSize(number) - Maximum partition sizeentity.topicConfig(object) - Topic configuration key/value pairsentity.sampleData(object) - Sample data
User
Schema:entity/teams/user.json
Description: A User represents a person who can access and interact with the OpenMetadata platform.
User-Specific Fields:
entity.email(string) - User email addressentity.isAdmin(boolean) - Whether user is administratorentity.isBot(boolean) - Whether user is a bot userentity.allowImpersonation(boolean) - Whether user can be impersonatedentity.authenticationMechanism(object) - Authentication configurationentity.profile(object) - User profile informationentity.teams(Array ofEntityReference) - Teams the user belongs toentity.roles(Array ofEntityReference) - Roles assigned to userentity.defaultPersona(EntityReference) - Default personaentity.personas(Array ofEntityReference) - Personas for userentity.owns(Array ofEntityReference) - Entities owned by userentity.follows(Array ofEntityReference) - Entities followed by userentity.timezone(string) - User timezoneentity.externalId(string) - External identifierentity.scimUserName(string) - SCIM usernameentity.displayName(string) - Display nameentity.description(string) - User biography
ApiService
Schema:entity/services/apiService.json
Description: An API Service represents a service that exposes APIs and endpoints (e.g., REST APIs, GraphQL services).
ApiService-Specific Fields:
entity.serviceType(string) - Type of API service (REST, GRAPHQL)entity.connection(object) - Connection configuration object
The available properties vary by entity type. Use conditionals to handle missing properties gracefully (see examples below).
System/Configuration Properties
Properties injected into the context for system and notification configuration. These are extracted from the EventSubscription and system settings: Available Properties:
Example Usage:
buildEntityUrl helper which does this automatically:
Accessing Change Details
When an entity is updated, theevent.changeDescription object contains information about what changed. Use the groupEventChanges helper to organize this data:
Change Object Properties
Each change object inupdates, adds, or deletes arrays contains:
Complete Example
Here’s a comprehensive example using multiple objects and entity-specific properties:Handling Missing Data
Not all properties exist for all entity types. Always use conditionals to prevent empty sections:Check Before Use
Hide Entire Section if Empty
Show Default Value
Entity Type Specific Logic
Performance Considerations
When accessing data in templates:- Avoid deep nesting - Access nested properties directly rather than looping
- Use helpers efficiently - Combine helpers rather than nesting loops
- Limit output - Use the
limithelper for large arrays - Check array existence - Use
gt (length array) 0before iterating
Next Steps
- Learn helpers → Custom Helpers Reference
- Create templates → Create and Manage Templates