{ "$schema": "http://json-schema.org/draft-04/schema#", "$ref": "#/definitions/Event", "definitions": { "Event": { "properties": { "workspace": { "type": "string" }, "event_id": { "type": "string" }, "event_time": { "type": "string", "format": "date-time" }, "event_type": { "enum": [ "EVENT_TYPE_UNSPECIFIED", "EVENT_TYPE_PING", "EVENT_TYPE_ISSUE_CREATED", "EVENT_TYPE_ISSUE_UPDATED", "EVENT_TYPE_ISSUE_STATUS_UPDATED", "EVENT_TYPE_ISSUE_CLOSED" ], "type": "string", "title": "Event Type" }, "ping": { "$ref": "#/definitions/synq.webhooks.v1.Ping", "additionalProperties": true }, "issue_created": { "$ref": "#/definitions/synq.webhooks.v1.IssueCreated", "additionalProperties": true }, "issue_updated": { "$ref": "#/definitions/synq.webhooks.v1.IssueUpdated", "additionalProperties": true }, "issue_status_updated": { "$ref": "#/definitions/synq.webhooks.v1.IssueStatusUpdated", "additionalProperties": true }, "issue_closed": { "$ref": "#/definitions/synq.webhooks.v1.IssueClosed", "additionalProperties": true }, "callbacks": { "items": { "$ref": "#/definitions/synq.webhooks.v1.Callback" }, "type": "array" } }, "additionalProperties": true, "type": "object", "oneOf": [ { "required": [ "ping" ] }, { "required": [ "issue_created" ] }, { "required": [ "issue_updated" ] }, { "required": [ "issue_status_updated" ] }, { "required": [ "issue_closed" ] } ], "title": "Event" }, "synq.entities.v1.AirflowDagIdentifier": { "properties": { "integration_id": { "type": "string", "description": "Synq integration_id that identifies the Airflow instance" }, "dag_id": { "type": "string", "description": "Airflow dag_id that identifies the DAG" } }, "additionalProperties": true, "type": "object", "title": "Airflow Dag Identifier" }, "synq.entities.v1.AirflowTaskIdentifier": { "properties": { "integration_id": { "type": "string", "description": "Synq integration_id that identifies the Airflow instance" }, "dag_id": { "type": "string", "description": "Airflow dag_id that identifies the DAG" }, "task_id": { "type": "string", "description": "Airflow task_id that identifies the task within the DAG" } }, "additionalProperties": true, "type": "object", "title": "Airflow Task Identifier" }, "synq.entities.v1.BigqueryTableIdentifier": { "properties": { "project": { "type": "string", "description": "BigQuery project" }, "dataset": { "type": "string", "description": "BigQuery dataset id" }, "table": { "type": "string", "description": "BigQuery table name" } }, "additionalProperties": true, "type": "object", "title": "DATA PLATFORMS", "description": "DATA PLATFORMS" }, "synq.entities.v1.ClickhouseTableIdentifier": { "properties": { "host": { "type": "string", "description": "Clickhouse host inclusive of port" }, "schema": { "type": "string", "description": "Clickhouse database" }, "table": { "type": "string", "description": "Clickhouse table" } }, "additionalProperties": true, "type": "object", "title": "Clickhouse Table Identifier" }, "synq.entities.v1.CustomIdentifier": { "properties": { "id": { "type": "string", "description": "Id that identifies the custom entity The Id should be unique within the custom entity Identifier." } }, "additionalProperties": true, "type": "object", "title": "CUSTOM", "description": "CUSTOM" }, "synq.entities.v1.DatabricksTableIdentifier": { "properties": { "workspace": { "type": "string", "description": "URL of Databricks workspace" }, "catalog": { "type": "string", "description": "Databricks catalog" }, "schema": { "type": "string", "description": "Databricks schema" }, "table": { "type": "string", "description": "Databricks table or view" } }, "additionalProperties": true, "type": "object", "title": "Databricks Table Identifier" }, "synq.entities.v1.DataproductIdentifier": { "properties": { "id": { "type": "string", "description": "Dataproduct id that identifies the Dataproduct" } }, "additionalProperties": true, "type": "object", "title": "DATAPRODUCT", "description": "DATAPRODUCT" }, "synq.entities.v1.DbtCloudNodeIdentifier": { "properties": { "project_id": { "type": "string", "description": "Your dbt Cloud project id" }, "account_id": { "type": "string", "description": "Your dbt Cloud account id" }, "node_id": { "type": "string", "description": "Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)" } }, "additionalProperties": true, "type": "object", "title": "Dbt Cloud Node Identifier" }, "synq.entities.v1.DbtCoreNodeIdentifier": { "properties": { "integration_id": { "type": "string", "description": "Synq integration_id that identifies the dbt Core project" }, "node_id": { "type": "string", "description": "Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)" } }, "additionalProperties": true, "type": "object", "title": "DBT", "description": "DBT" }, "synq.entities.v1.Identifier": { "properties": { "dbt_core_node": { "$ref": "#/definitions/synq.entities.v1.DbtCoreNodeIdentifier", "additionalProperties": true, "description": "Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Core project" }, "dbt_cloud_node": { "$ref": "#/definitions/synq.entities.v1.DbtCloudNodeIdentifier", "additionalProperties": true, "description": "Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Cloud project" }, "bigquery_table": { "$ref": "#/definitions/synq.entities.v1.BigqueryTableIdentifier", "additionalProperties": true, "description": "BigQuery table identifier" }, "snowflake_table": { "$ref": "#/definitions/synq.entities.v1.SnowflakeTableIdentifier", "additionalProperties": true, "description": "Snowflake table identifier" }, "redshift_table": { "$ref": "#/definitions/synq.entities.v1.RedshiftTableIdentifier", "additionalProperties": true, "description": "Redshift table identifier" }, "postgres_table": { "$ref": "#/definitions/synq.entities.v1.PostgresTableIdentifier", "additionalProperties": true, "description": "Postgres table identifier" }, "mysql_table": { "$ref": "#/definitions/synq.entities.v1.MysqlTableIdentifier", "additionalProperties": true, "description": "Mysql table identifier" }, "clickhouse_table": { "$ref": "#/definitions/synq.entities.v1.ClickhouseTableIdentifier", "additionalProperties": true, "description": "Clickhouse table identifier" }, "databricks_table": { "$ref": "#/definitions/synq.entities.v1.DatabricksTableIdentifier", "additionalProperties": true, "description": "Databricks table identifier" }, "airflow_dag": { "$ref": "#/definitions/synq.entities.v1.AirflowDagIdentifier", "additionalProperties": true, "description": "Airflow DAG identifier" }, "airflow_task": { "$ref": "#/definitions/synq.entities.v1.AirflowTaskIdentifier", "additionalProperties": true, "description": "Airflow task identifier within a given DAG" }, "custom": { "$ref": "#/definitions/synq.entities.v1.CustomIdentifier", "additionalProperties": true, "description": "Custom identifier to be used with all custom created entities" }, "dataproduct": { "$ref": "#/definitions/synq.entities.v1.DataproductIdentifier", "additionalProperties": true, "description": "Dataproduct identifier" }, "synq_path": { "$ref": "#/definitions/synq.entities.v1.SynqPathIdentifier", "additionalProperties": true, "description": "SynqPath identifier" } }, "additionalProperties": true, "type": "object", "oneOf": [ { "required": [ "dbt_core_node" ] }, { "required": [ "dbt_cloud_node" ] }, { "required": [ "bigquery_table" ] }, { "required": [ "snowflake_table" ] }, { "required": [ "redshift_table" ] }, { "required": [ "postgres_table" ] }, { "required": [ "mysql_table" ] }, { "required": [ "clickhouse_table" ] }, { "required": [ "databricks_table" ] }, { "required": [ "airflow_dag" ] }, { "required": [ "airflow_task" ] }, { "required": [ "custom" ] }, { "required": [ "dataproduct" ] }, { "required": [ "synq_path" ] } ], "title": "Identifier", "description": "Identifier is a unique reference to an entity in Synq system. Entity identifiers are designed to closely mimic identifiers used by data platforms and tools. To construct an identifier, you need to know the kind of the entity and the ids that you would normally use to identify it in the data platform or tool. For example, to identify a table in BigQuery, you would need to know the project, dataset, and table names." }, "synq.entities.v1.MysqlTableIdentifier": { "properties": { "host": { "type": "string", "description": "Mysql host inclusive of port" }, "schema": { "type": "string", "description": "Mysql database" }, "table": { "type": "string", "description": "Mysql table" } }, "additionalProperties": true, "type": "object", "title": "Mysql Table Identifier" }, "synq.entities.v1.PostgresTableIdentifier": { "properties": { "host": { "type": "string", "description": "Postgres host inclusive of port" }, "database": { "type": "string", "description": "Postgres database" }, "schema": { "type": "string", "description": "Postgres schema" }, "table": { "type": "string", "description": "Postgres table" } }, "additionalProperties": true, "type": "object", "title": "Postgres Table Identifier" }, "synq.entities.v1.RedshiftTableIdentifier": { "properties": { "cluster": { "type": "string", "description": "Redshift cluster" }, "database": { "type": "string", "description": "Redshift database" }, "schema": { "type": "string", "description": "Redshift schema" }, "table": { "type": "string", "description": "Redshift table" } }, "additionalProperties": true, "type": "object", "title": "Redshift Table Identifier" }, "synq.entities.v1.SnowflakeTableIdentifier": { "properties": { "account": { "type": "string", "description": "Snowflake account" }, "database": { "type": "string", "description": "Snowflake database" }, "schema": { "type": "string", "description": "Snowflake schema" }, "table": { "type": "string", "description": "Snowflake table" } }, "additionalProperties": true, "type": "object", "title": "Snowflake Table Identifier" }, "synq.entities.v1.SynqPathIdentifier": { "properties": { "path": { "type": "string", "description": "Synq path that identifies the Synq entity, needs to be one of supported paths" } }, "additionalProperties": true, "type": "object", "title": "SYNQ PATH", "description": "SYNQ PATH" }, "synq.issues.actor.v1.Actor": { "properties": { "name": { "type": "string" }, "slack": { "$ref": "#/definitions/synq.issues.actor.v1.SlackUser", "additionalProperties": true }, "email": { "$ref": "#/definitions/synq.issues.actor.v1.EmailUser", "additionalProperties": true }, "pagerduty": { "$ref": "#/definitions/synq.issues.actor.v1.PagerdutyUser", "additionalProperties": true } }, "additionalProperties": true, "type": "object", "oneOf": [ { "required": [ "slack" ] }, { "required": [ "email" ] }, { "required": [ "pagerduty" ] } ], "title": "Actor" }, "synq.issues.actor.v1.EmailUser": { "properties": { "user_email": { "type": "string" } }, "additionalProperties": true, "type": "object", "title": "Email User" }, "synq.issues.actor.v1.PagerdutyUser": { "properties": { "user_id": { "type": "string" } }, "additionalProperties": true, "type": "object", "title": "Pagerduty User" }, "synq.issues.actor.v1.SlackUser": { "properties": { "user_id": { "type": "string" } }, "additionalProperties": true, "type": "object", "title": "Slack User" }, "synq.issues.commands.v1.IssuesCommand": { "properties": { "workspace": { "type": "string" }, "mark_investigating": { "$ref": "#/definitions/synq.issues.issues.v1.MarkInvestigatingRequest", "additionalProperties": true }, "mark_fixed": { "$ref": "#/definitions/synq.issues.issues.v1.MarkFixedRequest", "additionalProperties": true }, "mark_expected": { "$ref": "#/definitions/synq.issues.issues.v1.MarkExpectedRequest", "additionalProperties": true }, "mark_no_action_needed": { "$ref": "#/definitions/synq.issues.issues.v1.MarkNoActionNeededRequest", "additionalProperties": true }, "post_comment": { "$ref": "#/definitions/synq.issues.issues.v1.PostCommentRequest", "additionalProperties": true } }, "additionalProperties": true, "type": "object", "oneOf": [ { "required": [ "mark_investigating" ] }, { "required": [ "mark_fixed" ] }, { "required": [ "mark_expected" ] }, { "required": [ "mark_no_action_needed" ] }, { "required": [ "post_comment" ] } ], "title": "Issues Command", "description": "Not to be used directly. Use the IssuesService instead when calling via API." }, "synq.issues.issues.v1.MarkExpectedRequest": { "properties": { "issue_id": { "type": "string", "description": "ID of the issue to mark as expected." }, "actor": { "$ref": "#/definitions/synq.issues.actor.v1.Actor", "additionalProperties": true, "description": "Actor marking the issue as expected." } }, "additionalProperties": true, "type": "object", "title": "Mark Expected Request" }, "synq.issues.issues.v1.MarkFixedRequest": { "properties": { "issue_id": { "type": "string", "description": "ID of the issue to mark as fixed." }, "actor": { "$ref": "#/definitions/synq.issues.actor.v1.Actor", "additionalProperties": true, "description": "Actor marking the issue as fixed." } }, "additionalProperties": true, "type": "object", "title": "Mark Fixed Request" }, "synq.issues.issues.v1.MarkInvestigatingRequest": { "properties": { "issue_id": { "type": "string", "description": "ID of the issue to mark as investigating." }, "actor": { "$ref": "#/definitions/synq.issues.actor.v1.Actor", "additionalProperties": true, "description": "Actor marking the issue as investigating." } }, "additionalProperties": true, "type": "object", "title": "Mark Investigating Request" }, "synq.issues.issues.v1.MarkNoActionNeededRequest": { "properties": { "issue_id": { "type": "string", "description": "ID of the issue to mark as no action needed." }, "actor": { "$ref": "#/definitions/synq.issues.actor.v1.Actor", "additionalProperties": true, "description": "Actor marking the issue as no action needed." } }, "additionalProperties": true, "type": "object", "title": "Mark No Action Needed Request" }, "synq.issues.issues.v1.PostCommentRequest": { "properties": { "issue_id": { "type": "string", "description": "ID of the issue to post a comment on." }, "actor": { "$ref": "#/definitions/synq.issues.actor.v1.Actor", "additionalProperties": true, "description": "Actor posting the comment." }, "comment": { "type": "string", "description": "Comment to post." } }, "additionalProperties": true, "type": "object", "title": "Post Comment Request" }, "synq.webhooks.v1.Callback": { "properties": { "url": { "type": "string" }, "action_name": { "type": "string" }, "issues_command": { "$ref": "#/definitions/synq.issues.commands.v1.IssuesCommand", "additionalProperties": true } }, "additionalProperties": true, "type": "object", "oneOf": [ { "required": [ "issues_command" ] } ], "title": "Callback" }, "synq.webhooks.v1.IssueClosed": { "properties": { "issue": { "$ref": "#/definitions/synq.webhooks.v1.IssueSummary", "additionalProperties": true } }, "additionalProperties": true, "type": "object", "title": "Issue Closed" }, "synq.webhooks.v1.IssueCreated": { "properties": { "issue": { "$ref": "#/definitions/synq.webhooks.v1.IssueSummary", "additionalProperties": true } }, "additionalProperties": true, "type": "object", "title": "Issue Created" }, "synq.webhooks.v1.IssueStatusUpdated": { "properties": { "issue": { "$ref": "#/definitions/synq.webhooks.v1.IssueSummary", "additionalProperties": true } }, "additionalProperties": true, "type": "object", "title": "Issue Status Updated" }, "synq.webhooks.v1.IssueSummary": { "properties": { "issue_id": { "type": "string" }, "issue_group_id": { "type": "string" }, "issue_url": { "type": "string" }, "title": { "type": "string", "description": "Summary of the issue, what happened and where." }, "description": { "type": "string", "description": "Detailed description of the issue." }, "trigger_entity": { "$ref": "#/definitions/synq.webhooks.v1.IssueSummary.IssueEntity", "additionalProperties": true, "description": "Entity which triggered the issue." }, "directly_affected_entities": { "items": { "$ref": "#/definitions/synq.webhooks.v1.IssueSummary.IssueEntity" }, "type": "array", "description": "Entities directly affected by the issue, not considering downstream ones." }, "started_at": { "type": "string", "description": "Time when the issue was triggered.", "format": "date-time" }, "ended_at": { "type": "string", "description": "Time when the issue was closed.", "format": "date-time" }, "trigger_run_id": { "type": "string" }, "trigger_name": { "type": "string" }, "trigger_message": { "type": "string" }, "status": { "enum": [ "ISSUE_STATUS_UNSPECIFIED", "ISSUE_STATUS_INVESTIGATING", "ISSUE_STATUS_EXPECTED", "ISSUE_STATUS_FIXED", "ISSUE_STATUS_NO_ACTION_NEEDED" ], "type": "string", "title": "Issue Status" } }, "additionalProperties": true, "type": "object", "oneOf": [ { "required": [ "ended_at" ] } ], "title": "Issue Summary" }, "synq.webhooks.v1.IssueSummary.IssueEntity": { "properties": { "name": { "type": "string" }, "type_name": { "type": "string" }, "identifier": { "$ref": "#/definitions/synq.entities.v1.Identifier", "additionalProperties": true }, "folder": { "type": "string" }, "entity_url": { "type": "string" } }, "additionalProperties": true, "type": "object", "oneOf": [ { "required": [ "folder" ] } ], "title": "Issue Entity" }, "synq.webhooks.v1.IssueUpdated": { "properties": { "issue": { "$ref": "#/definitions/synq.webhooks.v1.IssueSummary", "additionalProperties": true } }, "additionalProperties": true, "type": "object", "title": "Issue Updated" }, "synq.webhooks.v1.Ping": { "properties": { "message": { "type": "string" } }, "additionalProperties": true, "type": "object", "title": "Ping", "description": "Test event sent during a webhook setup." } } }