Pagination. Omitting this, or sending a zero page_size, returns every
matching feature in one response — there is no server-side default page
size. Set page_size to bound the response; pass page_info.last_id from the
previous response as the cursor to fetch the next page.
Paging information for this response. Always populated. Repeat the request
passing page_info.last_id as pagination.cursor until last_id comes back
empty to walk the whole result set.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Coalesce Quality Documentation","colors":{"primary":"#135594","light":"#e8f0f8","dark":"#0d3966"},"logo":{"light":"https://mintcdn.com/synq-15/VrNXC6Gv5xCECUGd/logo/coalesce-quality-logo.svg?fit=max\u0026auto=format\u0026n=VrNXC6Gv5xCECUGd\u0026q=85\u0026s=4ad60b616ed815902c710f413d59cf63","dark":"https://mintcdn.com/synq-15/VrNXC6Gv5xCECUGd/logo/coalesce-quality-logo-white.svg?fit=max\u0026auto=format\u0026n=VrNXC6Gv5xCECUGd\u0026q=85\u0026s=4d8c4a954595c0dfd25bfdf645e6cb56"},"favicon":{"light":"https://mintcdn.com/synq-15/xb0Db-MnOw_Ojah5/favicon.svg?fit=max\u0026auto=format\u0026n=xb0Db-MnOw_Ojah5\u0026q=85\u0026s=860c7081b896f01fe24af1c330da1796","dark":"https://mintcdn.com/synq-15/qs0RRq4z_2GWyKyp/favicon-dark.svg?fit=max\u0026auto=format\u0026n=qs0RRq4z_2GWyKyp\u0026q=85\u0026s=b740f42e7f6972f91d62be5b2840c805"},"navbar":{"links":[{"href":"https://coalesce.io/product/quality/","label":"Website"},{"href":"https://coalesce.io/product/request-demo/","label":"Book a Demo"}],"primary":{"type":"button","label":"Coalesce Quality Platform","href":"https://app.synq.io"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/coalesceio"}},"integrations":{"ga4":{"measurementId":"G-P55J2JTKF1"}},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://coalesce.io/resources/"},{"anchor":"Changelog","icon":"rocket","href":"https://synq.io/changelog"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"synq-15","hasAudioNarration":false,"actualSubdomain":"synq-15","customDomains":["docs.synq.io"],"gitSource":{"type":"github","owner":"getsynq","repo":"docs","deployBranch":"master","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aec448c9c320f62bb68a047","collectionId":"0a050633-d71d-47aa-b153-2112b0817db0","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aec448c9c320f62bb68a047"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aec4c0ab60c5e999975fa09","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"Documentation","count":450},{"language":"default","tag":"Developer API","count":342},{"language":"default","tag":"REST API","count":331},{"language":"default","tag":"synq.incidents.v1.IncidentsService","count":14},{"language":"default","tag":"Monitors","count":13},{"language":"default","tag":"Reconciliations","count":13},{"language":"default","tag":"synq.alerts.services.v2.AlertsService","count":13},{"language":"default","tag":"synq.monitors.automated_monitors.v1.DeploymentRulesService","count":12},{"language":"default","tag":"synq.domains.v2.DomainsService","count":10},{"language":"default","tag":"synq.users.v1.UsersService","count":10}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"global.css","content":".dark img[src^=\"/images/\"]{background:white;border-radius:0.5rem;padding:4px}"}],"page":{"pagePath":"api-reference/synqentitiescustomv1featuresservice/listentityfeatures","slug":"/api-reference/synqentitiescustomv1featuresservice/listentityfeatures","pageMetadata":{"title":"ListEntityFeatures","description":"List the features of one entity, or of every custom entity in the\n workspace when entity_id is left unset.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/custom/v1/features/list","href":"/api-reference/synqentitiescustomv1featuresservice/listentityfeatures","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"List the features of one entity, or of every custom entity in the\\nworkspace when entity_id is left unset.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"ListEntityFeatures","description":"List the features of one entity, or of every custom entity in the\n workspace when entity_id is left unset.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/custom/v1/features/list","href":"/api-reference/synqentitiescustomv1featuresservice/listentityfeatures","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/synq-15/7fe5b7dda612017d/region.js"],"openApiReferenceData":{"operation":{"tags":["synq.entities.custom.v1.FeaturesService"],"summary":"ListEntityFeatures","description":"List the features of one entity, or of every custom entity in the\n workspace when entity_id is left unset.","operationId":"synq.entities.custom.v1.FeaturesService.ListEntityFeatures","requestBody":"573815a3-8142-4faf-83ac-a8359f46253e","responses":{"200":"816cb5d0-f81d-4cb1-bdd6-1f887c2609a9"},"method":"post","type":"path","servers":["669c6e56-9702-4ed2-896e-cea41abbf730","9a0b8ed5-0b97-421b-bed5-1f396869feae","d0c655c0-3191-437a-9d11-53da28e361f0"],"security":["dd5880af-cdf1-4521-98fa-c871340142d2"],"path":"/api/entities/custom/v1/features/list","baseUrlOptions":["https://developer.synq.io","https://api.us.synq.io","https://api.au.synq.io"],"title":"ListEntityFeatures","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"entityId":{"oneOf":[{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["airflowDag"],"properties":{"airflowDag":{"type":"object","properties":{"integrationId":{"type":"string","description":"Coalesce Quality integration_id that identifies the Airflow instance","isRequired":true,"uniqueKey":"entityId.oneOf.0.airflowDag.integrationId","typeLabel":"string"},"dagId":{"type":"string","description":"Airflow dag_id that identifies the DAG","isRequired":true,"uniqueKey":"entityId.oneOf.0.airflowDag.dagId","typeLabel":"string"}},"title":"airflow_dag","required":["integrationId","dagId"],"additionalProperties":false,"description":"Airflow DAG identifier","isRequired":true,"uniqueKey":"entityId.oneOf.0.airflowDag","typeLabel":"airflow_dag · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.0.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.0","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["airflowTask"],"properties":{"airflowTask":{"type":"object","properties":{"integrationId":{"type":"string","description":"Coalesce Quality integration_id that identifies the Airflow instance","isRequired":true,"uniqueKey":"entityId.oneOf.1.airflowTask.integrationId","typeLabel":"string"},"dagId":{"type":"string","description":"Airflow dag_id that identifies the DAG","isRequired":true,"uniqueKey":"entityId.oneOf.1.airflowTask.dagId","typeLabel":"string"},"taskId":{"type":"string","description":"Airflow task_id that identifies the task within the DAG","isRequired":true,"uniqueKey":"entityId.oneOf.1.airflowTask.taskId","typeLabel":"string"}},"title":"airflow_task","required":["integrationId","dagId","taskId"],"additionalProperties":false,"description":"Airflow task identifier within a given DAG","isRequired":true,"uniqueKey":"entityId.oneOf.1.airflowTask","typeLabel":"airflow_task · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.1.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.1","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["athenaTable"],"properties":{"athenaTable":{"type":"object","properties":{"instance":{"type":"string","description":"AWS account and region the Athena workgroup runs in, formatted as\n \"\u003caccount-id>.\u003cregion>\" (e.g. \"123456789012.eu-west-1\"). Auto-derived\n from sts:GetCallerIdentity at integration setup time.","isRequired":true,"uniqueKey":"entityId.oneOf.2.athenaTable.instance","typeLabel":"string"},"catalog":{"type":"string","description":"Glue Data Catalog name. Almost always \"AwsDataCatalog\" — the default\n catalog for Athena unless the customer registered a federated catalog.","isRequired":true,"uniqueKey":"entityId.oneOf.2.athenaTable.catalog","typeLabel":"string"},"database":{"type":"string","description":"Glue database (the namespace users typically filter on).","isRequired":true,"uniqueKey":"entityId.oneOf.2.athenaTable.database","typeLabel":"string"},"table":{"type":"string","description":"Glue table or view name.","isRequired":true,"uniqueKey":"entityId.oneOf.2.athenaTable.table","typeLabel":"string"}},"title":"athena_table","required":["instance","catalog","database","table"],"additionalProperties":false,"description":"Amazon Athena (Glue) table identifier","isRequired":true,"uniqueKey":"entityId.oneOf.2.athenaTable","typeLabel":"athena_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.2.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.2","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["bigqueryTable"],"properties":{"bigqueryTable":{"type":"object","properties":{"project":{"type":"string","description":"BigQuery project","isRequired":true,"uniqueKey":"entityId.oneOf.3.bigqueryTable.project","typeLabel":"string"},"dataset":{"type":"string","description":"BigQuery dataset id","isRequired":true,"uniqueKey":"entityId.oneOf.3.bigqueryTable.dataset","typeLabel":"string"},"table":{"type":"string","description":"BigQuery table name","isRequired":true,"uniqueKey":"entityId.oneOf.3.bigqueryTable.table","typeLabel":"string"}},"title":"bigquery_table","required":["project","dataset","table"],"additionalProperties":false,"description":"BigQuery table identifier","isRequired":true,"uniqueKey":"entityId.oneOf.3.bigqueryTable","typeLabel":"bigquery_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.3.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.3","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["clickhouseTable"],"properties":{"clickhouseTable":{"type":"object","properties":{"host":{"type":"string","description":"Clickhouse hostname without port","isRequired":true,"uniqueKey":"entityId.oneOf.4.clickhouseTable.host","typeLabel":"string"},"schema":{"type":"string","description":"Clickhouse database","isRequired":true,"uniqueKey":"entityId.oneOf.4.clickhouseTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Clickhouse table","isRequired":true,"uniqueKey":"entityId.oneOf.4.clickhouseTable.table","typeLabel":"string"}},"title":"clickhouse_table","required":["host","schema","table"],"additionalProperties":false,"description":"Clickhouse table identifier","isRequired":true,"uniqueKey":"entityId.oneOf.4.clickhouseTable","typeLabel":"clickhouse_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.4.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.4","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["custom"],"properties":{"custom":{"type":"object","properties":{"id":{"type":"string","description":"Id that identifies the custom entity\n The Id should be unique within the custom entity Identifier.","isRequired":true,"uniqueKey":"entityId.oneOf.5.custom.id","typeLabel":"string"}},"title":"custom","required":["id"],"additionalProperties":false,"description":"Custom identifier to be used with all custom created entities","isRequired":true,"uniqueKey":"entityId.oneOf.5.custom","typeLabel":"custom · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.5.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.5","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["databricksTable"],"properties":{"databricksTable":{"type":"object","properties":{"workspace":{"type":"string","description":"URL of Databricks workspace","isRequired":true,"uniqueKey":"entityId.oneOf.6.databricksTable.workspace","typeLabel":"string"},"catalog":{"type":"string","description":"Databricks catalog","isRequired":true,"uniqueKey":"entityId.oneOf.6.databricksTable.catalog","typeLabel":"string"},"schema":{"type":"string","description":"Databricks schema","isRequired":true,"uniqueKey":"entityId.oneOf.6.databricksTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Databricks table or view","isRequired":true,"uniqueKey":"entityId.oneOf.6.databricksTable.table","typeLabel":"string"}},"title":"databricks_table","required":["workspace","catalog","schema","table"],"additionalProperties":false,"description":"Databricks table identifier","isRequired":true,"uniqueKey":"entityId.oneOf.6.databricksTable","typeLabel":"databricks_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.6.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.6","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["dataproduct"],"properties":{"dataproduct":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Dataproduct id that identifies the Dataproduct","isRequired":true,"uniqueKey":"entityId.oneOf.7.dataproduct.id","typeLabel":"string\u003cuuid>"}},"title":"dataproduct","required":["id"],"additionalProperties":false,"description":"Dataproduct identifier","isRequired":true,"uniqueKey":"entityId.oneOf.7.dataproduct","typeLabel":"dataproduct · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.7.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.7","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["db2Table"],"properties":{"db2Table":{"type":"object","properties":{"host":{"type":"string","description":"Host name of the Db2 server","isRequired":true,"uniqueKey":"entityId.oneOf.8.db2Table.host","typeLabel":"string"},"database":{"type":"string","description":"Database name or alias, as in `CONNECT TO \u003cdatabase>`","isRequired":true,"uniqueKey":"entityId.oneOf.8.db2Table.database","typeLabel":"string"},"schema":{"type":"string","description":"Db2 schema (e.g. \"DB2INST1\")","isRequired":true,"uniqueKey":"entityId.oneOf.8.db2Table.schema","typeLabel":"string"},"table":{"type":"string","description":"Db2 table or view","isRequired":true,"uniqueKey":"entityId.oneOf.8.db2Table.table","typeLabel":"string"}},"title":"db2_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"IBM Db2 LUW table identifier","isRequired":true,"uniqueKey":"entityId.oneOf.8.db2Table","typeLabel":"db2_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.8.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.8","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["dbtCloudNode"],"properties":{"dbtCloudNode":{"type":"object","properties":{"projectId":{"type":"string","description":"Your dbt Cloud project id","isRequired":true,"uniqueKey":"entityId.oneOf.9.dbtCloudNode.projectId","typeLabel":"string"},"nodeId":{"type":"string","description":"Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)","isRequired":true,"uniqueKey":"entityId.oneOf.9.dbtCloudNode.nodeId","typeLabel":"string"},"accountId":{"type":"string","description":"Your dbt Cloud account id","uniqueKey":"entityId.oneOf.9.dbtCloudNode.accountId","typeLabel":"string"}},"title":"dbt_cloud_node","required":["projectId","nodeId"],"additionalProperties":false,"description":"Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Cloud project","isRequired":true,"uniqueKey":"entityId.oneOf.9.dbtCloudNode","typeLabel":"dbt_cloud_node · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.9.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.9","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["dbtCoreNode"],"properties":{"dbtCoreNode":{"type":"object","properties":{"integrationId":{"type":"string","description":"Opaque identifier of the dbt Core project. Usually the Coalesce Quality\n integration id (a UUID), but may also be the dbt project name from\n manifest.json when the integration is configured to identify assets by\n project name. Treat it as an opaque string, not a UUID.","isRequired":true,"uniqueKey":"entityId.oneOf.10.dbtCoreNode.integrationId","typeLabel":"string"},"nodeId":{"type":"string","description":"Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)","isRequired":true,"uniqueKey":"entityId.oneOf.10.dbtCoreNode.nodeId","typeLabel":"string"}},"title":"dbt_core_node","required":["integrationId","nodeId"],"additionalProperties":false,"description":"Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Core project","isRequired":true,"uniqueKey":"entityId.oneOf.10.dbtCoreNode","typeLabel":"dbt_core_node · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.10.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.10","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["fabricTable"],"properties":{"fabricTable":{"type":"object","properties":{"instance":{"type":"string","description":"Workspace SQL analytics endpoint host, e.g.\n \"\u003cworkspace-id>.datawarehouse.fabric.microsoft.com\".","isRequired":true,"uniqueKey":"entityId.oneOf.11.fabricTable.instance","typeLabel":"string"},"database":{"type":"string","description":"Fabric warehouse / lakehouse (database).","isRequired":true,"uniqueKey":"entityId.oneOf.11.fabricTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Schema within the database.","isRequired":true,"uniqueKey":"entityId.oneOf.11.fabricTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Table or view name.","isRequired":true,"uniqueKey":"entityId.oneOf.11.fabricTable.table","typeLabel":"string"},"workspaceId":{"type":"string","description":"Fabric workspace GUID, decoded from the endpoint host in `instance`.\n Optional and informational: the table is addressed by\n instance/database/schema/table, so leave it empty if you don't have it —\n it does not affect how the identifier resolves.","uniqueKey":"entityId.oneOf.11.fabricTable.workspaceId","typeLabel":"string"},"tenantId":{"type":"string","description":"Entra (Azure AD) tenant GUID, decoded from the endpoint host in `instance`.\n Optional and informational, like workspace_id.","uniqueKey":"entityId.oneOf.11.fabricTable.tenantId","typeLabel":"string"}},"title":"fabric_table","required":["instance","database","schema","table"],"additionalProperties":false,"description":"Microsoft Fabric table identifier","isRequired":true,"uniqueKey":"entityId.oneOf.11.fabricTable","typeLabel":"fabric_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.11.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.11","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["monitor"],"properties":{"monitor":{"type":"object","properties":{"monitoredId":{"$circularRef":"692f0410-0d1f-42ff-a19a-f76d7c4a48ee","description":"Identifier of the monitored entity","isRequired":true,"uniqueKey":"entityId.oneOf.12.monitor.monitoredId","typeLabel":"any"},"monitorId":{"type":"string","description":"Identifier of the monitor","isRequired":true,"uniqueKey":"entityId.oneOf.12.monitor.monitorId","typeLabel":"string"},"segment":{"oneOf":[{"type":"string","description":"Optional monitor segmentation identifier","uniqueKey":"entityId.oneOf.12.monitor.segment.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional monitor segmentation identifier","uniqueKey":"entityId.oneOf.12.monitor.segment.oneOf.1","typeLabel":"null"}],"uniqueKey":"entityId.oneOf.12.monitor.segment","typeLabel":"string | null"},"integrationId":{"oneOf":[{"type":"string","description":"Coalesce Quality integration_id of the monitored identifier","deprecated":true,"uniqueKey":"entityId.oneOf.12.monitor.integrationId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Coalesce Quality integration_id of the monitored identifier","deprecated":true,"uniqueKey":"entityId.oneOf.12.monitor.integrationId.oneOf.1","typeLabel":"null"}],"uniqueKey":"entityId.oneOf.12.monitor.integrationId","typeLabel":"string | null"}},"title":"monitor","required":["monitoredId","monitorId"],"additionalProperties":false,"description":"Monitor identifier","isRequired":true,"uniqueKey":"entityId.oneOf.12.monitor","typeLabel":"monitor · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.12.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.12","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["mssqlTable"],"properties":{"mssqlTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the SQL Server instance","isRequired":true,"uniqueKey":"entityId.oneOf.13.mssqlTable.host","typeLabel":"string"},"database":{"type":"string","description":"SQL Server database","isRequired":true,"uniqueKey":"entityId.oneOf.13.mssqlTable.database","typeLabel":"string"},"schema":{"type":"string","description":"SQL Server schema (e.g. \"dbo\")","isRequired":true,"uniqueKey":"entityId.oneOf.13.mssqlTable.schema","typeLabel":"string"},"table":{"type":"string","description":"SQL Server table or view","isRequired":true,"uniqueKey":"entityId.oneOf.13.mssqlTable.table","typeLabel":"string"}},"title":"mssql_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"SQL Server table identifier","isRequired":true,"uniqueKey":"entityId.oneOf.13.mssqlTable","typeLabel":"mssql_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.13.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.13","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["mysqlTable"],"properties":{"mysqlTable":{"type":"object","properties":{"host":{"type":"string","description":"Mysql hostname without port","isRequired":true,"uniqueKey":"entityId.oneOf.14.mysqlTable.host","typeLabel":"string"},"schema":{"type":"string","description":"Mysql database","isRequired":true,"uniqueKey":"entityId.oneOf.14.mysqlTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Mysql table","isRequired":true,"uniqueKey":"entityId.oneOf.14.mysqlTable.table","typeLabel":"string"}},"title":"mysql_table","required":["host","schema","table"],"additionalProperties":false,"description":"Mysql table identifier","isRequired":true,"uniqueKey":"entityId.oneOf.14.mysqlTable","typeLabel":"mysql_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.14.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.14","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["oracleTable"],"properties":{"oracleTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the Oracle instance","isRequired":true,"uniqueKey":"entityId.oneOf.15.oracleTable.host","typeLabel":"string"},"serviceName":{"type":"string","description":"Oracle service name (PDB)","isRequired":true,"uniqueKey":"entityId.oneOf.15.oracleTable.serviceName","typeLabel":"string"},"schema":{"type":"string","description":"Oracle schema (= owning user)","isRequired":true,"uniqueKey":"entityId.oneOf.15.oracleTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Oracle table or view","isRequired":true,"uniqueKey":"entityId.oneOf.15.oracleTable.table","typeLabel":"string"}},"title":"oracle_table","required":["host","serviceName","schema","table"],"additionalProperties":false,"description":"Oracle table identifier","isRequired":true,"uniqueKey":"entityId.oneOf.15.oracleTable","typeLabel":"oracle_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.15.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.15","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["postgresTable"],"properties":{"postgresTable":{"type":"object","properties":{"host":{"type":"string","description":"Postgres hostname without port","isRequired":true,"uniqueKey":"entityId.oneOf.16.postgresTable.host","typeLabel":"string"},"database":{"type":"string","description":"Postgres database","isRequired":true,"uniqueKey":"entityId.oneOf.16.postgresTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Postgres schema","isRequired":true,"uniqueKey":"entityId.oneOf.16.postgresTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Postgres table","isRequired":true,"uniqueKey":"entityId.oneOf.16.postgresTable.table","typeLabel":"string"}},"title":"postgres_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"Postgres table identifier","isRequired":true,"uniqueKey":"entityId.oneOf.16.postgresTable","typeLabel":"postgres_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.16.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.16","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["redshiftTable"],"properties":{"redshiftTable":{"type":"object","properties":{"database":{"type":"string","description":"Redshift database","isRequired":true,"uniqueKey":"entityId.oneOf.17.redshiftTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Redshift schema","isRequired":true,"uniqueKey":"entityId.oneOf.17.redshiftTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Redshift table","isRequired":true,"uniqueKey":"entityId.oneOf.17.redshiftTable.table","typeLabel":"string"},"cluster":{"type":"string","description":"Redshift cluster","uniqueKey":"entityId.oneOf.17.redshiftTable.cluster","typeLabel":"string"}},"title":"redshift_table","required":["database","schema","table"],"additionalProperties":false,"description":"Redshift table identifier","isRequired":true,"uniqueKey":"entityId.oneOf.17.redshiftTable","typeLabel":"redshift_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.17.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.17","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["savedView"],"properties":{"savedView":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Saved view id (client-supplied UUID) that identifies the saved view","isRequired":true,"uniqueKey":"entityId.oneOf.18.savedView.id","typeLabel":"string\u003cuuid>"}},"title":"saved_view","required":["id"],"additionalProperties":false,"description":"Saved view identifier","isRequired":true,"uniqueKey":"entityId.oneOf.18.savedView","typeLabel":"saved_view · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.18.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.18","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["snowflakeTable"],"properties":{"snowflakeTable":{"type":"object","properties":{"account":{"type":"string","description":"Snowflake account","isRequired":true,"uniqueKey":"entityId.oneOf.19.snowflakeTable.account","typeLabel":"string"},"database":{"type":"string","description":"Snowflake database","isRequired":true,"uniqueKey":"entityId.oneOf.19.snowflakeTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Snowflake schema","isRequired":true,"uniqueKey":"entityId.oneOf.19.snowflakeTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Snowflake table","isRequired":true,"uniqueKey":"entityId.oneOf.19.snowflakeTable.table","typeLabel":"string"}},"title":"snowflake_table","required":["account","database","schema","table"],"additionalProperties":false,"description":"Snowflake table identifier","isRequired":true,"uniqueKey":"entityId.oneOf.19.snowflakeTable","typeLabel":"snowflake_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.19.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.19","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["sqlMeshAudit"],"properties":{"sqlMeshAudit":{"type":"object","properties":{"integrationId":{"type":"string","format":"uuid","description":"Coalesce Quality integration_id that identifies the dbt Core project","isRequired":true,"uniqueKey":"entityId.oneOf.20.sqlMeshAudit.integrationId","typeLabel":"string\u003cuuid>"},"fqn":{"type":"string","description":"SQLMesh model fully qualified name","isRequired":true,"uniqueKey":"entityId.oneOf.20.sqlMeshAudit.fqn","typeLabel":"string"},"auditId":{"type":"string","description":"Identifier of the audit","isRequired":true,"uniqueKey":"entityId.oneOf.20.sqlMeshAudit.auditId","typeLabel":"string"}},"title":"sql_mesh_audit","required":["integrationId","fqn","auditId"],"additionalProperties":false,"description":"SQLMesh Audit identifier","isRequired":true,"uniqueKey":"entityId.oneOf.20.sqlMeshAudit","typeLabel":"sql_mesh_audit · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.20.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.20","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["sqlMeshModel"],"properties":{"sqlMeshModel":{"type":"object","properties":{"integrationId":{"type":"string","format":"uuid","description":"Coalesce Quality integration_id that identifies the dbt Core project","isRequired":true,"uniqueKey":"entityId.oneOf.21.sqlMeshModel.integrationId","typeLabel":"string\u003cuuid>"},"fqn":{"type":"string","description":"SQLMesh model fully qualified name","isRequired":true,"uniqueKey":"entityId.oneOf.21.sqlMeshModel.fqn","typeLabel":"string"}},"title":"sql_mesh_model","required":["integrationId","fqn"],"additionalProperties":false,"description":"SQLMesh Model identifier","isRequired":true,"uniqueKey":"entityId.oneOf.21.sqlMeshModel","typeLabel":"sql_mesh_model · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.21.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.21","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["synqPath"],"properties":{"synqPath":{"type":"object","properties":{"path":{"type":"string","description":"Coalesce Quality path that identifies the Coalesce Quality entity, needs to be one of supported paths","isRequired":true,"uniqueKey":"entityId.oneOf.22.synqPath.path","typeLabel":"string"}},"title":"synq_path","required":["path"],"additionalProperties":false,"description":"SynqPath identifier","isRequired":true,"uniqueKey":"entityId.oneOf.22.synqPath","typeLabel":"synq_path · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.22.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.22","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"Identifier of the entity to get features for. Leave unset to list the\n features of every custom entity in the workspace.","required":["trinoTable"],"properties":{"trinoTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the Trino instance","isRequired":true,"uniqueKey":"entityId.oneOf.23.trinoTable.host","typeLabel":"string"},"catalog":{"type":"string","description":"Trino catalog","isRequired":true,"uniqueKey":"entityId.oneOf.23.trinoTable.catalog","typeLabel":"string"},"schema":{"type":"string","description":"Trino schema","isRequired":true,"uniqueKey":"entityId.oneOf.23.trinoTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Trino table or view","isRequired":true,"uniqueKey":"entityId.oneOf.23.trinoTable.table","typeLabel":"string"}},"title":"trino_table","required":["host","catalog","schema","table"],"additionalProperties":false,"description":"Trino table identifier","isRequired":true,"uniqueKey":"entityId.oneOf.23.trinoTable","typeLabel":"trino_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"entityId.oneOf.23.entityId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"entityId.oneOf.23","typeLabel":"Identifier · object"}],"uniqueKey":"entityId","typeLabel":"Identifier · object"},"pagination":{"oneOf":[{"type":"object","properties":{"cursor":{"oneOf":[{"type":"string","description":"Opaque cursor token for the next page of results. If not provided, returns the first page.\n This is an encoded token that should be passed as-is from the previous PageInfo.last_id.","uniqueKey":"pagination.oneOf.0.cursor.oneOf.0","typeLabel":"string"},{"type":"null","description":"Opaque cursor token for the next page of results. If not provided, returns the first page.\n This is an encoded token that should be passed as-is from the previous PageInfo.last_id.","uniqueKey":"pagination.oneOf.0.cursor.oneOf.1","typeLabel":"null"}],"uniqueKey":"pagination.oneOf.0.cursor","typeLabel":"string | null"},"pageSize":{"oneOf":[{"type":"integer","minimum":0,"format":"int32","description":"Maximum number of items to return in a single page. If not provided, defaults vary per API.","uniqueKey":"pagination.oneOf.0.pageSize.oneOf.0","typeLabel":"integer\u003cint32>"},{"type":"null","minimum":0,"format":"int32","description":"Maximum number of items to return in a single page. If not provided, defaults vary per API.","uniqueKey":"pagination.oneOf.0.pageSize.oneOf.1","typeLabel":"null"}],"uniqueKey":"pagination.oneOf.0.pageSize","typeLabel":"integer\u003cint32> | null"}},"title":"Pagination","additionalProperties":false,"description":"Pagination. Omitting this, or sending a zero page_size, returns every\n matching feature in one response — there is no server-side default page\n size. Set page_size to bound the response; pass page_info.last_id from the\n previous response as the cursor to fetch the next page.","uniqueKey":"pagination.oneOf.0","typeLabel":"Pagination · object"},{"type":"null","properties":{"cursor":{"oneOf":[{"type":"string","description":"Opaque cursor token for the next page of results. If not provided, returns the first page.\n This is an encoded token that should be passed as-is from the previous PageInfo.last_id."},{"type":"null","description":"Opaque cursor token for the next page of results. If not provided, returns the first page.\n This is an encoded token that should be passed as-is from the previous PageInfo.last_id."}]},"pageSize":{"oneOf":[{"type":"integer","minimum":0,"format":"int32","description":"Maximum number of items to return in a single page. If not provided, defaults vary per API."},{"type":"null","minimum":0,"format":"int32","description":"Maximum number of items to return in a single page. If not provided, defaults vary per API."}]}},"title":"Pagination","additionalProperties":false,"description":"Pagination. Omitting this, or sending a zero page_size, returns every\n matching feature in one response — there is no server-side default page\n size. Set page_size to bound the response; pass page_info.last_id from the\n previous response as the cursor to fetch the next page.","uniqueKey":"pagination.oneOf.1","typeLabel":"null"}],"uniqueKey":"pagination","typeLabel":"Pagination · object | null"}},"title":"ListEntityFeaturesRequest","additionalProperties":false,"uniqueKey":"","typeLabel":"ListEntityFeaturesRequest · object"},"examples":{"Example":{"title":"Example","value":{"entityId":{"airflowDag":{"integrationId":"\u003cstring>","dagId":"\u003cstring>"},"entityId":"\u003cstring>"},"pagination":{"cursor":"\u003cstring>","pageSize":1}}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"816cb5d0-f81d-4cb1-bdd6-1f887c2609a9":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"features":{"type":"array","items":{"oneOf":[{"type":"object","title":"Feature","required":["entityId","checkCategory"],"properties":{"entityId":{"oneOf":[{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["airflowDag"],"properties":{"airflowDag":{"type":"object","properties":{"integrationId":{"type":"string","description":"Coalesce Quality integration_id that identifies the Airflow instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.0.airflowDag.integrationId","typeLabel":"string"},"dagId":{"type":"string","description":"Airflow dag_id that identifies the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.0.airflowDag.dagId","typeLabel":"string"}},"title":"airflow_dag","required":["integrationId","dagId"],"additionalProperties":false,"description":"Airflow DAG identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.0.airflowDag","typeLabel":"airflow_dag · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.0.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.0","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["airflowTask"],"properties":{"airflowTask":{"type":"object","properties":{"integrationId":{"type":"string","description":"Coalesce Quality integration_id that identifies the Airflow instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.1.airflowTask.integrationId","typeLabel":"string"},"dagId":{"type":"string","description":"Airflow dag_id that identifies the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.1.airflowTask.dagId","typeLabel":"string"},"taskId":{"type":"string","description":"Airflow task_id that identifies the task within the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.1.airflowTask.taskId","typeLabel":"string"}},"title":"airflow_task","required":["integrationId","dagId","taskId"],"additionalProperties":false,"description":"Airflow task identifier within a given DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.1.airflowTask","typeLabel":"airflow_task · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.1.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.1","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["athenaTable"],"properties":{"athenaTable":{"type":"object","properties":{"instance":{"type":"string","description":"AWS account and region the Athena workgroup runs in, formatted as\n \"\u003caccount-id>.\u003cregion>\" (e.g. \"123456789012.eu-west-1\"). Auto-derived\n from sts:GetCallerIdentity at integration setup time.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.2.athenaTable.instance","typeLabel":"string"},"catalog":{"type":"string","description":"Glue Data Catalog name. Almost always \"AwsDataCatalog\" — the default\n catalog for Athena unless the customer registered a federated catalog.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.2.athenaTable.catalog","typeLabel":"string"},"database":{"type":"string","description":"Glue database (the namespace users typically filter on).","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.2.athenaTable.database","typeLabel":"string"},"table":{"type":"string","description":"Glue table or view name.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.2.athenaTable.table","typeLabel":"string"}},"title":"athena_table","required":["instance","catalog","database","table"],"additionalProperties":false,"description":"Amazon Athena (Glue) table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.2.athenaTable","typeLabel":"athena_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.2.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.2","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["bigqueryTable"],"properties":{"bigqueryTable":{"type":"object","properties":{"project":{"type":"string","description":"BigQuery project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.3.bigqueryTable.project","typeLabel":"string"},"dataset":{"type":"string","description":"BigQuery dataset id","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.3.bigqueryTable.dataset","typeLabel":"string"},"table":{"type":"string","description":"BigQuery table name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.3.bigqueryTable.table","typeLabel":"string"}},"title":"bigquery_table","required":["project","dataset","table"],"additionalProperties":false,"description":"BigQuery table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.3.bigqueryTable","typeLabel":"bigquery_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.3.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.3","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["clickhouseTable"],"properties":{"clickhouseTable":{"type":"object","properties":{"host":{"type":"string","description":"Clickhouse hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.4.clickhouseTable.host","typeLabel":"string"},"schema":{"type":"string","description":"Clickhouse database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.4.clickhouseTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Clickhouse table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.4.clickhouseTable.table","typeLabel":"string"}},"title":"clickhouse_table","required":["host","schema","table"],"additionalProperties":false,"description":"Clickhouse table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.4.clickhouseTable","typeLabel":"clickhouse_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.4.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.4","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["custom"],"properties":{"custom":{"type":"object","properties":{"id":{"type":"string","description":"Id that identifies the custom entity\n The Id should be unique within the custom entity Identifier.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.5.custom.id","typeLabel":"string"}},"title":"custom","required":["id"],"additionalProperties":false,"description":"Custom identifier to be used with all custom created entities","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.5.custom","typeLabel":"custom · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.5.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.5","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["databricksTable"],"properties":{"databricksTable":{"type":"object","properties":{"workspace":{"type":"string","description":"URL of Databricks workspace","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.6.databricksTable.workspace","typeLabel":"string"},"catalog":{"type":"string","description":"Databricks catalog","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.6.databricksTable.catalog","typeLabel":"string"},"schema":{"type":"string","description":"Databricks schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.6.databricksTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Databricks table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.6.databricksTable.table","typeLabel":"string"}},"title":"databricks_table","required":["workspace","catalog","schema","table"],"additionalProperties":false,"description":"Databricks table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.6.databricksTable","typeLabel":"databricks_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.6.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.6","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["dataproduct"],"properties":{"dataproduct":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Dataproduct id that identifies the Dataproduct","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.7.dataproduct.id","typeLabel":"string\u003cuuid>"}},"title":"dataproduct","required":["id"],"additionalProperties":false,"description":"Dataproduct identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.7.dataproduct","typeLabel":"dataproduct · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.7.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.7","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["db2Table"],"properties":{"db2Table":{"type":"object","properties":{"host":{"type":"string","description":"Host name of the Db2 server","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.8.db2Table.host","typeLabel":"string"},"database":{"type":"string","description":"Database name or alias, as in `CONNECT TO \u003cdatabase>`","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.8.db2Table.database","typeLabel":"string"},"schema":{"type":"string","description":"Db2 schema (e.g. \"DB2INST1\")","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.8.db2Table.schema","typeLabel":"string"},"table":{"type":"string","description":"Db2 table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.8.db2Table.table","typeLabel":"string"}},"title":"db2_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"IBM Db2 LUW table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.8.db2Table","typeLabel":"db2_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.8.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.8","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["dbtCloudNode"],"properties":{"dbtCloudNode":{"type":"object","properties":{"projectId":{"type":"string","description":"Your dbt Cloud project id","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.9.dbtCloudNode.projectId","typeLabel":"string"},"nodeId":{"type":"string","description":"Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.9.dbtCloudNode.nodeId","typeLabel":"string"},"accountId":{"type":"string","description":"Your dbt Cloud account id","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.9.dbtCloudNode.accountId","typeLabel":"string"}},"title":"dbt_cloud_node","required":["projectId","nodeId"],"additionalProperties":false,"description":"Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Cloud project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.9.dbtCloudNode","typeLabel":"dbt_cloud_node · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.9.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.9","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["dbtCoreNode"],"properties":{"dbtCoreNode":{"type":"object","properties":{"integrationId":{"type":"string","description":"Opaque identifier of the dbt Core project. Usually the Coalesce Quality\n integration id (a UUID), but may also be the dbt project name from\n manifest.json when the integration is configured to identify assets by\n project name. Treat it as an opaque string, not a UUID.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.10.dbtCoreNode.integrationId","typeLabel":"string"},"nodeId":{"type":"string","description":"Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.10.dbtCoreNode.nodeId","typeLabel":"string"}},"title":"dbt_core_node","required":["integrationId","nodeId"],"additionalProperties":false,"description":"Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.10.dbtCoreNode","typeLabel":"dbt_core_node · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.10.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.10","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["fabricTable"],"properties":{"fabricTable":{"type":"object","properties":{"instance":{"type":"string","description":"Workspace SQL analytics endpoint host, e.g.\n \"\u003cworkspace-id>.datawarehouse.fabric.microsoft.com\".","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.11.fabricTable.instance","typeLabel":"string"},"database":{"type":"string","description":"Fabric warehouse / lakehouse (database).","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.11.fabricTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Schema within the database.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.11.fabricTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Table or view name.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.11.fabricTable.table","typeLabel":"string"},"workspaceId":{"type":"string","description":"Fabric workspace GUID, decoded from the endpoint host in `instance`.\n Optional and informational: the table is addressed by\n instance/database/schema/table, so leave it empty if you don't have it —\n it does not affect how the identifier resolves.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.11.fabricTable.workspaceId","typeLabel":"string"},"tenantId":{"type":"string","description":"Entra (Azure AD) tenant GUID, decoded from the endpoint host in `instance`.\n Optional and informational, like workspace_id.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.11.fabricTable.tenantId","typeLabel":"string"}},"title":"fabric_table","required":["instance","database","schema","table"],"additionalProperties":false,"description":"Microsoft Fabric table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.11.fabricTable","typeLabel":"fabric_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.11.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.11","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["monitor"],"properties":{"monitor":{"type":"object","properties":{"monitoredId":{"$circularRef":"692f0410-0d1f-42ff-a19a-f76d7c4a48ee","description":"Identifier of the monitored entity","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.12.monitor.monitoredId","typeLabel":"any"},"monitorId":{"type":"string","description":"Identifier of the monitor","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.12.monitor.monitorId","typeLabel":"string"},"segment":{"oneOf":[{"type":"string","description":"Optional monitor segmentation identifier","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.12.monitor.segment.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional monitor segmentation identifier","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.12.monitor.segment.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.12.monitor.segment","typeLabel":"string | null"},"integrationId":{"oneOf":[{"type":"string","description":"Coalesce Quality integration_id of the monitored identifier","deprecated":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.12.monitor.integrationId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Coalesce Quality integration_id of the monitored identifier","deprecated":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.12.monitor.integrationId.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.12.monitor.integrationId","typeLabel":"string | null"}},"title":"monitor","required":["monitoredId","monitorId"],"additionalProperties":false,"description":"Monitor identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.12.monitor","typeLabel":"monitor · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.12.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.12","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["mssqlTable"],"properties":{"mssqlTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the SQL Server instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.13.mssqlTable.host","typeLabel":"string"},"database":{"type":"string","description":"SQL Server database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.13.mssqlTable.database","typeLabel":"string"},"schema":{"type":"string","description":"SQL Server schema (e.g. \"dbo\")","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.13.mssqlTable.schema","typeLabel":"string"},"table":{"type":"string","description":"SQL Server table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.13.mssqlTable.table","typeLabel":"string"}},"title":"mssql_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"SQL Server table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.13.mssqlTable","typeLabel":"mssql_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.13.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.13","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["mysqlTable"],"properties":{"mysqlTable":{"type":"object","properties":{"host":{"type":"string","description":"Mysql hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.14.mysqlTable.host","typeLabel":"string"},"schema":{"type":"string","description":"Mysql database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.14.mysqlTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Mysql table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.14.mysqlTable.table","typeLabel":"string"}},"title":"mysql_table","required":["host","schema","table"],"additionalProperties":false,"description":"Mysql table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.14.mysqlTable","typeLabel":"mysql_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.14.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.14","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["oracleTable"],"properties":{"oracleTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the Oracle instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.15.oracleTable.host","typeLabel":"string"},"serviceName":{"type":"string","description":"Oracle service name (PDB)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.15.oracleTable.serviceName","typeLabel":"string"},"schema":{"type":"string","description":"Oracle schema (= owning user)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.15.oracleTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Oracle table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.15.oracleTable.table","typeLabel":"string"}},"title":"oracle_table","required":["host","serviceName","schema","table"],"additionalProperties":false,"description":"Oracle table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.15.oracleTable","typeLabel":"oracle_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.15.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.15","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["postgresTable"],"properties":{"postgresTable":{"type":"object","properties":{"host":{"type":"string","description":"Postgres hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.16.postgresTable.host","typeLabel":"string"},"database":{"type":"string","description":"Postgres database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.16.postgresTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Postgres schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.16.postgresTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Postgres table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.16.postgresTable.table","typeLabel":"string"}},"title":"postgres_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"Postgres table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.16.postgresTable","typeLabel":"postgres_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.16.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.16","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["redshiftTable"],"properties":{"redshiftTable":{"type":"object","properties":{"database":{"type":"string","description":"Redshift database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.17.redshiftTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Redshift schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.17.redshiftTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Redshift table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.17.redshiftTable.table","typeLabel":"string"},"cluster":{"type":"string","description":"Redshift cluster","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.17.redshiftTable.cluster","typeLabel":"string"}},"title":"redshift_table","required":["database","schema","table"],"additionalProperties":false,"description":"Redshift table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.17.redshiftTable","typeLabel":"redshift_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.17.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.17","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["savedView"],"properties":{"savedView":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Saved view id (client-supplied UUID) that identifies the saved view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.18.savedView.id","typeLabel":"string\u003cuuid>"}},"title":"saved_view","required":["id"],"additionalProperties":false,"description":"Saved view identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.18.savedView","typeLabel":"saved_view · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.18.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.18","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["snowflakeTable"],"properties":{"snowflakeTable":{"type":"object","properties":{"account":{"type":"string","description":"Snowflake account","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.19.snowflakeTable.account","typeLabel":"string"},"database":{"type":"string","description":"Snowflake database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.19.snowflakeTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Snowflake schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.19.snowflakeTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Snowflake table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.19.snowflakeTable.table","typeLabel":"string"}},"title":"snowflake_table","required":["account","database","schema","table"],"additionalProperties":false,"description":"Snowflake table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.19.snowflakeTable","typeLabel":"snowflake_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.19.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.19","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["sqlMeshAudit"],"properties":{"sqlMeshAudit":{"type":"object","properties":{"integrationId":{"type":"string","format":"uuid","description":"Coalesce Quality integration_id that identifies the dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.20.sqlMeshAudit.integrationId","typeLabel":"string\u003cuuid>"},"fqn":{"type":"string","description":"SQLMesh model fully qualified name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.20.sqlMeshAudit.fqn","typeLabel":"string"},"auditId":{"type":"string","description":"Identifier of the audit","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.20.sqlMeshAudit.auditId","typeLabel":"string"}},"title":"sql_mesh_audit","required":["integrationId","fqn","auditId"],"additionalProperties":false,"description":"SQLMesh Audit identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.20.sqlMeshAudit","typeLabel":"sql_mesh_audit · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.20.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.20","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["sqlMeshModel"],"properties":{"sqlMeshModel":{"type":"object","properties":{"integrationId":{"type":"string","format":"uuid","description":"Coalesce Quality integration_id that identifies the dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.21.sqlMeshModel.integrationId","typeLabel":"string\u003cuuid>"},"fqn":{"type":"string","description":"SQLMesh model fully qualified name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.21.sqlMeshModel.fqn","typeLabel":"string"}},"title":"sql_mesh_model","required":["integrationId","fqn"],"additionalProperties":false,"description":"SQLMesh Model identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.21.sqlMeshModel","typeLabel":"sql_mesh_model · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.21.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.21","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["synqPath"],"properties":{"synqPath":{"type":"object","properties":{"path":{"type":"string","description":"Coalesce Quality path that identifies the Coalesce Quality entity, needs to be one of supported paths","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.22.synqPath.path","typeLabel":"string"}},"title":"synq_path","required":["path"],"additionalProperties":false,"description":"SynqPath identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.22.synqPath","typeLabel":"synq_path · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.22.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.22","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["trinoTable"],"properties":{"trinoTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the Trino instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.23.trinoTable.host","typeLabel":"string"},"catalog":{"type":"string","description":"Trino catalog","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.23.trinoTable.catalog","typeLabel":"string"},"schema":{"type":"string","description":"Trino schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.23.trinoTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Trino table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.23.trinoTable.table","typeLabel":"string"}},"title":"trino_table","required":["host","catalog","schema","table"],"additionalProperties":false,"description":"Trino table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.23.trinoTable","typeLabel":"trino_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.23.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId.oneOf.23","typeLabel":"entity_id · object"}],"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.entityId","typeLabel":"entity_id · object"},"checkCategory":{"type":"object","properties":{"kind":{"type":"string","maxLength":50,"description":"Kind of the check. e.g \"not_null\", \"unique\", \"foreign_key\", \"row_count\".","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.checkCategory.kind","typeLabel":"string"},"package":{"type":"string","maxLength":50,"description":"Grouping of check kinds. e.g. \"gcs\", \"sql\", \"queue\"","uniqueKey":"features.items.[INDEX].oneOf.0.checkCategory.package","typeLabel":"string"},"category":{"oneOf":[{"type":"string","maxLength":50,"description":"Explicit technical category of the check — what kind of check this is,\n mechanically (e.g. \"nullness\", \"uniqueness\", \"freshness\"), so the same\n check expressed on another platform shares one category.\n\n Presence is meaningful on update: omit the field to leave the current\n value untouched, send an empty string to clear it, send a non-empty\n string to set or replace it. Leaving it unset means the check is\n uncategorised for this dimension and the workspace's categorisation\n rules decide it from package + kind; the `quality.check_category`\n annotation on the entity is read as the lower-precedence fallback.","uniqueKey":"features.items.[INDEX].oneOf.0.checkCategory.category.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":50,"description":"Explicit technical category of the check — what kind of check this is,\n mechanically (e.g. \"nullness\", \"uniqueness\", \"freshness\"), so the same\n check expressed on another platform shares one category.\n\n Presence is meaningful on update: omit the field to leave the current\n value untouched, send an empty string to clear it, send a non-empty\n string to set or replace it. Leaving it unset means the check is\n uncategorised for this dimension and the workspace's categorisation\n rules decide it from package + kind; the `quality.check_category`\n annotation on the entity is read as the lower-precedence fallback.","uniqueKey":"features.items.[INDEX].oneOf.0.checkCategory.category.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.0.checkCategory.category","typeLabel":"string | null"},"governanceCategory":{"oneOf":[{"type":"string","maxLength":50,"description":"Explicit governance category of the check — what the check is for, the\n data-quality dimension a governance function tracks coverage against\n (e.g. \"Completeness\", \"Accuracy\", \"Timeliness\").\n\n Resolves independently of `category` and follows the same presence\n semantics: omitted leaves it unchanged, empty clears it, non-empty sets\n it. Unset means uncategorised for this dimension; the\n `quality.governance_category` annotation on the entity is the\n lower-precedence fallback.","uniqueKey":"features.items.[INDEX].oneOf.0.checkCategory.governanceCategory.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":50,"description":"Explicit governance category of the check — what the check is for, the\n data-quality dimension a governance function tracks coverage against\n (e.g. \"Completeness\", \"Accuracy\", \"Timeliness\").\n\n Resolves independently of `category` and follows the same presence\n semantics: omitted leaves it unchanged, empty clears it, non-empty sets\n it. Unset means uncategorised for this dimension; the\n `quality.governance_category` annotation on the entity is the\n lower-precedence fallback.","uniqueKey":"features.items.[INDEX].oneOf.0.checkCategory.governanceCategory.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.0.checkCategory.governanceCategory","typeLabel":"string | null"}},"title":"check_category","required":["kind"],"additionalProperties":false,"description":"Only one feature per entity.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.0.checkCategory","typeLabel":"check_category · object"},"workspace":{"type":"string","title":"workspace","description":"Immutable workspace identifier that this entity belongs to.","uniqueKey":"features.items.[INDEX].oneOf.0.workspace","typeLabel":"string"},"featureId":{"type":"string","title":"feature_id","maxLength":255,"description":"Identifier of the feature. Can be any string, e.g. \"sql\" for SQL feature. Use same identifier to update the feature.\n Do not use random identifier as it will create a new feature on every update.","uniqueKey":"features.items.[INDEX].oneOf.0.featureId","typeLabel":"string"},"createdAt":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"Timestamp when the entity was created.","title":"created_at","uniqueKey":"features.items.[INDEX].oneOf.0.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"Timestamp when the entity was last updated.","title":"updated_at","uniqueKey":"features.items.[INDEX].oneOf.0.updatedAt","typeLabel":"string\u003cdate-time>"},"deletedAt":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"Timestamp when the entity was deleted. If this is set, the entity is considered deleted.","title":"deleted_at","uniqueKey":"features.items.[INDEX].oneOf.0.deletedAt","typeLabel":"string\u003cdate-time>"}},"additionalProperties":false,"uniqueKey":"features.items.[INDEX].oneOf.0","typeLabel":"Feature · object"},{"type":"object","title":"Feature","required":["entityId","code"],"properties":{"entityId":{"oneOf":[{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["airflowDag"],"properties":{"airflowDag":{"type":"object","properties":{"integrationId":{"type":"string","description":"Coalesce Quality integration_id that identifies the Airflow instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.0.airflowDag.integrationId","typeLabel":"string"},"dagId":{"type":"string","description":"Airflow dag_id that identifies the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.0.airflowDag.dagId","typeLabel":"string"}},"title":"airflow_dag","required":["integrationId","dagId"],"additionalProperties":false,"description":"Airflow DAG identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.0.airflowDag","typeLabel":"airflow_dag · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.0.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.0","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["airflowTask"],"properties":{"airflowTask":{"type":"object","properties":{"integrationId":{"type":"string","description":"Coalesce Quality integration_id that identifies the Airflow instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.1.airflowTask.integrationId","typeLabel":"string"},"dagId":{"type":"string","description":"Airflow dag_id that identifies the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.1.airflowTask.dagId","typeLabel":"string"},"taskId":{"type":"string","description":"Airflow task_id that identifies the task within the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.1.airflowTask.taskId","typeLabel":"string"}},"title":"airflow_task","required":["integrationId","dagId","taskId"],"additionalProperties":false,"description":"Airflow task identifier within a given DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.1.airflowTask","typeLabel":"airflow_task · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.1.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.1","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["athenaTable"],"properties":{"athenaTable":{"type":"object","properties":{"instance":{"type":"string","description":"AWS account and region the Athena workgroup runs in, formatted as\n \"\u003caccount-id>.\u003cregion>\" (e.g. \"123456789012.eu-west-1\"). Auto-derived\n from sts:GetCallerIdentity at integration setup time.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.2.athenaTable.instance","typeLabel":"string"},"catalog":{"type":"string","description":"Glue Data Catalog name. Almost always \"AwsDataCatalog\" — the default\n catalog for Athena unless the customer registered a federated catalog.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.2.athenaTable.catalog","typeLabel":"string"},"database":{"type":"string","description":"Glue database (the namespace users typically filter on).","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.2.athenaTable.database","typeLabel":"string"},"table":{"type":"string","description":"Glue table or view name.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.2.athenaTable.table","typeLabel":"string"}},"title":"athena_table","required":["instance","catalog","database","table"],"additionalProperties":false,"description":"Amazon Athena (Glue) table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.2.athenaTable","typeLabel":"athena_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.2.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.2","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["bigqueryTable"],"properties":{"bigqueryTable":{"type":"object","properties":{"project":{"type":"string","description":"BigQuery project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.3.bigqueryTable.project","typeLabel":"string"},"dataset":{"type":"string","description":"BigQuery dataset id","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.3.bigqueryTable.dataset","typeLabel":"string"},"table":{"type":"string","description":"BigQuery table name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.3.bigqueryTable.table","typeLabel":"string"}},"title":"bigquery_table","required":["project","dataset","table"],"additionalProperties":false,"description":"BigQuery table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.3.bigqueryTable","typeLabel":"bigquery_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.3.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.3","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["clickhouseTable"],"properties":{"clickhouseTable":{"type":"object","properties":{"host":{"type":"string","description":"Clickhouse hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.4.clickhouseTable.host","typeLabel":"string"},"schema":{"type":"string","description":"Clickhouse database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.4.clickhouseTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Clickhouse table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.4.clickhouseTable.table","typeLabel":"string"}},"title":"clickhouse_table","required":["host","schema","table"],"additionalProperties":false,"description":"Clickhouse table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.4.clickhouseTable","typeLabel":"clickhouse_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.4.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.4","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["custom"],"properties":{"custom":{"type":"object","properties":{"id":{"type":"string","description":"Id that identifies the custom entity\n The Id should be unique within the custom entity Identifier.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.5.custom.id","typeLabel":"string"}},"title":"custom","required":["id"],"additionalProperties":false,"description":"Custom identifier to be used with all custom created entities","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.5.custom","typeLabel":"custom · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.5.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.5","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["databricksTable"],"properties":{"databricksTable":{"type":"object","properties":{"workspace":{"type":"string","description":"URL of Databricks workspace","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.6.databricksTable.workspace","typeLabel":"string"},"catalog":{"type":"string","description":"Databricks catalog","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.6.databricksTable.catalog","typeLabel":"string"},"schema":{"type":"string","description":"Databricks schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.6.databricksTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Databricks table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.6.databricksTable.table","typeLabel":"string"}},"title":"databricks_table","required":["workspace","catalog","schema","table"],"additionalProperties":false,"description":"Databricks table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.6.databricksTable","typeLabel":"databricks_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.6.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.6","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["dataproduct"],"properties":{"dataproduct":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Dataproduct id that identifies the Dataproduct","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.7.dataproduct.id","typeLabel":"string\u003cuuid>"}},"title":"dataproduct","required":["id"],"additionalProperties":false,"description":"Dataproduct identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.7.dataproduct","typeLabel":"dataproduct · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.7.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.7","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["db2Table"],"properties":{"db2Table":{"type":"object","properties":{"host":{"type":"string","description":"Host name of the Db2 server","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.8.db2Table.host","typeLabel":"string"},"database":{"type":"string","description":"Database name or alias, as in `CONNECT TO \u003cdatabase>`","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.8.db2Table.database","typeLabel":"string"},"schema":{"type":"string","description":"Db2 schema (e.g. \"DB2INST1\")","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.8.db2Table.schema","typeLabel":"string"},"table":{"type":"string","description":"Db2 table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.8.db2Table.table","typeLabel":"string"}},"title":"db2_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"IBM Db2 LUW table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.8.db2Table","typeLabel":"db2_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.8.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.8","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["dbtCloudNode"],"properties":{"dbtCloudNode":{"type":"object","properties":{"projectId":{"type":"string","description":"Your dbt Cloud project id","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.9.dbtCloudNode.projectId","typeLabel":"string"},"nodeId":{"type":"string","description":"Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.9.dbtCloudNode.nodeId","typeLabel":"string"},"accountId":{"type":"string","description":"Your dbt Cloud account id","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.9.dbtCloudNode.accountId","typeLabel":"string"}},"title":"dbt_cloud_node","required":["projectId","nodeId"],"additionalProperties":false,"description":"Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Cloud project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.9.dbtCloudNode","typeLabel":"dbt_cloud_node · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.9.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.9","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["dbtCoreNode"],"properties":{"dbtCoreNode":{"type":"object","properties":{"integrationId":{"type":"string","description":"Opaque identifier of the dbt Core project. Usually the Coalesce Quality\n integration id (a UUID), but may also be the dbt project name from\n manifest.json when the integration is configured to identify assets by\n project name. Treat it as an opaque string, not a UUID.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.10.dbtCoreNode.integrationId","typeLabel":"string"},"nodeId":{"type":"string","description":"Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.10.dbtCoreNode.nodeId","typeLabel":"string"}},"title":"dbt_core_node","required":["integrationId","nodeId"],"additionalProperties":false,"description":"Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.10.dbtCoreNode","typeLabel":"dbt_core_node · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.10.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.10","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["fabricTable"],"properties":{"fabricTable":{"type":"object","properties":{"instance":{"type":"string","description":"Workspace SQL analytics endpoint host, e.g.\n \"\u003cworkspace-id>.datawarehouse.fabric.microsoft.com\".","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.11.fabricTable.instance","typeLabel":"string"},"database":{"type":"string","description":"Fabric warehouse / lakehouse (database).","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.11.fabricTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Schema within the database.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.11.fabricTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Table or view name.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.11.fabricTable.table","typeLabel":"string"},"workspaceId":{"type":"string","description":"Fabric workspace GUID, decoded from the endpoint host in `instance`.\n Optional and informational: the table is addressed by\n instance/database/schema/table, so leave it empty if you don't have it —\n it does not affect how the identifier resolves.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.11.fabricTable.workspaceId","typeLabel":"string"},"tenantId":{"type":"string","description":"Entra (Azure AD) tenant GUID, decoded from the endpoint host in `instance`.\n Optional and informational, like workspace_id.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.11.fabricTable.tenantId","typeLabel":"string"}},"title":"fabric_table","required":["instance","database","schema","table"],"additionalProperties":false,"description":"Microsoft Fabric table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.11.fabricTable","typeLabel":"fabric_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.11.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.11","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["monitor"],"properties":{"monitor":{"type":"object","properties":{"monitoredId":{"$circularRef":"692f0410-0d1f-42ff-a19a-f76d7c4a48ee","description":"Identifier of the monitored entity","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.12.monitor.monitoredId","typeLabel":"any"},"monitorId":{"type":"string","description":"Identifier of the monitor","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.12.monitor.monitorId","typeLabel":"string"},"segment":{"oneOf":[{"type":"string","description":"Optional monitor segmentation identifier","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.12.monitor.segment.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional monitor segmentation identifier","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.12.monitor.segment.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.12.monitor.segment","typeLabel":"string | null"},"integrationId":{"oneOf":[{"type":"string","description":"Coalesce Quality integration_id of the monitored identifier","deprecated":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.12.monitor.integrationId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Coalesce Quality integration_id of the monitored identifier","deprecated":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.12.monitor.integrationId.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.12.monitor.integrationId","typeLabel":"string | null"}},"title":"monitor","required":["monitoredId","monitorId"],"additionalProperties":false,"description":"Monitor identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.12.monitor","typeLabel":"monitor · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.12.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.12","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["mssqlTable"],"properties":{"mssqlTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the SQL Server instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.13.mssqlTable.host","typeLabel":"string"},"database":{"type":"string","description":"SQL Server database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.13.mssqlTable.database","typeLabel":"string"},"schema":{"type":"string","description":"SQL Server schema (e.g. \"dbo\")","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.13.mssqlTable.schema","typeLabel":"string"},"table":{"type":"string","description":"SQL Server table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.13.mssqlTable.table","typeLabel":"string"}},"title":"mssql_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"SQL Server table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.13.mssqlTable","typeLabel":"mssql_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.13.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.13","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["mysqlTable"],"properties":{"mysqlTable":{"type":"object","properties":{"host":{"type":"string","description":"Mysql hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.14.mysqlTable.host","typeLabel":"string"},"schema":{"type":"string","description":"Mysql database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.14.mysqlTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Mysql table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.14.mysqlTable.table","typeLabel":"string"}},"title":"mysql_table","required":["host","schema","table"],"additionalProperties":false,"description":"Mysql table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.14.mysqlTable","typeLabel":"mysql_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.14.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.14","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["oracleTable"],"properties":{"oracleTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the Oracle instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.15.oracleTable.host","typeLabel":"string"},"serviceName":{"type":"string","description":"Oracle service name (PDB)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.15.oracleTable.serviceName","typeLabel":"string"},"schema":{"type":"string","description":"Oracle schema (= owning user)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.15.oracleTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Oracle table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.15.oracleTable.table","typeLabel":"string"}},"title":"oracle_table","required":["host","serviceName","schema","table"],"additionalProperties":false,"description":"Oracle table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.15.oracleTable","typeLabel":"oracle_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.15.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.15","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["postgresTable"],"properties":{"postgresTable":{"type":"object","properties":{"host":{"type":"string","description":"Postgres hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.16.postgresTable.host","typeLabel":"string"},"database":{"type":"string","description":"Postgres database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.16.postgresTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Postgres schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.16.postgresTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Postgres table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.16.postgresTable.table","typeLabel":"string"}},"title":"postgres_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"Postgres table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.16.postgresTable","typeLabel":"postgres_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.16.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.16","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["redshiftTable"],"properties":{"redshiftTable":{"type":"object","properties":{"database":{"type":"string","description":"Redshift database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.17.redshiftTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Redshift schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.17.redshiftTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Redshift table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.17.redshiftTable.table","typeLabel":"string"},"cluster":{"type":"string","description":"Redshift cluster","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.17.redshiftTable.cluster","typeLabel":"string"}},"title":"redshift_table","required":["database","schema","table"],"additionalProperties":false,"description":"Redshift table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.17.redshiftTable","typeLabel":"redshift_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.17.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.17","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["savedView"],"properties":{"savedView":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Saved view id (client-supplied UUID) that identifies the saved view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.18.savedView.id","typeLabel":"string\u003cuuid>"}},"title":"saved_view","required":["id"],"additionalProperties":false,"description":"Saved view identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.18.savedView","typeLabel":"saved_view · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.18.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.18","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["snowflakeTable"],"properties":{"snowflakeTable":{"type":"object","properties":{"account":{"type":"string","description":"Snowflake account","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.19.snowflakeTable.account","typeLabel":"string"},"database":{"type":"string","description":"Snowflake database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.19.snowflakeTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Snowflake schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.19.snowflakeTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Snowflake table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.19.snowflakeTable.table","typeLabel":"string"}},"title":"snowflake_table","required":["account","database","schema","table"],"additionalProperties":false,"description":"Snowflake table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.19.snowflakeTable","typeLabel":"snowflake_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.19.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.19","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["sqlMeshAudit"],"properties":{"sqlMeshAudit":{"type":"object","properties":{"integrationId":{"type":"string","format":"uuid","description":"Coalesce Quality integration_id that identifies the dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.20.sqlMeshAudit.integrationId","typeLabel":"string\u003cuuid>"},"fqn":{"type":"string","description":"SQLMesh model fully qualified name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.20.sqlMeshAudit.fqn","typeLabel":"string"},"auditId":{"type":"string","description":"Identifier of the audit","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.20.sqlMeshAudit.auditId","typeLabel":"string"}},"title":"sql_mesh_audit","required":["integrationId","fqn","auditId"],"additionalProperties":false,"description":"SQLMesh Audit identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.20.sqlMeshAudit","typeLabel":"sql_mesh_audit · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.20.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.20","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["sqlMeshModel"],"properties":{"sqlMeshModel":{"type":"object","properties":{"integrationId":{"type":"string","format":"uuid","description":"Coalesce Quality integration_id that identifies the dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.21.sqlMeshModel.integrationId","typeLabel":"string\u003cuuid>"},"fqn":{"type":"string","description":"SQLMesh model fully qualified name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.21.sqlMeshModel.fqn","typeLabel":"string"}},"title":"sql_mesh_model","required":["integrationId","fqn"],"additionalProperties":false,"description":"SQLMesh Model identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.21.sqlMeshModel","typeLabel":"sql_mesh_model · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.21.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.21","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["synqPath"],"properties":{"synqPath":{"type":"object","properties":{"path":{"type":"string","description":"Coalesce Quality path that identifies the Coalesce Quality entity, needs to be one of supported paths","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.22.synqPath.path","typeLabel":"string"}},"title":"synq_path","required":["path"],"additionalProperties":false,"description":"SynqPath identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.22.synqPath","typeLabel":"synq_path · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.22.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.22","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["trinoTable"],"properties":{"trinoTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the Trino instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.23.trinoTable.host","typeLabel":"string"},"catalog":{"type":"string","description":"Trino catalog","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.23.trinoTable.catalog","typeLabel":"string"},"schema":{"type":"string","description":"Trino schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.23.trinoTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Trino table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.23.trinoTable.table","typeLabel":"string"}},"title":"trino_table","required":["host","catalog","schema","table"],"additionalProperties":false,"description":"Trino table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.23.trinoTable","typeLabel":"trino_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.23.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId.oneOf.23","typeLabel":"entity_id · object"}],"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.entityId","typeLabel":"entity_id · object"},"code":{"type":"object","properties":{"name":{"type":"string","maxLength":50,"description":"Might be e.g. name of the file or a function.","uniqueKey":"features.items.[INDEX].oneOf.1.code.name","typeLabel":"string"},"codeType":{"type":"string","title":"CodeType","enum":["CODE_TYPE_UNSPECIFIED","CODE_TYPE_SQL","CODE_TYPE_PYTHON","CODE_TYPE_JSON","CODE_TYPE_YAML","CODE_TYPE_DBT","CODE_TYPE_SQLMESH","CODE_TYPE_LOOKML","CODE_TYPE_JAVASCRIPT","CODE_TYPE_BASH","CODE_TYPE_DAX","CODE_TYPE_JAVA","CODE_TYPE_SCALA","CODE_TYPE_TEXT","CODE_TYPE_MARKDOWN"],"description":"Type of the code.","uniqueKey":"features.items.[INDEX].oneOf.1.code.codeType","typeLabel":"enum\u003cstring>"},"content":{"type":"string","maxLength":1048576,"description":"Content of the code. Displayed in the UI.","uniqueKey":"features.items.[INDEX].oneOf.1.code.content","typeLabel":"string"}},"title":"code","additionalProperties":false,"description":"Multiple features per entity.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.1.code","typeLabel":"code · object"},"workspace":{"type":"string","title":"workspace","description":"Immutable workspace identifier that this entity belongs to.","uniqueKey":"features.items.[INDEX].oneOf.1.workspace","typeLabel":"string"},"featureId":{"type":"string","title":"feature_id","maxLength":255,"description":"Identifier of the feature. Can be any string, e.g. \"sql\" for SQL feature. Use same identifier to update the feature.\n Do not use random identifier as it will create a new feature on every update.","uniqueKey":"features.items.[INDEX].oneOf.1.featureId","typeLabel":"string"},"createdAt":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"Timestamp when the entity was created.","title":"created_at","uniqueKey":"features.items.[INDEX].oneOf.1.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"Timestamp when the entity was last updated.","title":"updated_at","uniqueKey":"features.items.[INDEX].oneOf.1.updatedAt","typeLabel":"string\u003cdate-time>"},"deletedAt":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"Timestamp when the entity was deleted. If this is set, the entity is considered deleted.","title":"deleted_at","uniqueKey":"features.items.[INDEX].oneOf.1.deletedAt","typeLabel":"string\u003cdate-time>"}},"additionalProperties":false,"uniqueKey":"features.items.[INDEX].oneOf.1","typeLabel":"Feature · object"},{"type":"object","title":"Feature","required":["entityId","columnLineage"],"properties":{"entityId":{"oneOf":[{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["airflowDag"],"properties":{"airflowDag":{"type":"object","properties":{"integrationId":{"type":"string","description":"Coalesce Quality integration_id that identifies the Airflow instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.0.airflowDag.integrationId","typeLabel":"string"},"dagId":{"type":"string","description":"Airflow dag_id that identifies the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.0.airflowDag.dagId","typeLabel":"string"}},"title":"airflow_dag","required":["integrationId","dagId"],"additionalProperties":false,"description":"Airflow DAG identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.0.airflowDag","typeLabel":"airflow_dag · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.0.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.0","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["airflowTask"],"properties":{"airflowTask":{"type":"object","properties":{"integrationId":{"type":"string","description":"Coalesce Quality integration_id that identifies the Airflow instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.1.airflowTask.integrationId","typeLabel":"string"},"dagId":{"type":"string","description":"Airflow dag_id that identifies the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.1.airflowTask.dagId","typeLabel":"string"},"taskId":{"type":"string","description":"Airflow task_id that identifies the task within the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.1.airflowTask.taskId","typeLabel":"string"}},"title":"airflow_task","required":["integrationId","dagId","taskId"],"additionalProperties":false,"description":"Airflow task identifier within a given DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.1.airflowTask","typeLabel":"airflow_task · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.1.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.1","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["athenaTable"],"properties":{"athenaTable":{"type":"object","properties":{"instance":{"type":"string","description":"AWS account and region the Athena workgroup runs in, formatted as\n \"\u003caccount-id>.\u003cregion>\" (e.g. \"123456789012.eu-west-1\"). Auto-derived\n from sts:GetCallerIdentity at integration setup time.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.2.athenaTable.instance","typeLabel":"string"},"catalog":{"type":"string","description":"Glue Data Catalog name. Almost always \"AwsDataCatalog\" — the default\n catalog for Athena unless the customer registered a federated catalog.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.2.athenaTable.catalog","typeLabel":"string"},"database":{"type":"string","description":"Glue database (the namespace users typically filter on).","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.2.athenaTable.database","typeLabel":"string"},"table":{"type":"string","description":"Glue table or view name.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.2.athenaTable.table","typeLabel":"string"}},"title":"athena_table","required":["instance","catalog","database","table"],"additionalProperties":false,"description":"Amazon Athena (Glue) table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.2.athenaTable","typeLabel":"athena_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.2.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.2","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["bigqueryTable"],"properties":{"bigqueryTable":{"type":"object","properties":{"project":{"type":"string","description":"BigQuery project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.3.bigqueryTable.project","typeLabel":"string"},"dataset":{"type":"string","description":"BigQuery dataset id","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.3.bigqueryTable.dataset","typeLabel":"string"},"table":{"type":"string","description":"BigQuery table name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.3.bigqueryTable.table","typeLabel":"string"}},"title":"bigquery_table","required":["project","dataset","table"],"additionalProperties":false,"description":"BigQuery table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.3.bigqueryTable","typeLabel":"bigquery_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.3.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.3","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["clickhouseTable"],"properties":{"clickhouseTable":{"type":"object","properties":{"host":{"type":"string","description":"Clickhouse hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.4.clickhouseTable.host","typeLabel":"string"},"schema":{"type":"string","description":"Clickhouse database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.4.clickhouseTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Clickhouse table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.4.clickhouseTable.table","typeLabel":"string"}},"title":"clickhouse_table","required":["host","schema","table"],"additionalProperties":false,"description":"Clickhouse table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.4.clickhouseTable","typeLabel":"clickhouse_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.4.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.4","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["custom"],"properties":{"custom":{"type":"object","properties":{"id":{"type":"string","description":"Id that identifies the custom entity\n The Id should be unique within the custom entity Identifier.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.5.custom.id","typeLabel":"string"}},"title":"custom","required":["id"],"additionalProperties":false,"description":"Custom identifier to be used with all custom created entities","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.5.custom","typeLabel":"custom · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.5.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.5","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["databricksTable"],"properties":{"databricksTable":{"type":"object","properties":{"workspace":{"type":"string","description":"URL of Databricks workspace","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.6.databricksTable.workspace","typeLabel":"string"},"catalog":{"type":"string","description":"Databricks catalog","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.6.databricksTable.catalog","typeLabel":"string"},"schema":{"type":"string","description":"Databricks schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.6.databricksTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Databricks table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.6.databricksTable.table","typeLabel":"string"}},"title":"databricks_table","required":["workspace","catalog","schema","table"],"additionalProperties":false,"description":"Databricks table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.6.databricksTable","typeLabel":"databricks_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.6.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.6","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["dataproduct"],"properties":{"dataproduct":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Dataproduct id that identifies the Dataproduct","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.7.dataproduct.id","typeLabel":"string\u003cuuid>"}},"title":"dataproduct","required":["id"],"additionalProperties":false,"description":"Dataproduct identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.7.dataproduct","typeLabel":"dataproduct · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.7.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.7","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["db2Table"],"properties":{"db2Table":{"type":"object","properties":{"host":{"type":"string","description":"Host name of the Db2 server","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.8.db2Table.host","typeLabel":"string"},"database":{"type":"string","description":"Database name or alias, as in `CONNECT TO \u003cdatabase>`","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.8.db2Table.database","typeLabel":"string"},"schema":{"type":"string","description":"Db2 schema (e.g. \"DB2INST1\")","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.8.db2Table.schema","typeLabel":"string"},"table":{"type":"string","description":"Db2 table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.8.db2Table.table","typeLabel":"string"}},"title":"db2_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"IBM Db2 LUW table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.8.db2Table","typeLabel":"db2_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.8.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.8","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["dbtCloudNode"],"properties":{"dbtCloudNode":{"type":"object","properties":{"projectId":{"type":"string","description":"Your dbt Cloud project id","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.9.dbtCloudNode.projectId","typeLabel":"string"},"nodeId":{"type":"string","description":"Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.9.dbtCloudNode.nodeId","typeLabel":"string"},"accountId":{"type":"string","description":"Your dbt Cloud account id","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.9.dbtCloudNode.accountId","typeLabel":"string"}},"title":"dbt_cloud_node","required":["projectId","nodeId"],"additionalProperties":false,"description":"Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Cloud project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.9.dbtCloudNode","typeLabel":"dbt_cloud_node · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.9.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.9","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["dbtCoreNode"],"properties":{"dbtCoreNode":{"type":"object","properties":{"integrationId":{"type":"string","description":"Opaque identifier of the dbt Core project. Usually the Coalesce Quality\n integration id (a UUID), but may also be the dbt project name from\n manifest.json when the integration is configured to identify assets by\n project name. Treat it as an opaque string, not a UUID.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.10.dbtCoreNode.integrationId","typeLabel":"string"},"nodeId":{"type":"string","description":"Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.10.dbtCoreNode.nodeId","typeLabel":"string"}},"title":"dbt_core_node","required":["integrationId","nodeId"],"additionalProperties":false,"description":"Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.10.dbtCoreNode","typeLabel":"dbt_core_node · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.10.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.10","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["fabricTable"],"properties":{"fabricTable":{"type":"object","properties":{"instance":{"type":"string","description":"Workspace SQL analytics endpoint host, e.g.\n \"\u003cworkspace-id>.datawarehouse.fabric.microsoft.com\".","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.11.fabricTable.instance","typeLabel":"string"},"database":{"type":"string","description":"Fabric warehouse / lakehouse (database).","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.11.fabricTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Schema within the database.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.11.fabricTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Table or view name.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.11.fabricTable.table","typeLabel":"string"},"workspaceId":{"type":"string","description":"Fabric workspace GUID, decoded from the endpoint host in `instance`.\n Optional and informational: the table is addressed by\n instance/database/schema/table, so leave it empty if you don't have it —\n it does not affect how the identifier resolves.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.11.fabricTable.workspaceId","typeLabel":"string"},"tenantId":{"type":"string","description":"Entra (Azure AD) tenant GUID, decoded from the endpoint host in `instance`.\n Optional and informational, like workspace_id.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.11.fabricTable.tenantId","typeLabel":"string"}},"title":"fabric_table","required":["instance","database","schema","table"],"additionalProperties":false,"description":"Microsoft Fabric table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.11.fabricTable","typeLabel":"fabric_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.11.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.11","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["monitor"],"properties":{"monitor":{"type":"object","properties":{"monitoredId":{"$circularRef":"692f0410-0d1f-42ff-a19a-f76d7c4a48ee","description":"Identifier of the monitored entity","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.12.monitor.monitoredId","typeLabel":"any"},"monitorId":{"type":"string","description":"Identifier of the monitor","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.12.monitor.monitorId","typeLabel":"string"},"segment":{"oneOf":[{"type":"string","description":"Optional monitor segmentation identifier","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.12.monitor.segment.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional monitor segmentation identifier","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.12.monitor.segment.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.12.monitor.segment","typeLabel":"string | null"},"integrationId":{"oneOf":[{"type":"string","description":"Coalesce Quality integration_id of the monitored identifier","deprecated":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.12.monitor.integrationId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Coalesce Quality integration_id of the monitored identifier","deprecated":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.12.monitor.integrationId.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.12.monitor.integrationId","typeLabel":"string | null"}},"title":"monitor","required":["monitoredId","monitorId"],"additionalProperties":false,"description":"Monitor identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.12.monitor","typeLabel":"monitor · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.12.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.12","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["mssqlTable"],"properties":{"mssqlTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the SQL Server instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.13.mssqlTable.host","typeLabel":"string"},"database":{"type":"string","description":"SQL Server database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.13.mssqlTable.database","typeLabel":"string"},"schema":{"type":"string","description":"SQL Server schema (e.g. \"dbo\")","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.13.mssqlTable.schema","typeLabel":"string"},"table":{"type":"string","description":"SQL Server table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.13.mssqlTable.table","typeLabel":"string"}},"title":"mssql_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"SQL Server table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.13.mssqlTable","typeLabel":"mssql_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.13.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.13","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["mysqlTable"],"properties":{"mysqlTable":{"type":"object","properties":{"host":{"type":"string","description":"Mysql hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.14.mysqlTable.host","typeLabel":"string"},"schema":{"type":"string","description":"Mysql database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.14.mysqlTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Mysql table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.14.mysqlTable.table","typeLabel":"string"}},"title":"mysql_table","required":["host","schema","table"],"additionalProperties":false,"description":"Mysql table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.14.mysqlTable","typeLabel":"mysql_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.14.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.14","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["oracleTable"],"properties":{"oracleTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the Oracle instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.15.oracleTable.host","typeLabel":"string"},"serviceName":{"type":"string","description":"Oracle service name (PDB)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.15.oracleTable.serviceName","typeLabel":"string"},"schema":{"type":"string","description":"Oracle schema (= owning user)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.15.oracleTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Oracle table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.15.oracleTable.table","typeLabel":"string"}},"title":"oracle_table","required":["host","serviceName","schema","table"],"additionalProperties":false,"description":"Oracle table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.15.oracleTable","typeLabel":"oracle_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.15.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.15","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["postgresTable"],"properties":{"postgresTable":{"type":"object","properties":{"host":{"type":"string","description":"Postgres hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.16.postgresTable.host","typeLabel":"string"},"database":{"type":"string","description":"Postgres database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.16.postgresTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Postgres schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.16.postgresTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Postgres table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.16.postgresTable.table","typeLabel":"string"}},"title":"postgres_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"Postgres table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.16.postgresTable","typeLabel":"postgres_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.16.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.16","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["redshiftTable"],"properties":{"redshiftTable":{"type":"object","properties":{"database":{"type":"string","description":"Redshift database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.17.redshiftTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Redshift schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.17.redshiftTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Redshift table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.17.redshiftTable.table","typeLabel":"string"},"cluster":{"type":"string","description":"Redshift cluster","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.17.redshiftTable.cluster","typeLabel":"string"}},"title":"redshift_table","required":["database","schema","table"],"additionalProperties":false,"description":"Redshift table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.17.redshiftTable","typeLabel":"redshift_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.17.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.17","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["savedView"],"properties":{"savedView":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Saved view id (client-supplied UUID) that identifies the saved view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.18.savedView.id","typeLabel":"string\u003cuuid>"}},"title":"saved_view","required":["id"],"additionalProperties":false,"description":"Saved view identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.18.savedView","typeLabel":"saved_view · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.18.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.18","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["snowflakeTable"],"properties":{"snowflakeTable":{"type":"object","properties":{"account":{"type":"string","description":"Snowflake account","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.19.snowflakeTable.account","typeLabel":"string"},"database":{"type":"string","description":"Snowflake database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.19.snowflakeTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Snowflake schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.19.snowflakeTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Snowflake table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.19.snowflakeTable.table","typeLabel":"string"}},"title":"snowflake_table","required":["account","database","schema","table"],"additionalProperties":false,"description":"Snowflake table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.19.snowflakeTable","typeLabel":"snowflake_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.19.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.19","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["sqlMeshAudit"],"properties":{"sqlMeshAudit":{"type":"object","properties":{"integrationId":{"type":"string","format":"uuid","description":"Coalesce Quality integration_id that identifies the dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.20.sqlMeshAudit.integrationId","typeLabel":"string\u003cuuid>"},"fqn":{"type":"string","description":"SQLMesh model fully qualified name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.20.sqlMeshAudit.fqn","typeLabel":"string"},"auditId":{"type":"string","description":"Identifier of the audit","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.20.sqlMeshAudit.auditId","typeLabel":"string"}},"title":"sql_mesh_audit","required":["integrationId","fqn","auditId"],"additionalProperties":false,"description":"SQLMesh Audit identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.20.sqlMeshAudit","typeLabel":"sql_mesh_audit · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.20.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.20","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["sqlMeshModel"],"properties":{"sqlMeshModel":{"type":"object","properties":{"integrationId":{"type":"string","format":"uuid","description":"Coalesce Quality integration_id that identifies the dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.21.sqlMeshModel.integrationId","typeLabel":"string\u003cuuid>"},"fqn":{"type":"string","description":"SQLMesh model fully qualified name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.21.sqlMeshModel.fqn","typeLabel":"string"}},"title":"sql_mesh_model","required":["integrationId","fqn"],"additionalProperties":false,"description":"SQLMesh Model identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.21.sqlMeshModel","typeLabel":"sql_mesh_model · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.21.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.21","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["synqPath"],"properties":{"synqPath":{"type":"object","properties":{"path":{"type":"string","description":"Coalesce Quality path that identifies the Coalesce Quality entity, needs to be one of supported paths","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.22.synqPath.path","typeLabel":"string"}},"title":"synq_path","required":["path"],"additionalProperties":false,"description":"SynqPath identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.22.synqPath","typeLabel":"synq_path · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.22.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.22","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["trinoTable"],"properties":{"trinoTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the Trino instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.23.trinoTable.host","typeLabel":"string"},"catalog":{"type":"string","description":"Trino catalog","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.23.trinoTable.catalog","typeLabel":"string"},"schema":{"type":"string","description":"Trino schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.23.trinoTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Trino table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.23.trinoTable.table","typeLabel":"string"}},"title":"trino_table","required":["host","catalog","schema","table"],"additionalProperties":false,"description":"Trino table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.23.trinoTable","typeLabel":"trino_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.23.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId.oneOf.23","typeLabel":"entity_id · object"}],"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.entityId","typeLabel":"entity_id · object"},"columnLineage":{"type":"object","properties":{"stateAt":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"Time when this lineage was declared, will default to `now` if not set. A\n later declaration replaces an earlier one, so an explicit time is how a\n backfill avoids overwriting a fresher declaration.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.stateAt","typeLabel":"string\u003cdate-time>"},"edges":{"type":"array","items":{"type":"object","properties":{"upstream":{"oneOf":[{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["airflowDag"],"properties":{"airflowDag":{"type":"object","properties":{"integrationId":{"type":"string","description":"Coalesce Quality integration_id that identifies the Airflow instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.0.airflowDag.integrationId","typeLabel":"string"},"dagId":{"type":"string","description":"Airflow dag_id that identifies the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.0.airflowDag.dagId","typeLabel":"string"}},"title":"airflow_dag","required":["integrationId","dagId"],"additionalProperties":false,"description":"Airflow DAG identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.0.airflowDag","typeLabel":"airflow_dag · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.0.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.0","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["airflowTask"],"properties":{"airflowTask":{"type":"object","properties":{"integrationId":{"type":"string","description":"Coalesce Quality integration_id that identifies the Airflow instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.1.airflowTask.integrationId","typeLabel":"string"},"dagId":{"type":"string","description":"Airflow dag_id that identifies the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.1.airflowTask.dagId","typeLabel":"string"},"taskId":{"type":"string","description":"Airflow task_id that identifies the task within the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.1.airflowTask.taskId","typeLabel":"string"}},"title":"airflow_task","required":["integrationId","dagId","taskId"],"additionalProperties":false,"description":"Airflow task identifier within a given DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.1.airflowTask","typeLabel":"airflow_task · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.1.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.1","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["athenaTable"],"properties":{"athenaTable":{"type":"object","properties":{"instance":{"type":"string","description":"AWS account and region the Athena workgroup runs in, formatted as\n \"\u003caccount-id>.\u003cregion>\" (e.g. \"123456789012.eu-west-1\"). Auto-derived\n from sts:GetCallerIdentity at integration setup time.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.2.athenaTable.instance","typeLabel":"string"},"catalog":{"type":"string","description":"Glue Data Catalog name. Almost always \"AwsDataCatalog\" — the default\n catalog for Athena unless the customer registered a federated catalog.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.2.athenaTable.catalog","typeLabel":"string"},"database":{"type":"string","description":"Glue database (the namespace users typically filter on).","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.2.athenaTable.database","typeLabel":"string"},"table":{"type":"string","description":"Glue table or view name.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.2.athenaTable.table","typeLabel":"string"}},"title":"athena_table","required":["instance","catalog","database","table"],"additionalProperties":false,"description":"Amazon Athena (Glue) table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.2.athenaTable","typeLabel":"athena_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.2.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.2","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["bigqueryTable"],"properties":{"bigqueryTable":{"type":"object","properties":{"project":{"type":"string","description":"BigQuery project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.3.bigqueryTable.project","typeLabel":"string"},"dataset":{"type":"string","description":"BigQuery dataset id","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.3.bigqueryTable.dataset","typeLabel":"string"},"table":{"type":"string","description":"BigQuery table name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.3.bigqueryTable.table","typeLabel":"string"}},"title":"bigquery_table","required":["project","dataset","table"],"additionalProperties":false,"description":"BigQuery table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.3.bigqueryTable","typeLabel":"bigquery_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.3.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.3","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["clickhouseTable"],"properties":{"clickhouseTable":{"type":"object","properties":{"host":{"type":"string","description":"Clickhouse hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.4.clickhouseTable.host","typeLabel":"string"},"schema":{"type":"string","description":"Clickhouse database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.4.clickhouseTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Clickhouse table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.4.clickhouseTable.table","typeLabel":"string"}},"title":"clickhouse_table","required":["host","schema","table"],"additionalProperties":false,"description":"Clickhouse table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.4.clickhouseTable","typeLabel":"clickhouse_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.4.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.4","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["custom"],"properties":{"custom":{"type":"object","properties":{"id":{"type":"string","description":"Id that identifies the custom entity\n The Id should be unique within the custom entity Identifier.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.5.custom.id","typeLabel":"string"}},"title":"custom","required":["id"],"additionalProperties":false,"description":"Custom identifier to be used with all custom created entities","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.5.custom","typeLabel":"custom · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.5.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.5","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["databricksTable"],"properties":{"databricksTable":{"type":"object","properties":{"workspace":{"type":"string","description":"URL of Databricks workspace","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.6.databricksTable.workspace","typeLabel":"string"},"catalog":{"type":"string","description":"Databricks catalog","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.6.databricksTable.catalog","typeLabel":"string"},"schema":{"type":"string","description":"Databricks schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.6.databricksTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Databricks table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.6.databricksTable.table","typeLabel":"string"}},"title":"databricks_table","required":["workspace","catalog","schema","table"],"additionalProperties":false,"description":"Databricks table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.6.databricksTable","typeLabel":"databricks_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.6.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.6","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["dataproduct"],"properties":{"dataproduct":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Dataproduct id that identifies the Dataproduct","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.7.dataproduct.id","typeLabel":"string\u003cuuid>"}},"title":"dataproduct","required":["id"],"additionalProperties":false,"description":"Dataproduct identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.7.dataproduct","typeLabel":"dataproduct · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.7.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.7","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["db2Table"],"properties":{"db2Table":{"type":"object","properties":{"host":{"type":"string","description":"Host name of the Db2 server","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.8.db2Table.host","typeLabel":"string"},"database":{"type":"string","description":"Database name or alias, as in `CONNECT TO \u003cdatabase>`","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.8.db2Table.database","typeLabel":"string"},"schema":{"type":"string","description":"Db2 schema (e.g. \"DB2INST1\")","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.8.db2Table.schema","typeLabel":"string"},"table":{"type":"string","description":"Db2 table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.8.db2Table.table","typeLabel":"string"}},"title":"db2_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"IBM Db2 LUW table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.8.db2Table","typeLabel":"db2_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.8.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.8","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["dbtCloudNode"],"properties":{"dbtCloudNode":{"type":"object","properties":{"projectId":{"type":"string","description":"Your dbt Cloud project id","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.9.dbtCloudNode.projectId","typeLabel":"string"},"nodeId":{"type":"string","description":"Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.9.dbtCloudNode.nodeId","typeLabel":"string"},"accountId":{"type":"string","description":"Your dbt Cloud account id","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.9.dbtCloudNode.accountId","typeLabel":"string"}},"title":"dbt_cloud_node","required":["projectId","nodeId"],"additionalProperties":false,"description":"Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Cloud project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.9.dbtCloudNode","typeLabel":"dbt_cloud_node · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.9.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.9","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["dbtCoreNode"],"properties":{"dbtCoreNode":{"type":"object","properties":{"integrationId":{"type":"string","description":"Opaque identifier of the dbt Core project. Usually the Coalesce Quality\n integration id (a UUID), but may also be the dbt project name from\n manifest.json when the integration is configured to identify assets by\n project name. Treat it as an opaque string, not a UUID.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.10.dbtCoreNode.integrationId","typeLabel":"string"},"nodeId":{"type":"string","description":"Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.10.dbtCoreNode.nodeId","typeLabel":"string"}},"title":"dbt_core_node","required":["integrationId","nodeId"],"additionalProperties":false,"description":"Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.10.dbtCoreNode","typeLabel":"dbt_core_node · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.10.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.10","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["fabricTable"],"properties":{"fabricTable":{"type":"object","properties":{"instance":{"type":"string","description":"Workspace SQL analytics endpoint host, e.g.\n \"\u003cworkspace-id>.datawarehouse.fabric.microsoft.com\".","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.11.fabricTable.instance","typeLabel":"string"},"database":{"type":"string","description":"Fabric warehouse / lakehouse (database).","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.11.fabricTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Schema within the database.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.11.fabricTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Table or view name.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.11.fabricTable.table","typeLabel":"string"},"workspaceId":{"type":"string","description":"Fabric workspace GUID, decoded from the endpoint host in `instance`.\n Optional and informational: the table is addressed by\n instance/database/schema/table, so leave it empty if you don't have it —\n it does not affect how the identifier resolves.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.11.fabricTable.workspaceId","typeLabel":"string"},"tenantId":{"type":"string","description":"Entra (Azure AD) tenant GUID, decoded from the endpoint host in `instance`.\n Optional and informational, like workspace_id.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.11.fabricTable.tenantId","typeLabel":"string"}},"title":"fabric_table","required":["instance","database","schema","table"],"additionalProperties":false,"description":"Microsoft Fabric table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.11.fabricTable","typeLabel":"fabric_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.11.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.11","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["monitor"],"properties":{"monitor":{"type":"object","properties":{"monitoredId":{"$circularRef":"692f0410-0d1f-42ff-a19a-f76d7c4a48ee","description":"Identifier of the monitored entity","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.12.monitor.monitoredId","typeLabel":"any"},"monitorId":{"type":"string","description":"Identifier of the monitor","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.12.monitor.monitorId","typeLabel":"string"},"segment":{"oneOf":[{"type":"string","description":"Optional monitor segmentation identifier","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.12.monitor.segment.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional monitor segmentation identifier","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.12.monitor.segment.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.12.monitor.segment","typeLabel":"string | null"},"integrationId":{"oneOf":[{"type":"string","description":"Coalesce Quality integration_id of the monitored identifier","deprecated":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.12.monitor.integrationId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Coalesce Quality integration_id of the monitored identifier","deprecated":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.12.monitor.integrationId.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.12.monitor.integrationId","typeLabel":"string | null"}},"title":"monitor","required":["monitoredId","monitorId"],"additionalProperties":false,"description":"Monitor identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.12.monitor","typeLabel":"monitor · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.12.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.12","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["mssqlTable"],"properties":{"mssqlTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the SQL Server instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.13.mssqlTable.host","typeLabel":"string"},"database":{"type":"string","description":"SQL Server database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.13.mssqlTable.database","typeLabel":"string"},"schema":{"type":"string","description":"SQL Server schema (e.g. \"dbo\")","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.13.mssqlTable.schema","typeLabel":"string"},"table":{"type":"string","description":"SQL Server table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.13.mssqlTable.table","typeLabel":"string"}},"title":"mssql_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"SQL Server table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.13.mssqlTable","typeLabel":"mssql_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.13.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.13","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["mysqlTable"],"properties":{"mysqlTable":{"type":"object","properties":{"host":{"type":"string","description":"Mysql hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.14.mysqlTable.host","typeLabel":"string"},"schema":{"type":"string","description":"Mysql database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.14.mysqlTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Mysql table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.14.mysqlTable.table","typeLabel":"string"}},"title":"mysql_table","required":["host","schema","table"],"additionalProperties":false,"description":"Mysql table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.14.mysqlTable","typeLabel":"mysql_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.14.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.14","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["oracleTable"],"properties":{"oracleTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the Oracle instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.15.oracleTable.host","typeLabel":"string"},"serviceName":{"type":"string","description":"Oracle service name (PDB)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.15.oracleTable.serviceName","typeLabel":"string"},"schema":{"type":"string","description":"Oracle schema (= owning user)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.15.oracleTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Oracle table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.15.oracleTable.table","typeLabel":"string"}},"title":"oracle_table","required":["host","serviceName","schema","table"],"additionalProperties":false,"description":"Oracle table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.15.oracleTable","typeLabel":"oracle_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.15.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.15","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["postgresTable"],"properties":{"postgresTable":{"type":"object","properties":{"host":{"type":"string","description":"Postgres hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.16.postgresTable.host","typeLabel":"string"},"database":{"type":"string","description":"Postgres database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.16.postgresTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Postgres schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.16.postgresTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Postgres table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.16.postgresTable.table","typeLabel":"string"}},"title":"postgres_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"Postgres table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.16.postgresTable","typeLabel":"postgres_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.16.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.16","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["redshiftTable"],"properties":{"redshiftTable":{"type":"object","properties":{"database":{"type":"string","description":"Redshift database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.17.redshiftTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Redshift schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.17.redshiftTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Redshift table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.17.redshiftTable.table","typeLabel":"string"},"cluster":{"type":"string","description":"Redshift cluster","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.17.redshiftTable.cluster","typeLabel":"string"}},"title":"redshift_table","required":["database","schema","table"],"additionalProperties":false,"description":"Redshift table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.17.redshiftTable","typeLabel":"redshift_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.17.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.17","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["savedView"],"properties":{"savedView":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Saved view id (client-supplied UUID) that identifies the saved view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.18.savedView.id","typeLabel":"string\u003cuuid>"}},"title":"saved_view","required":["id"],"additionalProperties":false,"description":"Saved view identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.18.savedView","typeLabel":"saved_view · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.18.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.18","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["snowflakeTable"],"properties":{"snowflakeTable":{"type":"object","properties":{"account":{"type":"string","description":"Snowflake account","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.19.snowflakeTable.account","typeLabel":"string"},"database":{"type":"string","description":"Snowflake database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.19.snowflakeTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Snowflake schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.19.snowflakeTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Snowflake table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.19.snowflakeTable.table","typeLabel":"string"}},"title":"snowflake_table","required":["account","database","schema","table"],"additionalProperties":false,"description":"Snowflake table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.19.snowflakeTable","typeLabel":"snowflake_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.19.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.19","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["sqlMeshAudit"],"properties":{"sqlMeshAudit":{"type":"object","properties":{"integrationId":{"type":"string","format":"uuid","description":"Coalesce Quality integration_id that identifies the dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.20.sqlMeshAudit.integrationId","typeLabel":"string\u003cuuid>"},"fqn":{"type":"string","description":"SQLMesh model fully qualified name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.20.sqlMeshAudit.fqn","typeLabel":"string"},"auditId":{"type":"string","description":"Identifier of the audit","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.20.sqlMeshAudit.auditId","typeLabel":"string"}},"title":"sql_mesh_audit","required":["integrationId","fqn","auditId"],"additionalProperties":false,"description":"SQLMesh Audit identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.20.sqlMeshAudit","typeLabel":"sql_mesh_audit · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.20.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.20","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["sqlMeshModel"],"properties":{"sqlMeshModel":{"type":"object","properties":{"integrationId":{"type":"string","format":"uuid","description":"Coalesce Quality integration_id that identifies the dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.21.sqlMeshModel.integrationId","typeLabel":"string\u003cuuid>"},"fqn":{"type":"string","description":"SQLMesh model fully qualified name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.21.sqlMeshModel.fqn","typeLabel":"string"}},"title":"sql_mesh_model","required":["integrationId","fqn"],"additionalProperties":false,"description":"SQLMesh Model identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.21.sqlMeshModel","typeLabel":"sql_mesh_model · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.21.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.21","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["synqPath"],"properties":{"synqPath":{"type":"object","properties":{"path":{"type":"string","description":"Coalesce Quality path that identifies the Coalesce Quality entity, needs to be one of supported paths","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.22.synqPath.path","typeLabel":"string"}},"title":"synq_path","required":["path"],"additionalProperties":false,"description":"SynqPath identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.22.synqPath","typeLabel":"synq_path · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.22.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.22","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity the data comes from. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. An upstream that does\n not exist yet is remembered and the edge appears once it does.","required":["trinoTable"],"properties":{"trinoTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the Trino instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.23.trinoTable.host","typeLabel":"string"},"catalog":{"type":"string","description":"Trino catalog","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.23.trinoTable.catalog","typeLabel":"string"},"schema":{"type":"string","description":"Trino schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.23.trinoTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Trino table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.23.trinoTable.table","typeLabel":"string"}},"title":"trino_table","required":["host","catalog","schema","table"],"additionalProperties":false,"description":"Trino table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.23.trinoTable","typeLabel":"trino_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.23.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream.oneOf.23","typeLabel":"Identifier · object"}],"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstream","typeLabel":"Identifier · object"},"upstreamColumn":{"type":"string","maxLength":255,"minLength":1,"description":"Column of the upstream entity the data comes from.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].upstreamColumn","typeLabel":"string"},"column":{"type":"string","maxLength":255,"minLength":1,"description":"Column of this entity the data flows into.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX].column","typeLabel":"string"}},"title":"ColumnEdge","required":["upstream","upstreamColumn","column"],"additionalProperties":false,"description":"ColumnEdge is one column of one upstream entity feeding one column of the\n entity this feature belongs to.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges.items.[INDEX]","typeLabel":"ColumnEdge · object"},"maxItems":10000,"description":"Column-level edges into this entity. Every edge names one upstream entity\n and one column on each side.","uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage.edges","typeLabel":"ColumnEdge · object[]"}},"title":"column_lineage","additionalProperties":false,"description":"Only one feature per entity.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.2.columnLineage","typeLabel":"column_lineage · object"},"workspace":{"type":"string","title":"workspace","description":"Immutable workspace identifier that this entity belongs to.","uniqueKey":"features.items.[INDEX].oneOf.2.workspace","typeLabel":"string"},"featureId":{"type":"string","title":"feature_id","maxLength":255,"description":"Identifier of the feature. Can be any string, e.g. \"sql\" for SQL feature. Use same identifier to update the feature.\n Do not use random identifier as it will create a new feature on every update.","uniqueKey":"features.items.[INDEX].oneOf.2.featureId","typeLabel":"string"},"createdAt":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"Timestamp when the entity was created.","title":"created_at","uniqueKey":"features.items.[INDEX].oneOf.2.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"Timestamp when the entity was last updated.","title":"updated_at","uniqueKey":"features.items.[INDEX].oneOf.2.updatedAt","typeLabel":"string\u003cdate-time>"},"deletedAt":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"Timestamp when the entity was deleted. If this is set, the entity is considered deleted.","title":"deleted_at","uniqueKey":"features.items.[INDEX].oneOf.2.deletedAt","typeLabel":"string\u003cdate-time>"}},"additionalProperties":false,"uniqueKey":"features.items.[INDEX].oneOf.2","typeLabel":"Feature · object"},{"type":"object","title":"Feature","required":["entityId","gitFileReference"],"properties":{"entityId":{"oneOf":[{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["airflowDag"],"properties":{"airflowDag":{"type":"object","properties":{"integrationId":{"type":"string","description":"Coalesce Quality integration_id that identifies the Airflow instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.0.airflowDag.integrationId","typeLabel":"string"},"dagId":{"type":"string","description":"Airflow dag_id that identifies the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.0.airflowDag.dagId","typeLabel":"string"}},"title":"airflow_dag","required":["integrationId","dagId"],"additionalProperties":false,"description":"Airflow DAG identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.0.airflowDag","typeLabel":"airflow_dag · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.0.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.0","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["airflowTask"],"properties":{"airflowTask":{"type":"object","properties":{"integrationId":{"type":"string","description":"Coalesce Quality integration_id that identifies the Airflow instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.1.airflowTask.integrationId","typeLabel":"string"},"dagId":{"type":"string","description":"Airflow dag_id that identifies the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.1.airflowTask.dagId","typeLabel":"string"},"taskId":{"type":"string","description":"Airflow task_id that identifies the task within the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.1.airflowTask.taskId","typeLabel":"string"}},"title":"airflow_task","required":["integrationId","dagId","taskId"],"additionalProperties":false,"description":"Airflow task identifier within a given DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.1.airflowTask","typeLabel":"airflow_task · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.1.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.1","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["athenaTable"],"properties":{"athenaTable":{"type":"object","properties":{"instance":{"type":"string","description":"AWS account and region the Athena workgroup runs in, formatted as\n \"\u003caccount-id>.\u003cregion>\" (e.g. \"123456789012.eu-west-1\"). Auto-derived\n from sts:GetCallerIdentity at integration setup time.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.2.athenaTable.instance","typeLabel":"string"},"catalog":{"type":"string","description":"Glue Data Catalog name. Almost always \"AwsDataCatalog\" — the default\n catalog for Athena unless the customer registered a federated catalog.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.2.athenaTable.catalog","typeLabel":"string"},"database":{"type":"string","description":"Glue database (the namespace users typically filter on).","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.2.athenaTable.database","typeLabel":"string"},"table":{"type":"string","description":"Glue table or view name.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.2.athenaTable.table","typeLabel":"string"}},"title":"athena_table","required":["instance","catalog","database","table"],"additionalProperties":false,"description":"Amazon Athena (Glue) table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.2.athenaTable","typeLabel":"athena_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.2.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.2","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["bigqueryTable"],"properties":{"bigqueryTable":{"type":"object","properties":{"project":{"type":"string","description":"BigQuery project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.3.bigqueryTable.project","typeLabel":"string"},"dataset":{"type":"string","description":"BigQuery dataset id","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.3.bigqueryTable.dataset","typeLabel":"string"},"table":{"type":"string","description":"BigQuery table name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.3.bigqueryTable.table","typeLabel":"string"}},"title":"bigquery_table","required":["project","dataset","table"],"additionalProperties":false,"description":"BigQuery table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.3.bigqueryTable","typeLabel":"bigquery_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.3.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.3","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["clickhouseTable"],"properties":{"clickhouseTable":{"type":"object","properties":{"host":{"type":"string","description":"Clickhouse hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.4.clickhouseTable.host","typeLabel":"string"},"schema":{"type":"string","description":"Clickhouse database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.4.clickhouseTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Clickhouse table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.4.clickhouseTable.table","typeLabel":"string"}},"title":"clickhouse_table","required":["host","schema","table"],"additionalProperties":false,"description":"Clickhouse table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.4.clickhouseTable","typeLabel":"clickhouse_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.4.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.4","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["custom"],"properties":{"custom":{"type":"object","properties":{"id":{"type":"string","description":"Id that identifies the custom entity\n The Id should be unique within the custom entity Identifier.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.5.custom.id","typeLabel":"string"}},"title":"custom","required":["id"],"additionalProperties":false,"description":"Custom identifier to be used with all custom created entities","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.5.custom","typeLabel":"custom · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.5.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.5","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["databricksTable"],"properties":{"databricksTable":{"type":"object","properties":{"workspace":{"type":"string","description":"URL of Databricks workspace","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.6.databricksTable.workspace","typeLabel":"string"},"catalog":{"type":"string","description":"Databricks catalog","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.6.databricksTable.catalog","typeLabel":"string"},"schema":{"type":"string","description":"Databricks schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.6.databricksTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Databricks table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.6.databricksTable.table","typeLabel":"string"}},"title":"databricks_table","required":["workspace","catalog","schema","table"],"additionalProperties":false,"description":"Databricks table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.6.databricksTable","typeLabel":"databricks_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.6.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.6","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["dataproduct"],"properties":{"dataproduct":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Dataproduct id that identifies the Dataproduct","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.7.dataproduct.id","typeLabel":"string\u003cuuid>"}},"title":"dataproduct","required":["id"],"additionalProperties":false,"description":"Dataproduct identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.7.dataproduct","typeLabel":"dataproduct · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.7.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.7","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["db2Table"],"properties":{"db2Table":{"type":"object","properties":{"host":{"type":"string","description":"Host name of the Db2 server","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.8.db2Table.host","typeLabel":"string"},"database":{"type":"string","description":"Database name or alias, as in `CONNECT TO \u003cdatabase>`","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.8.db2Table.database","typeLabel":"string"},"schema":{"type":"string","description":"Db2 schema (e.g. \"DB2INST1\")","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.8.db2Table.schema","typeLabel":"string"},"table":{"type":"string","description":"Db2 table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.8.db2Table.table","typeLabel":"string"}},"title":"db2_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"IBM Db2 LUW table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.8.db2Table","typeLabel":"db2_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.8.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.8","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["dbtCloudNode"],"properties":{"dbtCloudNode":{"type":"object","properties":{"projectId":{"type":"string","description":"Your dbt Cloud project id","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.9.dbtCloudNode.projectId","typeLabel":"string"},"nodeId":{"type":"string","description":"Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.9.dbtCloudNode.nodeId","typeLabel":"string"},"accountId":{"type":"string","description":"Your dbt Cloud account id","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.9.dbtCloudNode.accountId","typeLabel":"string"}},"title":"dbt_cloud_node","required":["projectId","nodeId"],"additionalProperties":false,"description":"Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Cloud project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.9.dbtCloudNode","typeLabel":"dbt_cloud_node · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.9.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.9","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["dbtCoreNode"],"properties":{"dbtCoreNode":{"type":"object","properties":{"integrationId":{"type":"string","description":"Opaque identifier of the dbt Core project. Usually the Coalesce Quality\n integration id (a UUID), but may also be the dbt project name from\n manifest.json when the integration is configured to identify assets by\n project name. Treat it as an opaque string, not a UUID.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.10.dbtCoreNode.integrationId","typeLabel":"string"},"nodeId":{"type":"string","description":"Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.10.dbtCoreNode.nodeId","typeLabel":"string"}},"title":"dbt_core_node","required":["integrationId","nodeId"],"additionalProperties":false,"description":"Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.10.dbtCoreNode","typeLabel":"dbt_core_node · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.10.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.10","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["fabricTable"],"properties":{"fabricTable":{"type":"object","properties":{"instance":{"type":"string","description":"Workspace SQL analytics endpoint host, e.g.\n \"\u003cworkspace-id>.datawarehouse.fabric.microsoft.com\".","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.11.fabricTable.instance","typeLabel":"string"},"database":{"type":"string","description":"Fabric warehouse / lakehouse (database).","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.11.fabricTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Schema within the database.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.11.fabricTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Table or view name.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.11.fabricTable.table","typeLabel":"string"},"workspaceId":{"type":"string","description":"Fabric workspace GUID, decoded from the endpoint host in `instance`.\n Optional and informational: the table is addressed by\n instance/database/schema/table, so leave it empty if you don't have it —\n it does not affect how the identifier resolves.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.11.fabricTable.workspaceId","typeLabel":"string"},"tenantId":{"type":"string","description":"Entra (Azure AD) tenant GUID, decoded from the endpoint host in `instance`.\n Optional and informational, like workspace_id.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.11.fabricTable.tenantId","typeLabel":"string"}},"title":"fabric_table","required":["instance","database","schema","table"],"additionalProperties":false,"description":"Microsoft Fabric table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.11.fabricTable","typeLabel":"fabric_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.11.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.11","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["monitor"],"properties":{"monitor":{"type":"object","properties":{"monitoredId":{"$circularRef":"692f0410-0d1f-42ff-a19a-f76d7c4a48ee","description":"Identifier of the monitored entity","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.12.monitor.monitoredId","typeLabel":"any"},"monitorId":{"type":"string","description":"Identifier of the monitor","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.12.monitor.monitorId","typeLabel":"string"},"segment":{"oneOf":[{"type":"string","description":"Optional monitor segmentation identifier","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.12.monitor.segment.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional monitor segmentation identifier","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.12.monitor.segment.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.12.monitor.segment","typeLabel":"string | null"},"integrationId":{"oneOf":[{"type":"string","description":"Coalesce Quality integration_id of the monitored identifier","deprecated":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.12.monitor.integrationId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Coalesce Quality integration_id of the monitored identifier","deprecated":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.12.monitor.integrationId.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.12.monitor.integrationId","typeLabel":"string | null"}},"title":"monitor","required":["monitoredId","monitorId"],"additionalProperties":false,"description":"Monitor identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.12.monitor","typeLabel":"monitor · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.12.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.12","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["mssqlTable"],"properties":{"mssqlTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the SQL Server instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.13.mssqlTable.host","typeLabel":"string"},"database":{"type":"string","description":"SQL Server database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.13.mssqlTable.database","typeLabel":"string"},"schema":{"type":"string","description":"SQL Server schema (e.g. \"dbo\")","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.13.mssqlTable.schema","typeLabel":"string"},"table":{"type":"string","description":"SQL Server table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.13.mssqlTable.table","typeLabel":"string"}},"title":"mssql_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"SQL Server table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.13.mssqlTable","typeLabel":"mssql_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.13.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.13","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["mysqlTable"],"properties":{"mysqlTable":{"type":"object","properties":{"host":{"type":"string","description":"Mysql hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.14.mysqlTable.host","typeLabel":"string"},"schema":{"type":"string","description":"Mysql database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.14.mysqlTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Mysql table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.14.mysqlTable.table","typeLabel":"string"}},"title":"mysql_table","required":["host","schema","table"],"additionalProperties":false,"description":"Mysql table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.14.mysqlTable","typeLabel":"mysql_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.14.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.14","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["oracleTable"],"properties":{"oracleTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the Oracle instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.15.oracleTable.host","typeLabel":"string"},"serviceName":{"type":"string","description":"Oracle service name (PDB)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.15.oracleTable.serviceName","typeLabel":"string"},"schema":{"type":"string","description":"Oracle schema (= owning user)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.15.oracleTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Oracle table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.15.oracleTable.table","typeLabel":"string"}},"title":"oracle_table","required":["host","serviceName","schema","table"],"additionalProperties":false,"description":"Oracle table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.15.oracleTable","typeLabel":"oracle_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.15.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.15","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["postgresTable"],"properties":{"postgresTable":{"type":"object","properties":{"host":{"type":"string","description":"Postgres hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.16.postgresTable.host","typeLabel":"string"},"database":{"type":"string","description":"Postgres database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.16.postgresTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Postgres schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.16.postgresTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Postgres table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.16.postgresTable.table","typeLabel":"string"}},"title":"postgres_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"Postgres table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.16.postgresTable","typeLabel":"postgres_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.16.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.16","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["redshiftTable"],"properties":{"redshiftTable":{"type":"object","properties":{"database":{"type":"string","description":"Redshift database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.17.redshiftTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Redshift schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.17.redshiftTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Redshift table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.17.redshiftTable.table","typeLabel":"string"},"cluster":{"type":"string","description":"Redshift cluster","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.17.redshiftTable.cluster","typeLabel":"string"}},"title":"redshift_table","required":["database","schema","table"],"additionalProperties":false,"description":"Redshift table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.17.redshiftTable","typeLabel":"redshift_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.17.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.17","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["savedView"],"properties":{"savedView":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Saved view id (client-supplied UUID) that identifies the saved view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.18.savedView.id","typeLabel":"string\u003cuuid>"}},"title":"saved_view","required":["id"],"additionalProperties":false,"description":"Saved view identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.18.savedView","typeLabel":"saved_view · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.18.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.18","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["snowflakeTable"],"properties":{"snowflakeTable":{"type":"object","properties":{"account":{"type":"string","description":"Snowflake account","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.19.snowflakeTable.account","typeLabel":"string"},"database":{"type":"string","description":"Snowflake database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.19.snowflakeTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Snowflake schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.19.snowflakeTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Snowflake table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.19.snowflakeTable.table","typeLabel":"string"}},"title":"snowflake_table","required":["account","database","schema","table"],"additionalProperties":false,"description":"Snowflake table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.19.snowflakeTable","typeLabel":"snowflake_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.19.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.19","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["sqlMeshAudit"],"properties":{"sqlMeshAudit":{"type":"object","properties":{"integrationId":{"type":"string","format":"uuid","description":"Coalesce Quality integration_id that identifies the dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.20.sqlMeshAudit.integrationId","typeLabel":"string\u003cuuid>"},"fqn":{"type":"string","description":"SQLMesh model fully qualified name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.20.sqlMeshAudit.fqn","typeLabel":"string"},"auditId":{"type":"string","description":"Identifier of the audit","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.20.sqlMeshAudit.auditId","typeLabel":"string"}},"title":"sql_mesh_audit","required":["integrationId","fqn","auditId"],"additionalProperties":false,"description":"SQLMesh Audit identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.20.sqlMeshAudit","typeLabel":"sql_mesh_audit · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.20.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.20","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["sqlMeshModel"],"properties":{"sqlMeshModel":{"type":"object","properties":{"integrationId":{"type":"string","format":"uuid","description":"Coalesce Quality integration_id that identifies the dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.21.sqlMeshModel.integrationId","typeLabel":"string\u003cuuid>"},"fqn":{"type":"string","description":"SQLMesh model fully qualified name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.21.sqlMeshModel.fqn","typeLabel":"string"}},"title":"sql_mesh_model","required":["integrationId","fqn"],"additionalProperties":false,"description":"SQLMesh Model identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.21.sqlMeshModel","typeLabel":"sql_mesh_model · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.21.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.21","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["synqPath"],"properties":{"synqPath":{"type":"object","properties":{"path":{"type":"string","description":"Coalesce Quality path that identifies the Coalesce Quality entity, needs to be one of supported paths","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.22.synqPath.path","typeLabel":"string"}},"title":"synq_path","required":["path"],"additionalProperties":false,"description":"SynqPath identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.22.synqPath","typeLabel":"synq_path · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.22.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.22","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["trinoTable"],"properties":{"trinoTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the Trino instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.23.trinoTable.host","typeLabel":"string"},"catalog":{"type":"string","description":"Trino catalog","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.23.trinoTable.catalog","typeLabel":"string"},"schema":{"type":"string","description":"Trino schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.23.trinoTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Trino table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.23.trinoTable.table","typeLabel":"string"}},"title":"trino_table","required":["host","catalog","schema","table"],"additionalProperties":false,"description":"Trino table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.23.trinoTable","typeLabel":"trino_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.23.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId.oneOf.23","typeLabel":"entity_id · object"}],"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.entityId","typeLabel":"entity_id · object"},"gitFileReference":{"type":"object","properties":{"repositoryUrl":{"type":"string","maxLength":255,"minLength":1,"description":"URL of the git repository. Preferably SSH clone URL.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.gitFileReference.repositoryUrl","typeLabel":"string"},"branchName":{"type":"string","description":"Name of the branch in the git repository.\nstring.max_bytes = 244\n","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.gitFileReference.branchName","typeLabel":"string"},"filePath":{"type":"string","maxLength":255,"minLength":1,"description":"Path to the file in the git repository.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.gitFileReference.filePath","typeLabel":"string"}},"title":"git_file_reference","required":["repositoryUrl","branchName","filePath"],"additionalProperties":false,"description":"Multiple features per entity.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.3.gitFileReference","typeLabel":"git_file_reference · object"},"workspace":{"type":"string","title":"workspace","description":"Immutable workspace identifier that this entity belongs to.","uniqueKey":"features.items.[INDEX].oneOf.3.workspace","typeLabel":"string"},"featureId":{"type":"string","title":"feature_id","maxLength":255,"description":"Identifier of the feature. Can be any string, e.g. \"sql\" for SQL feature. Use same identifier to update the feature.\n Do not use random identifier as it will create a new feature on every update.","uniqueKey":"features.items.[INDEX].oneOf.3.featureId","typeLabel":"string"},"createdAt":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"Timestamp when the entity was created.","title":"created_at","uniqueKey":"features.items.[INDEX].oneOf.3.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"Timestamp when the entity was last updated.","title":"updated_at","uniqueKey":"features.items.[INDEX].oneOf.3.updatedAt","typeLabel":"string\u003cdate-time>"},"deletedAt":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"Timestamp when the entity was deleted. If this is set, the entity is considered deleted.","title":"deleted_at","uniqueKey":"features.items.[INDEX].oneOf.3.deletedAt","typeLabel":"string\u003cdate-time>"}},"additionalProperties":false,"uniqueKey":"features.items.[INDEX].oneOf.3","typeLabel":"Feature · object"},{"type":"object","title":"Feature","required":["entityId","schema"],"properties":{"entityId":{"oneOf":[{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["airflowDag"],"properties":{"airflowDag":{"type":"object","properties":{"integrationId":{"type":"string","description":"Coalesce Quality integration_id that identifies the Airflow instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.0.airflowDag.integrationId","typeLabel":"string"},"dagId":{"type":"string","description":"Airflow dag_id that identifies the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.0.airflowDag.dagId","typeLabel":"string"}},"title":"airflow_dag","required":["integrationId","dagId"],"additionalProperties":false,"description":"Airflow DAG identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.0.airflowDag","typeLabel":"airflow_dag · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.0.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.0","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["airflowTask"],"properties":{"airflowTask":{"type":"object","properties":{"integrationId":{"type":"string","description":"Coalesce Quality integration_id that identifies the Airflow instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.1.airflowTask.integrationId","typeLabel":"string"},"dagId":{"type":"string","description":"Airflow dag_id that identifies the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.1.airflowTask.dagId","typeLabel":"string"},"taskId":{"type":"string","description":"Airflow task_id that identifies the task within the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.1.airflowTask.taskId","typeLabel":"string"}},"title":"airflow_task","required":["integrationId","dagId","taskId"],"additionalProperties":false,"description":"Airflow task identifier within a given DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.1.airflowTask","typeLabel":"airflow_task · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.1.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.1","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["athenaTable"],"properties":{"athenaTable":{"type":"object","properties":{"instance":{"type":"string","description":"AWS account and region the Athena workgroup runs in, formatted as\n \"\u003caccount-id>.\u003cregion>\" (e.g. \"123456789012.eu-west-1\"). Auto-derived\n from sts:GetCallerIdentity at integration setup time.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.2.athenaTable.instance","typeLabel":"string"},"catalog":{"type":"string","description":"Glue Data Catalog name. Almost always \"AwsDataCatalog\" — the default\n catalog for Athena unless the customer registered a federated catalog.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.2.athenaTable.catalog","typeLabel":"string"},"database":{"type":"string","description":"Glue database (the namespace users typically filter on).","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.2.athenaTable.database","typeLabel":"string"},"table":{"type":"string","description":"Glue table or view name.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.2.athenaTable.table","typeLabel":"string"}},"title":"athena_table","required":["instance","catalog","database","table"],"additionalProperties":false,"description":"Amazon Athena (Glue) table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.2.athenaTable","typeLabel":"athena_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.2.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.2","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["bigqueryTable"],"properties":{"bigqueryTable":{"type":"object","properties":{"project":{"type":"string","description":"BigQuery project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.3.bigqueryTable.project","typeLabel":"string"},"dataset":{"type":"string","description":"BigQuery dataset id","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.3.bigqueryTable.dataset","typeLabel":"string"},"table":{"type":"string","description":"BigQuery table name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.3.bigqueryTable.table","typeLabel":"string"}},"title":"bigquery_table","required":["project","dataset","table"],"additionalProperties":false,"description":"BigQuery table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.3.bigqueryTable","typeLabel":"bigquery_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.3.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.3","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["clickhouseTable"],"properties":{"clickhouseTable":{"type":"object","properties":{"host":{"type":"string","description":"Clickhouse hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.4.clickhouseTable.host","typeLabel":"string"},"schema":{"type":"string","description":"Clickhouse database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.4.clickhouseTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Clickhouse table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.4.clickhouseTable.table","typeLabel":"string"}},"title":"clickhouse_table","required":["host","schema","table"],"additionalProperties":false,"description":"Clickhouse table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.4.clickhouseTable","typeLabel":"clickhouse_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.4.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.4","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["custom"],"properties":{"custom":{"type":"object","properties":{"id":{"type":"string","description":"Id that identifies the custom entity\n The Id should be unique within the custom entity Identifier.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.5.custom.id","typeLabel":"string"}},"title":"custom","required":["id"],"additionalProperties":false,"description":"Custom identifier to be used with all custom created entities","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.5.custom","typeLabel":"custom · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.5.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.5","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["databricksTable"],"properties":{"databricksTable":{"type":"object","properties":{"workspace":{"type":"string","description":"URL of Databricks workspace","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.6.databricksTable.workspace","typeLabel":"string"},"catalog":{"type":"string","description":"Databricks catalog","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.6.databricksTable.catalog","typeLabel":"string"},"schema":{"type":"string","description":"Databricks schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.6.databricksTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Databricks table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.6.databricksTable.table","typeLabel":"string"}},"title":"databricks_table","required":["workspace","catalog","schema","table"],"additionalProperties":false,"description":"Databricks table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.6.databricksTable","typeLabel":"databricks_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.6.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.6","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["dataproduct"],"properties":{"dataproduct":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Dataproduct id that identifies the Dataproduct","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.7.dataproduct.id","typeLabel":"string\u003cuuid>"}},"title":"dataproduct","required":["id"],"additionalProperties":false,"description":"Dataproduct identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.7.dataproduct","typeLabel":"dataproduct · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.7.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.7","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["db2Table"],"properties":{"db2Table":{"type":"object","properties":{"host":{"type":"string","description":"Host name of the Db2 server","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.8.db2Table.host","typeLabel":"string"},"database":{"type":"string","description":"Database name or alias, as in `CONNECT TO \u003cdatabase>`","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.8.db2Table.database","typeLabel":"string"},"schema":{"type":"string","description":"Db2 schema (e.g. \"DB2INST1\")","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.8.db2Table.schema","typeLabel":"string"},"table":{"type":"string","description":"Db2 table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.8.db2Table.table","typeLabel":"string"}},"title":"db2_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"IBM Db2 LUW table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.8.db2Table","typeLabel":"db2_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.8.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.8","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["dbtCloudNode"],"properties":{"dbtCloudNode":{"type":"object","properties":{"projectId":{"type":"string","description":"Your dbt Cloud project id","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.9.dbtCloudNode.projectId","typeLabel":"string"},"nodeId":{"type":"string","description":"Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.9.dbtCloudNode.nodeId","typeLabel":"string"},"accountId":{"type":"string","description":"Your dbt Cloud account id","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.9.dbtCloudNode.accountId","typeLabel":"string"}},"title":"dbt_cloud_node","required":["projectId","nodeId"],"additionalProperties":false,"description":"Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Cloud project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.9.dbtCloudNode","typeLabel":"dbt_cloud_node · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.9.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.9","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["dbtCoreNode"],"properties":{"dbtCoreNode":{"type":"object","properties":{"integrationId":{"type":"string","description":"Opaque identifier of the dbt Core project. Usually the Coalesce Quality\n integration id (a UUID), but may also be the dbt project name from\n manifest.json when the integration is configured to identify assets by\n project name. Treat it as an opaque string, not a UUID.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.10.dbtCoreNode.integrationId","typeLabel":"string"},"nodeId":{"type":"string","description":"Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.10.dbtCoreNode.nodeId","typeLabel":"string"}},"title":"dbt_core_node","required":["integrationId","nodeId"],"additionalProperties":false,"description":"Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.10.dbtCoreNode","typeLabel":"dbt_core_node · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.10.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.10","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["fabricTable"],"properties":{"fabricTable":{"type":"object","properties":{"instance":{"type":"string","description":"Workspace SQL analytics endpoint host, e.g.\n \"\u003cworkspace-id>.datawarehouse.fabric.microsoft.com\".","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.11.fabricTable.instance","typeLabel":"string"},"database":{"type":"string","description":"Fabric warehouse / lakehouse (database).","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.11.fabricTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Schema within the database.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.11.fabricTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Table or view name.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.11.fabricTable.table","typeLabel":"string"},"workspaceId":{"type":"string","description":"Fabric workspace GUID, decoded from the endpoint host in `instance`.\n Optional and informational: the table is addressed by\n instance/database/schema/table, so leave it empty if you don't have it —\n it does not affect how the identifier resolves.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.11.fabricTable.workspaceId","typeLabel":"string"},"tenantId":{"type":"string","description":"Entra (Azure AD) tenant GUID, decoded from the endpoint host in `instance`.\n Optional and informational, like workspace_id.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.11.fabricTable.tenantId","typeLabel":"string"}},"title":"fabric_table","required":["instance","database","schema","table"],"additionalProperties":false,"description":"Microsoft Fabric table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.11.fabricTable","typeLabel":"fabric_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.11.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.11","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["monitor"],"properties":{"monitor":{"type":"object","properties":{"monitoredId":{"$circularRef":"692f0410-0d1f-42ff-a19a-f76d7c4a48ee","description":"Identifier of the monitored entity","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.12.monitor.monitoredId","typeLabel":"any"},"monitorId":{"type":"string","description":"Identifier of the monitor","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.12.monitor.monitorId","typeLabel":"string"},"segment":{"oneOf":[{"type":"string","description":"Optional monitor segmentation identifier","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.12.monitor.segment.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional monitor segmentation identifier","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.12.monitor.segment.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.12.monitor.segment","typeLabel":"string | null"},"integrationId":{"oneOf":[{"type":"string","description":"Coalesce Quality integration_id of the monitored identifier","deprecated":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.12.monitor.integrationId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Coalesce Quality integration_id of the monitored identifier","deprecated":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.12.monitor.integrationId.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.12.monitor.integrationId","typeLabel":"string | null"}},"title":"monitor","required":["monitoredId","monitorId"],"additionalProperties":false,"description":"Monitor identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.12.monitor","typeLabel":"monitor · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.12.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.12","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["mssqlTable"],"properties":{"mssqlTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the SQL Server instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.13.mssqlTable.host","typeLabel":"string"},"database":{"type":"string","description":"SQL Server database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.13.mssqlTable.database","typeLabel":"string"},"schema":{"type":"string","description":"SQL Server schema (e.g. \"dbo\")","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.13.mssqlTable.schema","typeLabel":"string"},"table":{"type":"string","description":"SQL Server table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.13.mssqlTable.table","typeLabel":"string"}},"title":"mssql_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"SQL Server table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.13.mssqlTable","typeLabel":"mssql_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.13.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.13","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["mysqlTable"],"properties":{"mysqlTable":{"type":"object","properties":{"host":{"type":"string","description":"Mysql hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.14.mysqlTable.host","typeLabel":"string"},"schema":{"type":"string","description":"Mysql database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.14.mysqlTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Mysql table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.14.mysqlTable.table","typeLabel":"string"}},"title":"mysql_table","required":["host","schema","table"],"additionalProperties":false,"description":"Mysql table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.14.mysqlTable","typeLabel":"mysql_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.14.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.14","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["oracleTable"],"properties":{"oracleTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the Oracle instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.15.oracleTable.host","typeLabel":"string"},"serviceName":{"type":"string","description":"Oracle service name (PDB)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.15.oracleTable.serviceName","typeLabel":"string"},"schema":{"type":"string","description":"Oracle schema (= owning user)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.15.oracleTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Oracle table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.15.oracleTable.table","typeLabel":"string"}},"title":"oracle_table","required":["host","serviceName","schema","table"],"additionalProperties":false,"description":"Oracle table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.15.oracleTable","typeLabel":"oracle_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.15.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.15","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["postgresTable"],"properties":{"postgresTable":{"type":"object","properties":{"host":{"type":"string","description":"Postgres hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.16.postgresTable.host","typeLabel":"string"},"database":{"type":"string","description":"Postgres database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.16.postgresTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Postgres schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.16.postgresTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Postgres table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.16.postgresTable.table","typeLabel":"string"}},"title":"postgres_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"Postgres table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.16.postgresTable","typeLabel":"postgres_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.16.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.16","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["redshiftTable"],"properties":{"redshiftTable":{"type":"object","properties":{"database":{"type":"string","description":"Redshift database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.17.redshiftTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Redshift schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.17.redshiftTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Redshift table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.17.redshiftTable.table","typeLabel":"string"},"cluster":{"type":"string","description":"Redshift cluster","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.17.redshiftTable.cluster","typeLabel":"string"}},"title":"redshift_table","required":["database","schema","table"],"additionalProperties":false,"description":"Redshift table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.17.redshiftTable","typeLabel":"redshift_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.17.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.17","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["savedView"],"properties":{"savedView":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Saved view id (client-supplied UUID) that identifies the saved view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.18.savedView.id","typeLabel":"string\u003cuuid>"}},"title":"saved_view","required":["id"],"additionalProperties":false,"description":"Saved view identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.18.savedView","typeLabel":"saved_view · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.18.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.18","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["snowflakeTable"],"properties":{"snowflakeTable":{"type":"object","properties":{"account":{"type":"string","description":"Snowflake account","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.19.snowflakeTable.account","typeLabel":"string"},"database":{"type":"string","description":"Snowflake database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.19.snowflakeTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Snowflake schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.19.snowflakeTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Snowflake table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.19.snowflakeTable.table","typeLabel":"string"}},"title":"snowflake_table","required":["account","database","schema","table"],"additionalProperties":false,"description":"Snowflake table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.19.snowflakeTable","typeLabel":"snowflake_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.19.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.19","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["sqlMeshAudit"],"properties":{"sqlMeshAudit":{"type":"object","properties":{"integrationId":{"type":"string","format":"uuid","description":"Coalesce Quality integration_id that identifies the dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.20.sqlMeshAudit.integrationId","typeLabel":"string\u003cuuid>"},"fqn":{"type":"string","description":"SQLMesh model fully qualified name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.20.sqlMeshAudit.fqn","typeLabel":"string"},"auditId":{"type":"string","description":"Identifier of the audit","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.20.sqlMeshAudit.auditId","typeLabel":"string"}},"title":"sql_mesh_audit","required":["integrationId","fqn","auditId"],"additionalProperties":false,"description":"SQLMesh Audit identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.20.sqlMeshAudit","typeLabel":"sql_mesh_audit · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.20.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.20","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["sqlMeshModel"],"properties":{"sqlMeshModel":{"type":"object","properties":{"integrationId":{"type":"string","format":"uuid","description":"Coalesce Quality integration_id that identifies the dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.21.sqlMeshModel.integrationId","typeLabel":"string\u003cuuid>"},"fqn":{"type":"string","description":"SQLMesh model fully qualified name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.21.sqlMeshModel.fqn","typeLabel":"string"}},"title":"sql_mesh_model","required":["integrationId","fqn"],"additionalProperties":false,"description":"SQLMesh Model identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.21.sqlMeshModel","typeLabel":"sql_mesh_model · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.21.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.21","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["synqPath"],"properties":{"synqPath":{"type":"object","properties":{"path":{"type":"string","description":"Coalesce Quality path that identifies the Coalesce Quality entity, needs to be one of supported paths","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.22.synqPath.path","typeLabel":"string"}},"title":"synq_path","required":["path"],"additionalProperties":false,"description":"SynqPath identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.22.synqPath","typeLabel":"synq_path · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.22.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.22","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["trinoTable"],"properties":{"trinoTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the Trino instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.23.trinoTable.host","typeLabel":"string"},"catalog":{"type":"string","description":"Trino catalog","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.23.trinoTable.catalog","typeLabel":"string"},"schema":{"type":"string","description":"Trino schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.23.trinoTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Trino table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.23.trinoTable.table","typeLabel":"string"}},"title":"trino_table","required":["host","catalog","schema","table"],"additionalProperties":false,"description":"Trino table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.23.trinoTable","typeLabel":"trino_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.23.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId.oneOf.23","typeLabel":"entity_id · object"}],"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.entityId","typeLabel":"entity_id · object"},"schema":{"type":"object","properties":{"stateAt":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"Time when the schema was defined, will default to `now` if not set.","uniqueKey":"features.items.[INDEX].oneOf.4.schema.stateAt","typeLabel":"string\u003cdate-time>"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"minLength":1,"description":"Human readable name of the column as present in dbt or data warehouse.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].name","typeLabel":"string"},"nativeType":{"type":"string","maxLength":255,"description":"Native data type of the column as present in data warehouse.","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].nativeType","typeLabel":"string"},"description":{"type":"string","maxLength":1000,"description":"Description of the column","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].description","typeLabel":"string"},"ordinalPosition":{"type":"integer","maximum":1001,"minimum":0,"format":"int32","description":"Ordinal position of the column in the table, starting from 1","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].ordinalPosition","typeLabel":"integer\u003cint32>"},"isStruct":{"type":"boolean","description":"Indicates that the column type could be used as a struct/json in a data warehouse","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].isStruct","typeLabel":"boolean"},"isRepeated":{"type":"boolean","description":"Indicates that the column is a repeated field in a data warehouse (e.g. array)","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].isRepeated","typeLabel":"boolean"},"fields":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"minLength":1,"description":"Human readable name of the column as present in dbt or data warehouse.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].fields.items.[INDEX].name","typeLabel":"string"},"nativeType":{"type":"string","maxLength":255,"description":"Native data type of the column as present in data warehouse.","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].fields.items.[INDEX].nativeType","typeLabel":"string"},"description":{"type":"string","maxLength":1000,"description":"Description of the column","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].fields.items.[INDEX].description","typeLabel":"string"},"ordinalPosition":{"type":"integer","maximum":1001,"minimum":0,"format":"int32","description":"Ordinal position of the column in the struct, starting from 1","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].fields.items.[INDEX].ordinalPosition","typeLabel":"integer\u003cint32>"},"isStruct":{"type":"boolean","description":"Indicates that the field type could be used as a struct/json in a data warehouse","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].fields.items.[INDEX].isStruct","typeLabel":"boolean"},"isRepeated":{"type":"boolean","description":"Indicates that the field is a repeated field in a data warehouse (e.g. array)","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].fields.items.[INDEX].isRepeated","typeLabel":"boolean"},"fields":{"type":"array","items":{"$circularRef":"a0405c54-7654-4d65-a1a7-697e22a6263c"},"maxItems":100,"description":"Fields inside of the struct/record like field","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].fields.items.[INDEX].fields","typeLabel":"array"}},"title":"SchemaColumnField","required":["name"],"additionalProperties":false,"uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].fields.items.[INDEX]","typeLabel":"SchemaColumnField · object"},"maxItems":100,"description":"Fields inside of the struct/record like column","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].fields","typeLabel":"SchemaColumnField · object[]"},"precision":{"oneOf":[{"type":["integer","string"],"maximum":1000,"minimum":1,"format":"int64","description":"Declared precision of an exact numeric column (NUMERIC, DECIMAL, NUMBER), in\n decimal digits. Set whichever category the column reads as, so a NUMBER(38,0)\n is NUMERIC_CATEGORY_INTEGER with precision 38 and scale 0. Unset for every\n other column, and for an exact numeric whose size the data warehouse does\n not report.","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].precision.oneOf.0","typeLabel":"integer"},{"type":"null","maximum":1000,"minimum":1,"format":"int64","description":"Declared precision of an exact numeric column (NUMERIC, DECIMAL, NUMBER), in\n decimal digits. Set whichever category the column reads as, so a NUMBER(38,0)\n is NUMERIC_CATEGORY_INTEGER with precision 38 and scale 0. Unset for every\n other column, and for an exact numeric whose size the data warehouse does\n not report.","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].precision.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].precision","typeLabel":"integer | null"},"scale":{"oneOf":[{"type":["integer","string"],"maximum":1000,"minimum":0,"format":"int64","description":"Declared scale of an exact numeric column, set together with precision.\n Unset is not a scale of 0: it means the scale is not known.","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].scale.oneOf.0","typeLabel":"integer"},{"type":"null","maximum":1000,"minimum":0,"format":"int64","description":"Declared scale of an exact numeric column, set together with precision.\n Unset is not a scale of 0: it means the scale is not known.","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].scale.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].scale","typeLabel":"integer | null"},"numericCategory":{"type":"string","title":"NumericCategory","enum":["NUMERIC_CATEGORY_UNSPECIFIED","NUMERIC_CATEGORY_INTEGER","NUMERIC_CATEGORY_DECIMAL","NUMERIC_CATEGORY_FLOAT","NUMERIC_CATEGORY_SINGLE_PRECISION_FLOAT"],"description":"What kind of number the column holds. Unspecified for a non-numeric column,\n and for one whose type is not recognised.","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].numericCategory","typeLabel":"enum\u003cstring>"},"tags":{"type":"array","items":{"type":"object","properties":{"tagName":{"type":"string","maxLength":512,"minLength":1,"description":"Name of the tag, in the form its kind describes.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].tags.items.[INDEX].tagName","typeLabel":"string"},"tagValue":{"type":"string","maxLength":1000,"description":"Value of the tag, empty for a tag that carries none.","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].tags.items.[INDEX].tagValue","typeLabel":"string"},"kind":{"type":"string","title":"SchemaTagKind","enum":["SCHEMA_TAG_KIND_UNSPECIFIED","SCHEMA_TAG_KIND_LABEL","SCHEMA_TAG_KIND_GOVERNED_TAG","SCHEMA_TAG_KIND_POLICY_TAG"],"description":"What the data warehouse means by the tag.","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].tags.items.[INDEX].kind","typeLabel":"enum\u003cstring>"}},"title":"SchemaTag","required":["tagName"],"additionalProperties":false,"description":"SchemaTag is a tag or label the data warehouse assigns to a table or a column.\n Its kind says which of the platform's tags it is, and the name is the\n platform's own.","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].tags.items.[INDEX]","typeLabel":"SchemaTag · object"},"maxItems":100,"description":"Tags the data warehouse assigns to the column, sorted by name and then\n value. Only top-level columns carry tags.","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].tags","typeLabel":"SchemaTag · object[]"},"isNullable":{"oneOf":[{"type":"boolean","description":"True when the column accepts NULL, false when it is declared NOT NULL.\n Unset when the data warehouse does not report it.","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].isNullable.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when the column accepts NULL, false when it is declared NOT NULL.\n Unset when the data warehouse does not report it.","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].isNullable.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX].isNullable","typeLabel":"boolean | null"}},"title":"SchemaColumn","required":["name"],"additionalProperties":false,"uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns.items.[INDEX]","typeLabel":"SchemaColumn · object"},"maxItems":1000,"description":"Columns of the schema\n Columns are ordered by ordinal_position, it has to be defined for all or none of the columns,\n when not defined, ordinal positions are attached according to the order of columns in the list.","uniqueKey":"features.items.[INDEX].oneOf.4.schema.columns","typeLabel":"SchemaColumn · object[]"}},"title":"schema","additionalProperties":false,"description":"Only one feature per entity.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.4.schema","typeLabel":"schema · object"},"workspace":{"type":"string","title":"workspace","description":"Immutable workspace identifier that this entity belongs to.","uniqueKey":"features.items.[INDEX].oneOf.4.workspace","typeLabel":"string"},"featureId":{"type":"string","title":"feature_id","maxLength":255,"description":"Identifier of the feature. Can be any string, e.g. \"sql\" for SQL feature. Use same identifier to update the feature.\n Do not use random identifier as it will create a new feature on every update.","uniqueKey":"features.items.[INDEX].oneOf.4.featureId","typeLabel":"string"},"createdAt":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"Timestamp when the entity was created.","title":"created_at","uniqueKey":"features.items.[INDEX].oneOf.4.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"Timestamp when the entity was last updated.","title":"updated_at","uniqueKey":"features.items.[INDEX].oneOf.4.updatedAt","typeLabel":"string\u003cdate-time>"},"deletedAt":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"Timestamp when the entity was deleted. If this is set, the entity is considered deleted.","title":"deleted_at","uniqueKey":"features.items.[INDEX].oneOf.4.deletedAt","typeLabel":"string\u003cdate-time>"}},"additionalProperties":false,"uniqueKey":"features.items.[INDEX].oneOf.4","typeLabel":"Feature · object"},{"type":"object","title":"Feature","required":["entityId","sqlDefinition"],"properties":{"entityId":{"oneOf":[{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["airflowDag"],"properties":{"airflowDag":{"type":"object","properties":{"integrationId":{"type":"string","description":"Coalesce Quality integration_id that identifies the Airflow instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.0.airflowDag.integrationId","typeLabel":"string"},"dagId":{"type":"string","description":"Airflow dag_id that identifies the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.0.airflowDag.dagId","typeLabel":"string"}},"title":"airflow_dag","required":["integrationId","dagId"],"additionalProperties":false,"description":"Airflow DAG identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.0.airflowDag","typeLabel":"airflow_dag · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.0.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.0","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["airflowTask"],"properties":{"airflowTask":{"type":"object","properties":{"integrationId":{"type":"string","description":"Coalesce Quality integration_id that identifies the Airflow instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.1.airflowTask.integrationId","typeLabel":"string"},"dagId":{"type":"string","description":"Airflow dag_id that identifies the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.1.airflowTask.dagId","typeLabel":"string"},"taskId":{"type":"string","description":"Airflow task_id that identifies the task within the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.1.airflowTask.taskId","typeLabel":"string"}},"title":"airflow_task","required":["integrationId","dagId","taskId"],"additionalProperties":false,"description":"Airflow task identifier within a given DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.1.airflowTask","typeLabel":"airflow_task · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.1.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.1","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["athenaTable"],"properties":{"athenaTable":{"type":"object","properties":{"instance":{"type":"string","description":"AWS account and region the Athena workgroup runs in, formatted as\n \"\u003caccount-id>.\u003cregion>\" (e.g. \"123456789012.eu-west-1\"). Auto-derived\n from sts:GetCallerIdentity at integration setup time.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.2.athenaTable.instance","typeLabel":"string"},"catalog":{"type":"string","description":"Glue Data Catalog name. Almost always \"AwsDataCatalog\" — the default\n catalog for Athena unless the customer registered a federated catalog.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.2.athenaTable.catalog","typeLabel":"string"},"database":{"type":"string","description":"Glue database (the namespace users typically filter on).","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.2.athenaTable.database","typeLabel":"string"},"table":{"type":"string","description":"Glue table or view name.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.2.athenaTable.table","typeLabel":"string"}},"title":"athena_table","required":["instance","catalog","database","table"],"additionalProperties":false,"description":"Amazon Athena (Glue) table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.2.athenaTable","typeLabel":"athena_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.2.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.2","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["bigqueryTable"],"properties":{"bigqueryTable":{"type":"object","properties":{"project":{"type":"string","description":"BigQuery project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.3.bigqueryTable.project","typeLabel":"string"},"dataset":{"type":"string","description":"BigQuery dataset id","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.3.bigqueryTable.dataset","typeLabel":"string"},"table":{"type":"string","description":"BigQuery table name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.3.bigqueryTable.table","typeLabel":"string"}},"title":"bigquery_table","required":["project","dataset","table"],"additionalProperties":false,"description":"BigQuery table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.3.bigqueryTable","typeLabel":"bigquery_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.3.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.3","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["clickhouseTable"],"properties":{"clickhouseTable":{"type":"object","properties":{"host":{"type":"string","description":"Clickhouse hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.4.clickhouseTable.host","typeLabel":"string"},"schema":{"type":"string","description":"Clickhouse database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.4.clickhouseTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Clickhouse table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.4.clickhouseTable.table","typeLabel":"string"}},"title":"clickhouse_table","required":["host","schema","table"],"additionalProperties":false,"description":"Clickhouse table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.4.clickhouseTable","typeLabel":"clickhouse_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.4.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.4","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["custom"],"properties":{"custom":{"type":"object","properties":{"id":{"type":"string","description":"Id that identifies the custom entity\n The Id should be unique within the custom entity Identifier.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.5.custom.id","typeLabel":"string"}},"title":"custom","required":["id"],"additionalProperties":false,"description":"Custom identifier to be used with all custom created entities","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.5.custom","typeLabel":"custom · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.5.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.5","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["databricksTable"],"properties":{"databricksTable":{"type":"object","properties":{"workspace":{"type":"string","description":"URL of Databricks workspace","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.6.databricksTable.workspace","typeLabel":"string"},"catalog":{"type":"string","description":"Databricks catalog","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.6.databricksTable.catalog","typeLabel":"string"},"schema":{"type":"string","description":"Databricks schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.6.databricksTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Databricks table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.6.databricksTable.table","typeLabel":"string"}},"title":"databricks_table","required":["workspace","catalog","schema","table"],"additionalProperties":false,"description":"Databricks table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.6.databricksTable","typeLabel":"databricks_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.6.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.6","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["dataproduct"],"properties":{"dataproduct":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Dataproduct id that identifies the Dataproduct","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.7.dataproduct.id","typeLabel":"string\u003cuuid>"}},"title":"dataproduct","required":["id"],"additionalProperties":false,"description":"Dataproduct identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.7.dataproduct","typeLabel":"dataproduct · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.7.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.7","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["db2Table"],"properties":{"db2Table":{"type":"object","properties":{"host":{"type":"string","description":"Host name of the Db2 server","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.8.db2Table.host","typeLabel":"string"},"database":{"type":"string","description":"Database name or alias, as in `CONNECT TO \u003cdatabase>`","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.8.db2Table.database","typeLabel":"string"},"schema":{"type":"string","description":"Db2 schema (e.g. \"DB2INST1\")","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.8.db2Table.schema","typeLabel":"string"},"table":{"type":"string","description":"Db2 table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.8.db2Table.table","typeLabel":"string"}},"title":"db2_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"IBM Db2 LUW table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.8.db2Table","typeLabel":"db2_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.8.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.8","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["dbtCloudNode"],"properties":{"dbtCloudNode":{"type":"object","properties":{"projectId":{"type":"string","description":"Your dbt Cloud project id","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.9.dbtCloudNode.projectId","typeLabel":"string"},"nodeId":{"type":"string","description":"Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.9.dbtCloudNode.nodeId","typeLabel":"string"},"accountId":{"type":"string","description":"Your dbt Cloud account id","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.9.dbtCloudNode.accountId","typeLabel":"string"}},"title":"dbt_cloud_node","required":["projectId","nodeId"],"additionalProperties":false,"description":"Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Cloud project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.9.dbtCloudNode","typeLabel":"dbt_cloud_node · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.9.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.9","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["dbtCoreNode"],"properties":{"dbtCoreNode":{"type":"object","properties":{"integrationId":{"type":"string","description":"Opaque identifier of the dbt Core project. Usually the Coalesce Quality\n integration id (a UUID), but may also be the dbt project name from\n manifest.json when the integration is configured to identify assets by\n project name. Treat it as an opaque string, not a UUID.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.10.dbtCoreNode.integrationId","typeLabel":"string"},"nodeId":{"type":"string","description":"Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.10.dbtCoreNode.nodeId","typeLabel":"string"}},"title":"dbt_core_node","required":["integrationId","nodeId"],"additionalProperties":false,"description":"Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.10.dbtCoreNode","typeLabel":"dbt_core_node · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.10.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.10","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["fabricTable"],"properties":{"fabricTable":{"type":"object","properties":{"instance":{"type":"string","description":"Workspace SQL analytics endpoint host, e.g.\n \"\u003cworkspace-id>.datawarehouse.fabric.microsoft.com\".","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.11.fabricTable.instance","typeLabel":"string"},"database":{"type":"string","description":"Fabric warehouse / lakehouse (database).","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.11.fabricTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Schema within the database.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.11.fabricTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Table or view name.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.11.fabricTable.table","typeLabel":"string"},"workspaceId":{"type":"string","description":"Fabric workspace GUID, decoded from the endpoint host in `instance`.\n Optional and informational: the table is addressed by\n instance/database/schema/table, so leave it empty if you don't have it —\n it does not affect how the identifier resolves.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.11.fabricTable.workspaceId","typeLabel":"string"},"tenantId":{"type":"string","description":"Entra (Azure AD) tenant GUID, decoded from the endpoint host in `instance`.\n Optional and informational, like workspace_id.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.11.fabricTable.tenantId","typeLabel":"string"}},"title":"fabric_table","required":["instance","database","schema","table"],"additionalProperties":false,"description":"Microsoft Fabric table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.11.fabricTable","typeLabel":"fabric_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.11.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.11","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["monitor"],"properties":{"monitor":{"type":"object","properties":{"monitoredId":{"$circularRef":"692f0410-0d1f-42ff-a19a-f76d7c4a48ee","description":"Identifier of the monitored entity","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.12.monitor.monitoredId","typeLabel":"any"},"monitorId":{"type":"string","description":"Identifier of the monitor","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.12.monitor.monitorId","typeLabel":"string"},"segment":{"oneOf":[{"type":"string","description":"Optional monitor segmentation identifier","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.12.monitor.segment.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional monitor segmentation identifier","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.12.monitor.segment.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.12.monitor.segment","typeLabel":"string | null"},"integrationId":{"oneOf":[{"type":"string","description":"Coalesce Quality integration_id of the monitored identifier","deprecated":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.12.monitor.integrationId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Coalesce Quality integration_id of the monitored identifier","deprecated":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.12.monitor.integrationId.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.12.monitor.integrationId","typeLabel":"string | null"}},"title":"monitor","required":["monitoredId","monitorId"],"additionalProperties":false,"description":"Monitor identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.12.monitor","typeLabel":"monitor · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.12.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.12","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["mssqlTable"],"properties":{"mssqlTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the SQL Server instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.13.mssqlTable.host","typeLabel":"string"},"database":{"type":"string","description":"SQL Server database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.13.mssqlTable.database","typeLabel":"string"},"schema":{"type":"string","description":"SQL Server schema (e.g. \"dbo\")","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.13.mssqlTable.schema","typeLabel":"string"},"table":{"type":"string","description":"SQL Server table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.13.mssqlTable.table","typeLabel":"string"}},"title":"mssql_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"SQL Server table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.13.mssqlTable","typeLabel":"mssql_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.13.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.13","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["mysqlTable"],"properties":{"mysqlTable":{"type":"object","properties":{"host":{"type":"string","description":"Mysql hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.14.mysqlTable.host","typeLabel":"string"},"schema":{"type":"string","description":"Mysql database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.14.mysqlTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Mysql table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.14.mysqlTable.table","typeLabel":"string"}},"title":"mysql_table","required":["host","schema","table"],"additionalProperties":false,"description":"Mysql table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.14.mysqlTable","typeLabel":"mysql_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.14.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.14","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["oracleTable"],"properties":{"oracleTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the Oracle instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.15.oracleTable.host","typeLabel":"string"},"serviceName":{"type":"string","description":"Oracle service name (PDB)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.15.oracleTable.serviceName","typeLabel":"string"},"schema":{"type":"string","description":"Oracle schema (= owning user)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.15.oracleTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Oracle table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.15.oracleTable.table","typeLabel":"string"}},"title":"oracle_table","required":["host","serviceName","schema","table"],"additionalProperties":false,"description":"Oracle table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.15.oracleTable","typeLabel":"oracle_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.15.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.15","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["postgresTable"],"properties":{"postgresTable":{"type":"object","properties":{"host":{"type":"string","description":"Postgres hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.16.postgresTable.host","typeLabel":"string"},"database":{"type":"string","description":"Postgres database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.16.postgresTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Postgres schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.16.postgresTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Postgres table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.16.postgresTable.table","typeLabel":"string"}},"title":"postgres_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"Postgres table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.16.postgresTable","typeLabel":"postgres_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.16.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.16","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["redshiftTable"],"properties":{"redshiftTable":{"type":"object","properties":{"database":{"type":"string","description":"Redshift database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.17.redshiftTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Redshift schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.17.redshiftTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Redshift table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.17.redshiftTable.table","typeLabel":"string"},"cluster":{"type":"string","description":"Redshift cluster","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.17.redshiftTable.cluster","typeLabel":"string"}},"title":"redshift_table","required":["database","schema","table"],"additionalProperties":false,"description":"Redshift table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.17.redshiftTable","typeLabel":"redshift_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.17.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.17","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["savedView"],"properties":{"savedView":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Saved view id (client-supplied UUID) that identifies the saved view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.18.savedView.id","typeLabel":"string\u003cuuid>"}},"title":"saved_view","required":["id"],"additionalProperties":false,"description":"Saved view identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.18.savedView","typeLabel":"saved_view · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.18.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.18","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["snowflakeTable"],"properties":{"snowflakeTable":{"type":"object","properties":{"account":{"type":"string","description":"Snowflake account","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.19.snowflakeTable.account","typeLabel":"string"},"database":{"type":"string","description":"Snowflake database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.19.snowflakeTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Snowflake schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.19.snowflakeTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Snowflake table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.19.snowflakeTable.table","typeLabel":"string"}},"title":"snowflake_table","required":["account","database","schema","table"],"additionalProperties":false,"description":"Snowflake table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.19.snowflakeTable","typeLabel":"snowflake_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.19.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.19","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["sqlMeshAudit"],"properties":{"sqlMeshAudit":{"type":"object","properties":{"integrationId":{"type":"string","format":"uuid","description":"Coalesce Quality integration_id that identifies the dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.20.sqlMeshAudit.integrationId","typeLabel":"string\u003cuuid>"},"fqn":{"type":"string","description":"SQLMesh model fully qualified name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.20.sqlMeshAudit.fqn","typeLabel":"string"},"auditId":{"type":"string","description":"Identifier of the audit","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.20.sqlMeshAudit.auditId","typeLabel":"string"}},"title":"sql_mesh_audit","required":["integrationId","fqn","auditId"],"additionalProperties":false,"description":"SQLMesh Audit identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.20.sqlMeshAudit","typeLabel":"sql_mesh_audit · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.20.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.20","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["sqlMeshModel"],"properties":{"sqlMeshModel":{"type":"object","properties":{"integrationId":{"type":"string","format":"uuid","description":"Coalesce Quality integration_id that identifies the dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.21.sqlMeshModel.integrationId","typeLabel":"string\u003cuuid>"},"fqn":{"type":"string","description":"SQLMesh model fully qualified name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.21.sqlMeshModel.fqn","typeLabel":"string"}},"title":"sql_mesh_model","required":["integrationId","fqn"],"additionalProperties":false,"description":"SQLMesh Model identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.21.sqlMeshModel","typeLabel":"sql_mesh_model · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.21.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.21","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["synqPath"],"properties":{"synqPath":{"type":"object","properties":{"path":{"type":"string","description":"Coalesce Quality path that identifies the Coalesce Quality entity, needs to be one of supported paths","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.22.synqPath.path","typeLabel":"string"}},"title":"synq_path","required":["path"],"additionalProperties":false,"description":"SynqPath identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.22.synqPath","typeLabel":"synq_path · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.22.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.22","typeLabel":"entity_id · object"},{"type":"object","title":"entity_id","description":"The identifier of the entity to create or update feature for.","required":["trinoTable"],"properties":{"trinoTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the Trino instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.23.trinoTable.host","typeLabel":"string"},"catalog":{"type":"string","description":"Trino catalog","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.23.trinoTable.catalog","typeLabel":"string"},"schema":{"type":"string","description":"Trino schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.23.trinoTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Trino table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.23.trinoTable.table","typeLabel":"string"}},"title":"trino_table","required":["host","catalog","schema","table"],"additionalProperties":false,"description":"Trino table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.23.trinoTable","typeLabel":"trino_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.23.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId.oneOf.23","typeLabel":"entity_id · object"}],"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.entityId","typeLabel":"entity_id · object"},"sqlDefinition":{"type":"object","properties":{"stateAt":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"Time when the sql was defined, will default to `now` if not set.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.stateAt","typeLabel":"string\u003cdate-time>"},"dialect":{"type":"string","title":"SqlDialect","enum":["SQL_DIALECT_UNSPECIFIED","SQL_DIALECT_BIGQUERY","SQL_DIALECT_CLICKHOUSE","SQL_DIALECT_DATABRICKS","SQL_DIALECT_MYSQL","SQL_DIALECT_POSTGRESQL","SQL_DIALECT_REDSHIFT","SQL_DIALECT_SNOWFLAKE","SQL_DIALECT_DUCKDB","SQL_DIALECT_TRINO","SQL_DIALECT_MSSQL","SQL_DIALECT_ORACLE","SQL_DIALECT_ATHENA","SQL_DIALECT_FABRIC","SQL_DIALECT_DB2"],"description":"SQL dialect used in the SQL.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.dialect","typeLabel":"enum\u003cstring>"},"sql":{"type":"string","maxLength":1000000,"description":"Final form of the SQL as executed in the database/data warehouse. Must be a valid SQL in the selected dialect.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.sql","typeLabel":"string"},"databaseContext":{"oneOf":[{"type":"object","properties":{"instanceName":{"type":"string","description":"Instance identifier (e.g. Snowflake account, Databricks workspace URL, BigQuery project)","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.databaseContext.oneOf.0.instanceName","typeLabel":"string"},"databaseName":{"type":"string","description":"Database or catalog name","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.databaseContext.oneOf.0.databaseName","typeLabel":"string"},"schemaName":{"type":"string","description":"Schema name","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.databaseContext.oneOf.0.schemaName","typeLabel":"string"},"objectName":{"type":"string","description":"Object name (e.g. table or view name) that the SQL writes to or creates.\n Only set when the SQL defines or materializes an object, e.g. `CREATE TABLE \u003cobject_name> AS SELECT ...`.\n Leave empty for read-only SQL such as dashboard queries or SELECT statements.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.databaseContext.oneOf.0.objectName","typeLabel":"string"}},"title":"DatabaseContext","additionalProperties":false,"description":"Optional database context for resolving unqualified table references in the SQL.\n When provided, helps CLL resolve schema-qualified references (e.g. `PROD.TABLE_NAME`)\n to the correct database instance and catalog.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.databaseContext.oneOf.0","typeLabel":"DatabaseContext · object"},{"type":"null","properties":{"instanceName":{"type":"string","description":"Instance identifier (e.g. Snowflake account, Databricks workspace URL, BigQuery project)"},"databaseName":{"type":"string","description":"Database or catalog name"},"schemaName":{"type":"string","description":"Schema name"},"objectName":{"type":"string","description":"Object name (e.g. table or view name) that the SQL writes to or creates.\n Only set when the SQL defines or materializes an object, e.g. `CREATE TABLE \u003cobject_name> AS SELECT ...`.\n Leave empty for read-only SQL such as dashboard queries or SELECT statements."}},"title":"DatabaseContext","additionalProperties":false,"description":"Optional database context for resolving unqualified table references in the SQL.\n When provided, helps CLL resolve schema-qualified references (e.g. `PROD.TABLE_NAME`)\n to the correct database instance and catalog.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.databaseContext.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.databaseContext","typeLabel":"DatabaseContext · object | null"},"references":{"type":"array","items":{"type":"object","properties":{"objectName":{"type":"string","maxLength":500,"minLength":1,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].objectName","typeLabel":"string"},"entity":{"oneOf":[{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["airflowDag"],"properties":{"airflowDag":{"type":"object","properties":{"integrationId":{"type":"string","description":"Coalesce Quality integration_id that identifies the Airflow instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.0.airflowDag.integrationId","typeLabel":"string"},"dagId":{"type":"string","description":"Airflow dag_id that identifies the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.0.airflowDag.dagId","typeLabel":"string"}},"title":"airflow_dag","required":["integrationId","dagId"],"additionalProperties":false,"description":"Airflow DAG identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.0.airflowDag","typeLabel":"airflow_dag · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.0.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.0","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["airflowTask"],"properties":{"airflowTask":{"type":"object","properties":{"integrationId":{"type":"string","description":"Coalesce Quality integration_id that identifies the Airflow instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.1.airflowTask.integrationId","typeLabel":"string"},"dagId":{"type":"string","description":"Airflow dag_id that identifies the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.1.airflowTask.dagId","typeLabel":"string"},"taskId":{"type":"string","description":"Airflow task_id that identifies the task within the DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.1.airflowTask.taskId","typeLabel":"string"}},"title":"airflow_task","required":["integrationId","dagId","taskId"],"additionalProperties":false,"description":"Airflow task identifier within a given DAG","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.1.airflowTask","typeLabel":"airflow_task · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.1.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.1","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["athenaTable"],"properties":{"athenaTable":{"type":"object","properties":{"instance":{"type":"string","description":"AWS account and region the Athena workgroup runs in, formatted as\n \"\u003caccount-id>.\u003cregion>\" (e.g. \"123456789012.eu-west-1\"). Auto-derived\n from sts:GetCallerIdentity at integration setup time.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.2.athenaTable.instance","typeLabel":"string"},"catalog":{"type":"string","description":"Glue Data Catalog name. Almost always \"AwsDataCatalog\" — the default\n catalog for Athena unless the customer registered a federated catalog.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.2.athenaTable.catalog","typeLabel":"string"},"database":{"type":"string","description":"Glue database (the namespace users typically filter on).","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.2.athenaTable.database","typeLabel":"string"},"table":{"type":"string","description":"Glue table or view name.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.2.athenaTable.table","typeLabel":"string"}},"title":"athena_table","required":["instance","catalog","database","table"],"additionalProperties":false,"description":"Amazon Athena (Glue) table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.2.athenaTable","typeLabel":"athena_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.2.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.2","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["bigqueryTable"],"properties":{"bigqueryTable":{"type":"object","properties":{"project":{"type":"string","description":"BigQuery project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.3.bigqueryTable.project","typeLabel":"string"},"dataset":{"type":"string","description":"BigQuery dataset id","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.3.bigqueryTable.dataset","typeLabel":"string"},"table":{"type":"string","description":"BigQuery table name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.3.bigqueryTable.table","typeLabel":"string"}},"title":"bigquery_table","required":["project","dataset","table"],"additionalProperties":false,"description":"BigQuery table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.3.bigqueryTable","typeLabel":"bigquery_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.3.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.3","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["clickhouseTable"],"properties":{"clickhouseTable":{"type":"object","properties":{"host":{"type":"string","description":"Clickhouse hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.4.clickhouseTable.host","typeLabel":"string"},"schema":{"type":"string","description":"Clickhouse database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.4.clickhouseTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Clickhouse table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.4.clickhouseTable.table","typeLabel":"string"}},"title":"clickhouse_table","required":["host","schema","table"],"additionalProperties":false,"description":"Clickhouse table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.4.clickhouseTable","typeLabel":"clickhouse_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.4.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.4","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["custom"],"properties":{"custom":{"type":"object","properties":{"id":{"type":"string","description":"Id that identifies the custom entity\n The Id should be unique within the custom entity Identifier.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.5.custom.id","typeLabel":"string"}},"title":"custom","required":["id"],"additionalProperties":false,"description":"Custom identifier to be used with all custom created entities","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.5.custom","typeLabel":"custom · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.5.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.5","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["databricksTable"],"properties":{"databricksTable":{"type":"object","properties":{"workspace":{"type":"string","description":"URL of Databricks workspace","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.6.databricksTable.workspace","typeLabel":"string"},"catalog":{"type":"string","description":"Databricks catalog","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.6.databricksTable.catalog","typeLabel":"string"},"schema":{"type":"string","description":"Databricks schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.6.databricksTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Databricks table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.6.databricksTable.table","typeLabel":"string"}},"title":"databricks_table","required":["workspace","catalog","schema","table"],"additionalProperties":false,"description":"Databricks table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.6.databricksTable","typeLabel":"databricks_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.6.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.6","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["dataproduct"],"properties":{"dataproduct":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Dataproduct id that identifies the Dataproduct","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.7.dataproduct.id","typeLabel":"string\u003cuuid>"}},"title":"dataproduct","required":["id"],"additionalProperties":false,"description":"Dataproduct identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.7.dataproduct","typeLabel":"dataproduct · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.7.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.7","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["db2Table"],"properties":{"db2Table":{"type":"object","properties":{"host":{"type":"string","description":"Host name of the Db2 server","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.8.db2Table.host","typeLabel":"string"},"database":{"type":"string","description":"Database name or alias, as in `CONNECT TO \u003cdatabase>`","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.8.db2Table.database","typeLabel":"string"},"schema":{"type":"string","description":"Db2 schema (e.g. \"DB2INST1\")","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.8.db2Table.schema","typeLabel":"string"},"table":{"type":"string","description":"Db2 table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.8.db2Table.table","typeLabel":"string"}},"title":"db2_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"IBM Db2 LUW table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.8.db2Table","typeLabel":"db2_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.8.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.8","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["dbtCloudNode"],"properties":{"dbtCloudNode":{"type":"object","properties":{"projectId":{"type":"string","description":"Your dbt Cloud project id","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.9.dbtCloudNode.projectId","typeLabel":"string"},"nodeId":{"type":"string","description":"Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.9.dbtCloudNode.nodeId","typeLabel":"string"},"accountId":{"type":"string","description":"Your dbt Cloud account id","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.9.dbtCloudNode.accountId","typeLabel":"string"}},"title":"dbt_cloud_node","required":["projectId","nodeId"],"additionalProperties":false,"description":"Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Cloud project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.9.dbtCloudNode","typeLabel":"dbt_cloud_node · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.9.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.9","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["dbtCoreNode"],"properties":{"dbtCoreNode":{"type":"object","properties":{"integrationId":{"type":"string","description":"Opaque identifier of the dbt Core project. Usually the Coalesce Quality\n integration id (a UUID), but may also be the dbt project name from\n manifest.json when the integration is configured to identify assets by\n project name. Treat it as an opaque string, not a UUID.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.10.dbtCoreNode.integrationId","typeLabel":"string"},"nodeId":{"type":"string","description":"Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.10.dbtCoreNode.nodeId","typeLabel":"string"}},"title":"dbt_core_node","required":["integrationId","nodeId"],"additionalProperties":false,"description":"Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.10.dbtCoreNode","typeLabel":"dbt_core_node · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.10.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.10","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["fabricTable"],"properties":{"fabricTable":{"type":"object","properties":{"instance":{"type":"string","description":"Workspace SQL analytics endpoint host, e.g.\n \"\u003cworkspace-id>.datawarehouse.fabric.microsoft.com\".","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.11.fabricTable.instance","typeLabel":"string"},"database":{"type":"string","description":"Fabric warehouse / lakehouse (database).","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.11.fabricTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Schema within the database.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.11.fabricTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Table or view name.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.11.fabricTable.table","typeLabel":"string"},"workspaceId":{"type":"string","description":"Fabric workspace GUID, decoded from the endpoint host in `instance`.\n Optional and informational: the table is addressed by\n instance/database/schema/table, so leave it empty if you don't have it —\n it does not affect how the identifier resolves.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.11.fabricTable.workspaceId","typeLabel":"string"},"tenantId":{"type":"string","description":"Entra (Azure AD) tenant GUID, decoded from the endpoint host in `instance`.\n Optional and informational, like workspace_id.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.11.fabricTable.tenantId","typeLabel":"string"}},"title":"fabric_table","required":["instance","database","schema","table"],"additionalProperties":false,"description":"Microsoft Fabric table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.11.fabricTable","typeLabel":"fabric_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.11.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.11","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["monitor"],"properties":{"monitor":{"type":"object","properties":{"monitoredId":{"$circularRef":"692f0410-0d1f-42ff-a19a-f76d7c4a48ee","description":"Identifier of the monitored entity","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.12.monitor.monitoredId","typeLabel":"any"},"monitorId":{"type":"string","description":"Identifier of the monitor","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.12.monitor.monitorId","typeLabel":"string"},"segment":{"oneOf":[{"type":"string","description":"Optional monitor segmentation identifier","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.12.monitor.segment.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional monitor segmentation identifier","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.12.monitor.segment.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.12.monitor.segment","typeLabel":"string | null"},"integrationId":{"oneOf":[{"type":"string","description":"Coalesce Quality integration_id of the monitored identifier","deprecated":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.12.monitor.integrationId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Coalesce Quality integration_id of the monitored identifier","deprecated":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.12.monitor.integrationId.oneOf.1","typeLabel":"null"}],"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.12.monitor.integrationId","typeLabel":"string | null"}},"title":"monitor","required":["monitoredId","monitorId"],"additionalProperties":false,"description":"Monitor identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.12.monitor","typeLabel":"monitor · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.12.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.12","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["mssqlTable"],"properties":{"mssqlTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the SQL Server instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.13.mssqlTable.host","typeLabel":"string"},"database":{"type":"string","description":"SQL Server database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.13.mssqlTable.database","typeLabel":"string"},"schema":{"type":"string","description":"SQL Server schema (e.g. \"dbo\")","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.13.mssqlTable.schema","typeLabel":"string"},"table":{"type":"string","description":"SQL Server table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.13.mssqlTable.table","typeLabel":"string"}},"title":"mssql_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"SQL Server table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.13.mssqlTable","typeLabel":"mssql_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.13.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.13","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["mysqlTable"],"properties":{"mysqlTable":{"type":"object","properties":{"host":{"type":"string","description":"Mysql hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.14.mysqlTable.host","typeLabel":"string"},"schema":{"type":"string","description":"Mysql database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.14.mysqlTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Mysql table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.14.mysqlTable.table","typeLabel":"string"}},"title":"mysql_table","required":["host","schema","table"],"additionalProperties":false,"description":"Mysql table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.14.mysqlTable","typeLabel":"mysql_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.14.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.14","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["oracleTable"],"properties":{"oracleTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the Oracle instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.15.oracleTable.host","typeLabel":"string"},"serviceName":{"type":"string","description":"Oracle service name (PDB)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.15.oracleTable.serviceName","typeLabel":"string"},"schema":{"type":"string","description":"Oracle schema (= owning user)","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.15.oracleTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Oracle table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.15.oracleTable.table","typeLabel":"string"}},"title":"oracle_table","required":["host","serviceName","schema","table"],"additionalProperties":false,"description":"Oracle table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.15.oracleTable","typeLabel":"oracle_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.15.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.15","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["postgresTable"],"properties":{"postgresTable":{"type":"object","properties":{"host":{"type":"string","description":"Postgres hostname without port","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.16.postgresTable.host","typeLabel":"string"},"database":{"type":"string","description":"Postgres database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.16.postgresTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Postgres schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.16.postgresTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Postgres table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.16.postgresTable.table","typeLabel":"string"}},"title":"postgres_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"Postgres table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.16.postgresTable","typeLabel":"postgres_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.16.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.16","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["redshiftTable"],"properties":{"redshiftTable":{"type":"object","properties":{"database":{"type":"string","description":"Redshift database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.17.redshiftTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Redshift schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.17.redshiftTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Redshift table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.17.redshiftTable.table","typeLabel":"string"},"cluster":{"type":"string","description":"Redshift cluster","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.17.redshiftTable.cluster","typeLabel":"string"}},"title":"redshift_table","required":["database","schema","table"],"additionalProperties":false,"description":"Redshift table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.17.redshiftTable","typeLabel":"redshift_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.17.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.17","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["savedView"],"properties":{"savedView":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Saved view id (client-supplied UUID) that identifies the saved view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.18.savedView.id","typeLabel":"string\u003cuuid>"}},"title":"saved_view","required":["id"],"additionalProperties":false,"description":"Saved view identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.18.savedView","typeLabel":"saved_view · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.18.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.18","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["snowflakeTable"],"properties":{"snowflakeTable":{"type":"object","properties":{"account":{"type":"string","description":"Snowflake account","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.19.snowflakeTable.account","typeLabel":"string"},"database":{"type":"string","description":"Snowflake database","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.19.snowflakeTable.database","typeLabel":"string"},"schema":{"type":"string","description":"Snowflake schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.19.snowflakeTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Snowflake table","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.19.snowflakeTable.table","typeLabel":"string"}},"title":"snowflake_table","required":["account","database","schema","table"],"additionalProperties":false,"description":"Snowflake table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.19.snowflakeTable","typeLabel":"snowflake_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.19.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.19","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["sqlMeshAudit"],"properties":{"sqlMeshAudit":{"type":"object","properties":{"integrationId":{"type":"string","format":"uuid","description":"Coalesce Quality integration_id that identifies the dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.20.sqlMeshAudit.integrationId","typeLabel":"string\u003cuuid>"},"fqn":{"type":"string","description":"SQLMesh model fully qualified name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.20.sqlMeshAudit.fqn","typeLabel":"string"},"auditId":{"type":"string","description":"Identifier of the audit","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.20.sqlMeshAudit.auditId","typeLabel":"string"}},"title":"sql_mesh_audit","required":["integrationId","fqn","auditId"],"additionalProperties":false,"description":"SQLMesh Audit identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.20.sqlMeshAudit","typeLabel":"sql_mesh_audit · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.20.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.20","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["sqlMeshModel"],"properties":{"sqlMeshModel":{"type":"object","properties":{"integrationId":{"type":"string","format":"uuid","description":"Coalesce Quality integration_id that identifies the dbt Core project","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.21.sqlMeshModel.integrationId","typeLabel":"string\u003cuuid>"},"fqn":{"type":"string","description":"SQLMesh model fully qualified name","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.21.sqlMeshModel.fqn","typeLabel":"string"}},"title":"sql_mesh_model","required":["integrationId","fqn"],"additionalProperties":false,"description":"SQLMesh Model identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.21.sqlMeshModel","typeLabel":"sql_mesh_model · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.21.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.21","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["synqPath"],"properties":{"synqPath":{"type":"object","properties":{"path":{"type":"string","description":"Coalesce Quality path that identifies the Coalesce Quality entity, needs to be one of supported paths","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.22.synqPath.path","typeLabel":"string"}},"title":"synq_path","required":["path"],"additionalProperties":false,"description":"SynqPath identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.22.synqPath","typeLabel":"synq_path · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.22.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.22","typeLabel":"Identifier · object"},{"type":"object","title":"Identifier","description":"The entity this name stands for. Any entity: another custom entity, or a\n table, model or dashboard from a connected platform. A custom entity must\n already exist, otherwise the write is refused. An entity from a connected\n platform that does not exist yet is kept, and the edge appears once the\n entity is ingested.","required":["trinoTable"],"properties":{"trinoTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the Trino instance","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.23.trinoTable.host","typeLabel":"string"},"catalog":{"type":"string","description":"Trino catalog","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.23.trinoTable.catalog","typeLabel":"string"},"schema":{"type":"string","description":"Trino schema","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.23.trinoTable.schema","typeLabel":"string"},"table":{"type":"string","description":"Trino table or view","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.23.trinoTable.table","typeLabel":"string"}},"title":"trino_table","required":["host","catalog","schema","table"],"additionalProperties":false,"description":"Trino table identifier","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.23.trinoTable","typeLabel":"trino_table · object"},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.23.entityId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity.oneOf.23","typeLabel":"Identifier · object"}],"isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].entity","typeLabel":"Identifier · object"},"instanceName":{"type":"string","maxLength":500,"description":"The name as the SQL writes it. Matched case-insensitively; a part left empty\n defaults from the definition's `database_context`, exactly as an unqualified\n table reference in the SQL does. So a binding of just `object_name:\n \"orders_topic\"` under a definition whose database is `kafka` matches both\n `FROM kafka.orders_topic` and `FROM orders_topic`.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].instanceName","typeLabel":"string"},"databaseName":{"type":"string","maxLength":500,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].databaseName","typeLabel":"string"},"schemaName":{"type":"string","maxLength":500,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX].schemaName","typeLabel":"string"}},"title":"SqlTableReference","required":["objectName","entity"],"additionalProperties":false,"description":"SqlTableReference binds one name, as the SQL writes it, to the entity that name stands for.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references.items.[INDEX]","typeLabel":"SqlTableReference · object"},"maxItems":200,"description":"Names in this SQL that are not database objects, each bound to the entity it\n stands for. A reference the SQL makes to one of these names resolves to that\n entity instead of being looked up in the database and dropped.\n\n Use it for the upstreams and downstreams a database cannot address: another\n custom entity, a queue, a service, an API. A name that IS a database object\n needs no binding — it resolves on its own.\n\n The bindings are part of the definition and replace with it: a binding\n dropped from a later write is gone, and the lineage it produced is\n withdrawn.","uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition.references","typeLabel":"SqlTableReference · object[]"}},"title":"sql_definition","additionalProperties":false,"description":"Only one feature per entity.","isRequired":true,"uniqueKey":"features.items.[INDEX].oneOf.5.sqlDefinition","typeLabel":"sql_definition · object"},"workspace":{"type":"string","title":"workspace","description":"Immutable workspace identifier that this entity belongs to.","uniqueKey":"features.items.[INDEX].oneOf.5.workspace","typeLabel":"string"},"featureId":{"type":"string","title":"feature_id","maxLength":255,"description":"Identifier of the feature. Can be any string, e.g. \"sql\" for SQL feature. Use same identifier to update the feature.\n Do not use random identifier as it will create a new feature on every update.","uniqueKey":"features.items.[INDEX].oneOf.5.featureId","typeLabel":"string"},"createdAt":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"Timestamp when the entity was created.","title":"created_at","uniqueKey":"features.items.[INDEX].oneOf.5.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"Timestamp when the entity was last updated.","title":"updated_at","uniqueKey":"features.items.[INDEX].oneOf.5.updatedAt","typeLabel":"string\u003cdate-time>"},"deletedAt":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"Timestamp when the entity was deleted. If this is set, the entity is considered deleted.","title":"deleted_at","uniqueKey":"features.items.[INDEX].oneOf.5.deletedAt","typeLabel":"string\u003cdate-time>"}},"additionalProperties":false,"uniqueKey":"features.items.[INDEX].oneOf.5","typeLabel":"Feature · object"}],"uniqueKey":"features.items.[INDEX]","typeLabel":"Feature · object"},"description":"List of features for the entity.","uniqueKey":"features","typeLabel":"Feature · object[]"},"pageInfo":{"type":"object","properties":{"totalCount":{"type":"integer","format":"int32","description":"Total number of items matching the request. May not be available for cursor-based pagination\n where the total is unknown or expensive to compute.\n Deprecated: most of the APIs which require pagination don't know the total count.","deprecated":true,"uniqueKey":"pageInfo.totalCount","typeLabel":"integer\u003cint32>"},"count":{"type":"integer","format":"int32","description":"Number of items returned in this response.","uniqueKey":"pageInfo.count","typeLabel":"integer\u003cint32>"},"lastId":{"type":"string","description":"Opaque cursor token for fetching the next page of results. Pass this value as the cursor\n in the next Pagination request to continue pagination. Empty if there are no more pages.","uniqueKey":"pageInfo.lastId","typeLabel":"string"}},"title":"PageInfo","additionalProperties":false,"description":"Paging information for this response. Always populated. Repeat the request\n passing page_info.last_id as pagination.cursor until last_id comes back\n empty to walk the whole result set.","uniqueKey":"pageInfo","typeLabel":"PageInfo · object"}},"title":"ListEntityFeaturesResponse","additionalProperties":false,"uniqueKey":"","typeLabel":"ListEntityFeaturesResponse · object"},"examples":{"Example":{"title":"Example","value":{"features":[{"entityId":{"airflowDag":{"integrationId":"\u003cstring>","dagId":"\u003cstring>"},"entityId":"\u003cstring>"},"checkCategory":{"kind":"\u003cstring>","package":"\u003cstring>","category":"\u003cstring>","governanceCategory":"\u003cstring>"},"workspace":"\u003cstring>","featureId":"\u003cstring>","createdAt":"2023-01-15T01:30:15.01Z","updatedAt":"2023-01-15T01:30:15.01Z","deletedAt":"2023-01-15T01:30:15.01Z"}],"pageInfo":{"totalCount":123,"count":123,"lastId":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"dd5880af-cdf1-4521-98fa-c871340142d2":{"bearerAuth":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"669c6e56-9702-4ed2-896e-cea41abbf730":{"url":"https://developer.synq.io"},"9a0b8ed5-0b97-421b-bed5-1f396869feae":{"url":"https://api.us.synq.io"},"d0c655c0-3191-437a-9d11-53da28e361f0":{"url":"https://api.au.synq.io"}},"schemas":{"692f0410-0d1f-42ff-a19a-f76d7c4a48ee":{"oneOf":[{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["airflowDag"],"properties":{"airflowDag":{"type":"object","properties":{"integrationId":{"type":"string","description":"Coalesce Quality integration_id that identifies the Airflow instance","isRequired":true},"dagId":{"type":"string","description":"Airflow dag_id that identifies the DAG","isRequired":true}},"title":"airflow_dag","required":["integrationId","dagId"],"additionalProperties":false,"description":"Airflow DAG identifier","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["airflowTask"],"properties":{"airflowTask":{"type":"object","properties":{"integrationId":{"type":"string","description":"Coalesce Quality integration_id that identifies the Airflow instance","isRequired":true},"dagId":{"type":"string","description":"Airflow dag_id that identifies the DAG","isRequired":true},"taskId":{"type":"string","description":"Airflow task_id that identifies the task within the DAG","isRequired":true}},"title":"airflow_task","required":["integrationId","dagId","taskId"],"additionalProperties":false,"description":"Airflow task identifier within a given DAG","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["athenaTable"],"properties":{"athenaTable":{"type":"object","properties":{"instance":{"type":"string","description":"AWS account and region the Athena workgroup runs in, formatted as\n \"\u003caccount-id>.\u003cregion>\" (e.g. \"123456789012.eu-west-1\"). Auto-derived\n from sts:GetCallerIdentity at integration setup time.","isRequired":true},"catalog":{"type":"string","description":"Glue Data Catalog name. Almost always \"AwsDataCatalog\" — the default\n catalog for Athena unless the customer registered a federated catalog.","isRequired":true},"database":{"type":"string","description":"Glue database (the namespace users typically filter on).","isRequired":true},"table":{"type":"string","description":"Glue table or view name.","isRequired":true}},"title":"athena_table","required":["instance","catalog","database","table"],"additionalProperties":false,"description":"Amazon Athena (Glue) table identifier","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["bigqueryTable"],"properties":{"bigqueryTable":{"type":"object","properties":{"project":{"type":"string","description":"BigQuery project","isRequired":true},"dataset":{"type":"string","description":"BigQuery dataset id","isRequired":true},"table":{"type":"string","description":"BigQuery table name","isRequired":true}},"title":"bigquery_table","required":["project","dataset","table"],"additionalProperties":false,"description":"BigQuery table identifier","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["clickhouseTable"],"properties":{"clickhouseTable":{"type":"object","properties":{"host":{"type":"string","description":"Clickhouse hostname without port","isRequired":true},"schema":{"type":"string","description":"Clickhouse database","isRequired":true},"table":{"type":"string","description":"Clickhouse table","isRequired":true}},"title":"clickhouse_table","required":["host","schema","table"],"additionalProperties":false,"description":"Clickhouse table identifier","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["custom"],"properties":{"custom":{"type":"object","properties":{"id":{"type":"string","description":"Id that identifies the custom entity\n The Id should be unique within the custom entity Identifier.","isRequired":true}},"title":"custom","required":["id"],"additionalProperties":false,"description":"Custom identifier to be used with all custom created entities","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["databricksTable"],"properties":{"databricksTable":{"type":"object","properties":{"workspace":{"type":"string","description":"URL of Databricks workspace","isRequired":true},"catalog":{"type":"string","description":"Databricks catalog","isRequired":true},"schema":{"type":"string","description":"Databricks schema","isRequired":true},"table":{"type":"string","description":"Databricks table or view","isRequired":true}},"title":"databricks_table","required":["workspace","catalog","schema","table"],"additionalProperties":false,"description":"Databricks table identifier","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["dataproduct"],"properties":{"dataproduct":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Dataproduct id that identifies the Dataproduct","isRequired":true}},"title":"dataproduct","required":["id"],"additionalProperties":false,"description":"Dataproduct identifier","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["db2Table"],"properties":{"db2Table":{"type":"object","properties":{"host":{"type":"string","description":"Host name of the Db2 server","isRequired":true},"database":{"type":"string","description":"Database name or alias, as in `CONNECT TO \u003cdatabase>`","isRequired":true},"schema":{"type":"string","description":"Db2 schema (e.g. \"DB2INST1\")","isRequired":true},"table":{"type":"string","description":"Db2 table or view","isRequired":true}},"title":"db2_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"IBM Db2 LUW table identifier","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["dbtCloudNode"],"properties":{"dbtCloudNode":{"type":"object","properties":{"projectId":{"type":"string","description":"Your dbt Cloud project id","isRequired":true},"nodeId":{"type":"string","description":"Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)","isRequired":true},"accountId":{"type":"string","description":"Your dbt Cloud account id"}},"title":"dbt_cloud_node","required":["projectId","nodeId"],"additionalProperties":false,"description":"Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Cloud project","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["dbtCoreNode"],"properties":{"dbtCoreNode":{"type":"object","properties":{"integrationId":{"type":"string","description":"Opaque identifier of the dbt Core project. Usually the Coalesce Quality\n integration id (a UUID), but may also be the dbt project name from\n manifest.json when the integration is configured to identify assets by\n project name. Treat it as an opaque string, not a UUID.","isRequired":true},"nodeId":{"type":"string","description":"Dbt node_id that identifies one of dbt DAG nodes (model, test, etc)","isRequired":true}},"title":"dbt_core_node","required":["integrationId","nodeId"],"additionalProperties":false,"description":"Dbt node that identifies one of dbt DAG nodes (model, test, etc) in dbt Core project","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["fabricTable"],"properties":{"fabricTable":{"type":"object","properties":{"instance":{"type":"string","description":"Workspace SQL analytics endpoint host, e.g.\n \"\u003cworkspace-id>.datawarehouse.fabric.microsoft.com\".","isRequired":true},"database":{"type":"string","description":"Fabric warehouse / lakehouse (database).","isRequired":true},"schema":{"type":"string","description":"Schema within the database.","isRequired":true},"table":{"type":"string","description":"Table or view name.","isRequired":true},"workspaceId":{"type":"string","description":"Fabric workspace GUID, decoded from the endpoint host in `instance`.\n Optional and informational: the table is addressed by\n instance/database/schema/table, so leave it empty if you don't have it —\n it does not affect how the identifier resolves."},"tenantId":{"type":"string","description":"Entra (Azure AD) tenant GUID, decoded from the endpoint host in `instance`.\n Optional and informational, like workspace_id."}},"title":"fabric_table","required":["instance","database","schema","table"],"additionalProperties":false,"description":"Microsoft Fabric table identifier","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["monitor"],"properties":{"monitor":{"type":"object","properties":{"monitoredId":{"$circularRef":"692f0410-0d1f-42ff-a19a-f76d7c4a48ee","description":"Identifier of the monitored entity","isRequired":true},"monitorId":{"type":"string","description":"Identifier of the monitor","isRequired":true},"segment":{"oneOf":[{"type":"string","description":"Optional monitor segmentation identifier"},{"type":"null","description":"Optional monitor segmentation identifier"}]},"integrationId":{"oneOf":[{"type":"string","description":"Coalesce Quality integration_id of the monitored identifier","deprecated":true},{"type":"null","description":"Coalesce Quality integration_id of the monitored identifier","deprecated":true}]}},"title":"monitor","required":["monitoredId","monitorId"],"additionalProperties":false,"description":"Monitor identifier","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["mssqlTable"],"properties":{"mssqlTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the SQL Server instance","isRequired":true},"database":{"type":"string","description":"SQL Server database","isRequired":true},"schema":{"type":"string","description":"SQL Server schema (e.g. \"dbo\")","isRequired":true},"table":{"type":"string","description":"SQL Server table or view","isRequired":true}},"title":"mssql_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"SQL Server table identifier","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["mysqlTable"],"properties":{"mysqlTable":{"type":"object","properties":{"host":{"type":"string","description":"Mysql hostname without port","isRequired":true},"schema":{"type":"string","description":"Mysql database","isRequired":true},"table":{"type":"string","description":"Mysql table","isRequired":true}},"title":"mysql_table","required":["host","schema","table"],"additionalProperties":false,"description":"Mysql table identifier","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["oracleTable"],"properties":{"oracleTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the Oracle instance","isRequired":true},"serviceName":{"type":"string","description":"Oracle service name (PDB)","isRequired":true},"schema":{"type":"string","description":"Oracle schema (= owning user)","isRequired":true},"table":{"type":"string","description":"Oracle table or view","isRequired":true}},"title":"oracle_table","required":["host","serviceName","schema","table"],"additionalProperties":false,"description":"Oracle table identifier","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["postgresTable"],"properties":{"postgresTable":{"type":"object","properties":{"host":{"type":"string","description":"Postgres hostname without port","isRequired":true},"database":{"type":"string","description":"Postgres database","isRequired":true},"schema":{"type":"string","description":"Postgres schema","isRequired":true},"table":{"type":"string","description":"Postgres table","isRequired":true}},"title":"postgres_table","required":["host","database","schema","table"],"additionalProperties":false,"description":"Postgres table identifier","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["redshiftTable"],"properties":{"redshiftTable":{"type":"object","properties":{"database":{"type":"string","description":"Redshift database","isRequired":true},"schema":{"type":"string","description":"Redshift schema","isRequired":true},"table":{"type":"string","description":"Redshift table","isRequired":true},"cluster":{"type":"string","description":"Redshift cluster"}},"title":"redshift_table","required":["database","schema","table"],"additionalProperties":false,"description":"Redshift table identifier","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["savedView"],"properties":{"savedView":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Saved view id (client-supplied UUID) that identifies the saved view","isRequired":true}},"title":"saved_view","required":["id"],"additionalProperties":false,"description":"Saved view identifier","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["snowflakeTable"],"properties":{"snowflakeTable":{"type":"object","properties":{"account":{"type":"string","description":"Snowflake account","isRequired":true},"database":{"type":"string","description":"Snowflake database","isRequired":true},"schema":{"type":"string","description":"Snowflake schema","isRequired":true},"table":{"type":"string","description":"Snowflake table","isRequired":true}},"title":"snowflake_table","required":["account","database","schema","table"],"additionalProperties":false,"description":"Snowflake table identifier","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["sqlMeshAudit"],"properties":{"sqlMeshAudit":{"type":"object","properties":{"integrationId":{"type":"string","format":"uuid","description":"Coalesce Quality integration_id that identifies the dbt Core project","isRequired":true},"fqn":{"type":"string","description":"SQLMesh model fully qualified name","isRequired":true},"auditId":{"type":"string","description":"Identifier of the audit","isRequired":true}},"title":"sql_mesh_audit","required":["integrationId","fqn","auditId"],"additionalProperties":false,"description":"SQLMesh Audit identifier","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["sqlMeshModel"],"properties":{"sqlMeshModel":{"type":"object","properties":{"integrationId":{"type":"string","format":"uuid","description":"Coalesce Quality integration_id that identifies the dbt Core project","isRequired":true},"fqn":{"type":"string","description":"SQLMesh model fully qualified name","isRequired":true}},"title":"sql_mesh_model","required":["integrationId","fqn"],"additionalProperties":false,"description":"SQLMesh Model identifier","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["synqPath"],"properties":{"synqPath":{"type":"object","properties":{"path":{"type":"string","description":"Coalesce Quality path that identifies the Coalesce Quality entity, needs to be one of supported paths","isRequired":true}},"title":"synq_path","required":["path"],"additionalProperties":false,"description":"SynqPath identifier","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false},{"type":"object","title":"Identifier","description":"Identifier is a unique reference to an entity in Coalesce Quality system. Entity identifiers\n are designed to closely mimic identifiers used by data platforms and tools. To construct\n an identifier, you need to know the kind of the entity and the ids that you would normally\n use to identify it in the data platform or tool. For example, to identify a table in BigQuery,\n you would need to know the project, dataset, and table names.\n\n Every identifier the API RETURNS also carries `entity_id`, the entity's opaque\n id. Read it when you just need to name the entity again — it is one string for\n every platform, where the structured variants below only cover the platforms\n that have one.","required":["trinoTable"],"properties":{"trinoTable":{"type":"object","properties":{"host":{"type":"string","description":"Hostname of the Trino instance","isRequired":true},"catalog":{"type":"string","description":"Trino catalog","isRequired":true},"schema":{"type":"string","description":"Trino schema","isRequired":true},"table":{"type":"string","description":"Trino table or view","isRequired":true}},"title":"trino_table","required":["host","catalog","schema","table"],"additionalProperties":false,"description":"Trino table identifier","isRequired":true},"entityId":{"type":"string","title":"entity_id","maxLength":1024,"description":"Opaque id of the entity, set on every identifier the API returns. Round-trip\n it verbatim; the format is not part of this contract and may change, and it\n is never constructed by hand.\n\n OUTPUT ONLY. On a request this field is ignored — the structured variant is\n what resolves. That is what lets you hand an identifier straight back\n unchanged, or edit its structured fields, without the two disagreeing about\n which entity you meant. To name an entity BY opaque id on a request, set the\n `synq_path` variant to that id: it carries exactly this string, and it is\n also how an entity whose platform has no structured variant is named."}},"additionalProperties":false}]},"a0405c54-7654-4d65-a1a7-697e22a6263c":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"minLength":1,"description":"Human readable name of the column as present in dbt or data warehouse.","isRequired":true},"nativeType":{"type":"string","maxLength":255,"description":"Native data type of the column as present in data warehouse."},"description":{"type":"string","maxLength":1000,"description":"Description of the column"},"ordinalPosition":{"type":"integer","maximum":1001,"minimum":0,"format":"int32","description":"Ordinal position of the column in the struct, starting from 1"},"isStruct":{"type":"boolean","description":"Indicates that the field type could be used as a struct/json in a data warehouse"},"isRepeated":{"type":"boolean","description":"Indicates that the field is a repeated field in a data warehouse (e.g. array)"},"fields":{"type":"array","items":{"$circularRef":"a0405c54-7654-4d65-a1a7-697e22a6263c"},"maxItems":100,"description":"Fields inside of the struct/record like field"}},"title":"SchemaColumnField","required":["name"],"additionalProperties":false}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"synq-15","siteName":"Coalesce Quality Documentation","title":"ListEntityFeatures - Coalesce Quality Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-04T18:02:07.495Z","originalFileLocation":"api-reference/synqentitiescustomv1featuresservice/listentityfeatures.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"List the features of one entity, or of every custom entity in the workspace when entity_id is left unset.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Coalesce Quality Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/synq-15/B7wGMZU-A3ADVMov/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/synq-15/B7wGMZU-A3ADVMov/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/synq-15/B7wGMZU-A3ADVMov/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/synq-15/B7wGMZU-A3ADVMov/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/synq-15/B7wGMZU-A3ADVMov/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/synq-15/B7wGMZU-A3ADVMov/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/synq-15/B7wGMZU-A3ADVMov/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/synq-15/B7wGMZU-A3ADVMov/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/synq-15/B7wGMZU-A3ADVMov/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"ListEntityFeatures - Coalesce Quality Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"List the features of one entity, or of every custom entity in the workspace when entity_id is left unset.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Coalesce Quality Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.synq.io/api-reference/synqentitiescustomv1featuresservice/listentityfeatures\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://synq-15.mintlify.app/_mintlify/api/og/v2?division=synq.entities.custom.v1.FeaturesService\u0026amp;title=ListEntityFeatures\u0026amp;description=List+the+features+of+one+entity%2C+or+of+every+custom+entity+in+the%0A+workspace+when+entity_id+is+left+unset.\u0026amp;theme=c4b0b33f9bac9b90d2a12108\u0026amp;signature=01356e7244c685e195fa636397d083d1d5a288fecf9bf66bde76d5017349d50b\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"ListEntityFeatures - Coalesce Quality Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"List the features of one entity, or of every custom entity in the workspace when entity_id is left unset.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://synq-15.mintlify.app/_mintlify/api/og/v2?division=synq.entities.custom.v1.FeaturesService\u0026amp;title=ListEntityFeatures\u0026amp;description=List+the+features+of+one+entity%2C+or+of+every+custom+entity+in+the%0A+workspace+when+entity_id+is+left+unset.\u0026amp;theme=c4b0b33f9bac9b90d2a12108\u0026amp;signature=01356e7244c685e195fa636397d083d1d5a288fecf9bf66bde76d5017349d50b\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/synq-15/B7wGMZU-A3ADVMov/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Coalesce Quality Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#135594\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.synq.io/api-reference/synqentitiescustomv1featuresservice/listentityfeatures\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/synqentitiescustomv1featuresservice/listentityfeatures.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.synq.io/#organization\",\"name\":\"Coalesce Quality Documentation\",\"url\":\"https://docs.synq.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/synq-15/VrNXC6Gv5xCECUGd/logo/coalesce-quality-logo.svg?fit=max\u0026auto=format\u0026n=VrNXC6Gv5xCECUGd\u0026q=85\u0026s=4ad60b616ed815902c710f413d59cf63\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.synq.io#website\",\"name\":\"Coalesce Quality Documentation\",\"url\":\"https://docs.synq.io\",\"publisher\":{\"@id\":\"https://docs.synq.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.synq.io/api-reference/synqentitiescustomv1featuresservice/listentityfeatures#webpage\",\"url\":\"https://docs.synq.io/api-reference/synqentitiescustomv1featuresservice/listentityfeatures\",\"name\":\"ListEntityFeatures\",\"description\":\"List the features of one entity, or of every custom entity in the workspace when entity_id is left unset.\",\"dateModified\":\"2026-11-04T18:02:07.495Z\",\"isPartOf\":{\"@id\":\"https://docs.synq.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.synq.io/api-reference/synqentitiescustomv1featuresservice/listentityfeatures#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.synq.io/api-reference/synqentitiescustomv1featuresservice/listentityfeatures#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Developer API\",\"item\":\"https://docs.synq.io/api-reference/getting-started\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"REST API\",\"item\":\"https://docs.synq.io/api-reference/synqagentreconv1yamlservice/parseyaml\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"synq.entities.custom.v1.FeaturesService\",\"item\":\"https://docs.synq.io/api-reference/synqentitiescustomv1featuresservice/upsertentityfeature\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"ListEntityFeatures\",\"item\":\"https://docs.synq.io/api-reference/synqentitiescustomv1featuresservice/listentityfeatures\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.synq.io/api-reference/synqentitiescustomv1featuresservice/listentityfeatures#apireference\",\"headline\":\"ListEntityFeatures\",\"name\":\"ListEntityFeatures\",\"description\":\"List the features of one entity, or of every custom entity in the workspace when entity_id is left unset.\",\"url\":\"https://docs.synq.io/api-reference/synqentitiescustomv1featuresservice/listentityfeatures\",\"mainEntityOfPage\":{\"@id\":\"https://docs.synq.io/api-reference/synqentitiescustomv1featuresservice/listentityfeatures#webpage\"},\"dateModified\":\"2026-11-04T18:02:07.495Z\",\"publisher\":{\"@id\":\"https://docs.synq.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.synq.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Coalesce Quality Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Coalesce Quality Documentation","nav":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://coalesce.io/resources/"},{"anchor":"Changelog","icon":"rocket","href":"https://synq.io/changelog"}]},"anchors":[{"anchor":"Documentation","icon":"book-open","groups":[{"group":"Get Started","pages":[{"title":"Introduction","href":"/introduction"},{"title":"Command-line tools","href":"/cli"}]},{"group":"Alerts","pages":[{"title":"Alerts overview","href":"/alerts/alert-overview"},{"title":"Setting up alerts","href":"/alerts/setting-up-alerts"},{"title":"Tagging owners","href":"/alerts/tagging-owners"},{"title":"Routing alerts","href":"/alerts/routing-alerts"},{"title":"Business alerts","href":"/alerts/business-alerts"},{"title":"Writing alert templates","href":"/alerts/templates"}]},{"group":"Monitors","pages":[{"title":"Monitors overview","href":"/monitors/monitors-overview"},{"title":"Setting up monitors","href":"/monitors/setting-up-monitors"},{"title":"Setting up deployment rules","href":"/monitors/deployment-rules"},{"title":"Configuring monitor sensitivity","href":"/monitors/monitor-sensitivity"},{"title":"Monitor feedback","href":"/monitors/monitor-feedback"},{"title":"Muting monitors","href":"/monitors/muting-monitors"},{"title":"Defining monitors in code","href":"/monitors/monitors-as-code"},{"title":"Agent workflow","href":"/monitors/agent-workflow"},{"title":"Monitors CLI reference","href":"/monitors/cli"},{"title":"SQL Tests","href":"/monitors/sql-tests"},{"title":"Running checks from your pipeline","href":"/monitors/on-demand-checks"},{"title":"Working with time dimensions and scheduling for monitors","href":"/monitors/time-dimensions"},{"title":"What monitoring costs in your warehouse","href":"/monitors/warehouse-cost"}]},{"group":"Monitors Types","pages":[{"title":"Table stats monitor","href":"/monitor-types/table-stats-monitor"},{"title":"Volume monitor","href":"/monitor-types/volume-monitor"},{"title":"Freshness monitor","href":"/monitor-types/freshness-monitor"},{"title":"Custom SQL monitor","href":"/monitor-types/custom-sql-monitor"},{"title":"Field stats monitor","href":"/monitor-types/fieldstats"},{"title":"Schema monitor","href":"/monitor-types/schema-monitor"}]},{"group":"Reconciliations","pages":[{"title":"Reconciliation overview","href":"/reconciliation/overview"},{"title":"Getting started","href":"/reconciliation/getting-started"},{"title":"Concepts and vocabulary","href":"/reconciliation/concepts"},{"title":"Authoring suites","href":"/reconciliation/authoring-suites"},{"title":"Comparison modes","href":"/reconciliation/comparison-modes"},{"title":"Time windows and cutoffs","href":"/reconciliation/time-windows-and-cutoffs"},{"title":"Running locally","href":"/reconciliation/running-locally"},{"title":"Workspace suites","href":"/reconciliation/workspace-suites"},{"title":"Investigating results","href":"/reconciliation/investigating-results"},{"title":"CI/CD and automation","href":"/reconciliation/cicd-and-automation"},{"title":"How comparison works","href":"/reconciliation/how-comparison-works"},{"title":"Agent workflow","href":"/reconciliation/agent-workflow"},{"title":"Reconciliation CLI reference","href":"/reconciliation/cli"}]},{"group":"Data Products","pages":[{"title":"Data products overview","href":"/data-products/data-products-overview"},{"title":"Creating a data product","href":"/data-products/creating-a-data-product"},{"title":"BI Status Badge","href":"/data-products/bi-badge"}]},{"group":"Scout AI","pages":[{"title":"Scout overview","href":"/scout/scout"},{"title":"Setting up and configuring Scout","href":"/scout/setting-up-scout"},{"title":"Scout on-premise setup","href":"/scout/on-premise"},{"title":"MCP","href":"/scout/mcp"},{"title":"Agent workflow","href":"/scout/agent-workflow"},{"title":"Scout CLI reference","href":"/scout/cli"}]},{"group":"Ownership","pages":[{"title":"Ownership overview","href":"/ownership/ownership-overview"},{"title":"Creating an owner","href":"/ownership/creating-an-owner"},{"title":"Domains","href":"/ownership/domains"}]},{"group":"Incidents","pages":[{"title":"Incidents overview","href":"/incidents/incident-overview"}]},{"group":"Analytics","pages":[{"title":"Analytics overview","href":"/analytics/analytics-overview"},{"title":"How metrics are calculated","href":"/analytics/how-metrics-are-calculated"},{"title":"Check categories","href":"/analytics/check-categories"}]},{"group":"Query activity","pages":[{"title":"Query activity","href":"/query-activity/overview"}]},{"group":"Lineage","pages":[{"title":"Lineage overview","href":"/lineage/lineage"},{"title":"Column-level lineage","href":"/lineage/column-level-lineage"}]},{"group":"BI Integrations","pages":[{"title":"Looker","href":"/bi-integrations/looker"},{"title":"Tableau","href":"/bi-integrations/tableau"},{"title":"Omni","href":"/bi-integrations/omni"}]},{"group":"Data Warehouse Integrations","pages":[{"title":"BigQuery","href":"/dw-integrations/bigquery"},{"title":"ClickHouse","href":"/dw-integrations/clickhouse"},{"title":"Databricks","href":"/dw-integrations/databricks"},{"title":"Microsoft Fabric","href":"/dw-integrations/fabric"},{"title":"Redshift","href":"/dw-integrations/redshift"},{"title":"Snowflake","href":"/dw-integrations/snowflake"},{"title":"Trino","href":"/dw-integrations/trino"},{"title":"DWH Agent","href":"/dw-integrations/agent"},{"title":"MotherDuck","href":"/dw-integrations/motherduck"}]},{"group":"Transactional databases","pages":[{"title":"Postgres","href":"/transactional-databases/postgres"},{"title":"MySQL","href":"/transactional-databases/mysql"},{"title":"Microsoft SQL Server","href":"/transactional-databases/mssql"},{"title":"Oracle","href":"/transactional-databases/oracle"},{"title":"IBM Db2","href":"/transactional-databases/db2"}]},{"group":"Code Integrations","pages":[{"title":"Code Integration Requirements","href":"/code-integrations/overview"},{"title":"GitHub Integration","href":"/code-integrations/github"},{"title":"GitLab Integration","href":"/code-integrations/gitlab"},{"title":"Bitbucket Integration","href":"/code-integrations/bitbucket"},{"title":"Azure DevOps Integration","href":"/code-integrations/azure-devops"},{"title":"Other Git Providers","href":"/code-integrations/ssh-git"}]},{"group":"dbt Integrations","pages":[{"title":"dbt Core","href":"/dbt-integrations/dbt-core"},{"title":"dbt Cloud","href":"/dbt-integrations/dbt-cloud"},{"title":"Coalesce Quality options for dbt","href":"/dbt-integrations/synq-options"}]},{"group":"SQLMesh Integrations","pages":[{"title":"SQLMesh","href":"/sqlmesh-integrations/sqlmesh"}]},{"group":"Coalesce Integrations","pages":[{"title":"Coalesce Transform","href":"/coalesce-integrations/coalesce-transform"},{"title":"Coalesce Catalog","href":"/coalesce-integrations/coalesce-catalog"}]},{"group":"Orchestration Tool Integrations","pages":[{"title":"Airflow","href":"/orchestration-integrations/airflow"},{"title":"Airflow + dbt Core Linking","href":"/orchestration-integrations/airflow-dbt-core"}]},{"group":"Alerting Integrations","pages":[{"title":"Slack","href":"/alert-integrations/slack"},{"title":"Email","href":"/alert-integrations/email"},{"title":"Microsoft Teams","href":"/alert-integrations/ms-teams"},{"title":"PagerDuty","href":"/alert-integrations/pagerduty"},{"title":"Opsgenie","href":"/alert-integrations/opsgenie"}]},{"group":"Catalogs","pages":[{"title":"Atlan","href":"/catalogs/atlan"}]},{"group":"Google Cloud Integrations","pages":[{"title":"Google Cloud Storage","href":"/gcp-integrations/cloud-storage"},{"title":"Google Cloud Pub/Sub","href":"/gcp-integrations/pubsub"}]},{"group":"Admin","pages":[{"title":"Single Sign-On (SSO)","href":"/admin/sso"},{"title":"Inviting new users","href":"/admin/invite_user"},{"title":"User roles","href":"/admin/user_roles"},{"title":"Monitor Usage","href":"/admin/monitor-usage"}]},{"group":"Security","pages":[{"title":"Security Policy","href":"/security/security"},{"title":"Subprocessors","href":"/security/subprocessors"},{"title":"Data Warehouse Access","href":"/security/dwh-access"},{"title":"Private Connectivity","href":"/security/private-connectivity"},{"title":"IP Whitelist","href":"/security/ip"}]},{"group":"Support","pages":[{"title":"Coalesce Quality Support","href":"/support/support"}]},{"group":"Developer API","pages":[{"title":"Getting Started","href":"/api-reference/getting-started"},{"title":"API Scopes","href":"/api-reference/scopes"},{"group":"REST API","pages":[{"group":"synq.agent.recon.v1.YamlService","pages":[{"title":"ParseYaml","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/agent/recon/v1/yaml/parse","href":"/api-reference/synqagentreconv1yamlservice/parseyaml"},{"title":"RenderYaml","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/agent/recon/v1/yaml/render","href":"/api-reference/synqagentreconv1yamlservice/renderyaml"},{"title":"ValidateSuite","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/agent/recon/v1/yaml/validate","href":"/api-reference/synqagentreconv1yamlservice/validatesuite"}]},{"group":"synq.alerts.services.v1.AlertsService","pages":[{"title":"Update","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /api/alerts/v1","href":"/api-reference/synqalertsservicesv1alertsservice/update"},{"title":"Create","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/alerts/v1","href":"/api-reference/synqalertsservicesv1alertsservice/create"},{"title":"Delete","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/alerts/v1","href":"/api-reference/synqalertsservicesv1alertsservice/delete"},{"title":"BatchGet","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/alerts/v1/get","href":"/api-reference/synqalertsservicesv1alertsservice/batchget"},{"title":"List","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/alerts/v1/list","href":"/api-reference/synqalertsservicesv1alertsservice/list"},{"title":"ToggleEnabled","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/alerts/v1/toggle","href":"/api-reference/synqalertsservicesv1alertsservice/toggleenabled"}]},{"group":"synq.alerts.services.v2.AlertsService","pages":[{"title":"Upsert","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /api/alerts/v2","href":"/api-reference/synqalertsservicesv2alertsservice/upsert"},{"title":"Create","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/alerts/v2","href":"/api-reference/synqalertsservicesv2alertsservice/create"},{"title":"Delete","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/alerts/v2","href":"/api-reference/synqalertsservicesv2alertsservice/delete"},{"title":"BatchGet","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/alerts/v2/get","href":"/api-reference/synqalertsservicesv2alertsservice/batchget"},{"title":"GetIncidentOwnerAlert","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/alerts/v2/incident-owner","href":"/api-reference/synqalertsservicesv2alertsservice/getincidentowneralert"},{"title":"ToggleIncidentOwnerAlert","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/alerts/v2/incident-owner","href":"/api-reference/synqalertsservicesv2alertsservice/toggleincidentowneralert"},{"title":"List","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/alerts/v2/list","href":"/api-reference/synqalertsservicesv2alertsservice/list"},{"title":"Rename","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/alerts/v2/rename","href":"/api-reference/synqalertsservicesv2alertsservice/rename"},{"title":"UpdateSettings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/alerts/v2/settings","href":"/api-reference/synqalertsservicesv2alertsservice/updatesettings"},{"title":"UpdateTargets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/alerts/v2/targets","href":"/api-reference/synqalertsservicesv2alertsservice/updatetargets"},{"title":"UpdateTemplate","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/alerts/v2/template","href":"/api-reference/synqalertsservicesv2alertsservice/updatetemplate"},{"title":"SendTestAlert","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/alerts/v2/test","href":"/api-reference/synqalertsservicesv2alertsservice/sendtestalert"},{"title":"ToggleEnabled","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/alerts/v2/toggle","href":"/api-reference/synqalertsservicesv2alertsservice/toggleenabled"}]},{"group":"synq.entities.changes.v1.ChangesService","pages":[{"title":"List","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/changes/v1","href":"/api-reference/synqentitieschangesv1changesservice/list"},{"title":"BatchChange","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/changes/v1/by-id","href":"/api-reference/synqentitieschangesv1changesservice/batchchange"}]},{"group":"synq.entities.code.v1.CodeService","pages":[{"title":"ListCode","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/code/v1","href":"/api-reference/synqentitiescodev1codeservice/listcode"}]},{"group":"synq.entities.constraints.v1.TableConstraintsService","pages":[{"title":"GetTableConstraints","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/constraints/v1/table-constraints","href":"/api-reference/synqentitiesconstraintsv1tableconstraintsservice/gettableconstraints"}]},{"group":"synq.entities.coordinates.v1.DatabaseCoordinatesService","pages":[{"title":"BatchIdsByCoordinates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/coordinates/v1/database/by-fqn","href":"/api-reference/synqentitiescoordinatesv1databasecoordinatesservice/batchidsbycoordinates"},{"title":"BatchDatabaseCoordinates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/coordinates/v1/database/by-id","href":"/api-reference/synqentitiescoordinatesv1databasecoordinatesservice/batchdatabasecoordinates"}]},{"group":"synq.datachecks.v1.TriggerService","pages":[{"title":"TriggerDatachecks","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/datachecks/scheduler/v1/trigger","href":"/api-reference/synqdatachecksv1triggerservice/triggerdatachecks"}]},{"group":"synq.datachecks.sqltests.v1.SqlTestsDeploymentRulesService","pages":[{"title":"ListSqlTestDeploymentRules","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/datachecks/sql-test-deployment-rules/v1","href":"/api-reference/synqdatacheckssqltestsv1sqltestsdeploymentrulesservice/listsqltestdeploymentrules"},{"title":"BatchDeleteSqlTestDeploymentRules","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/datachecks/sql-test-deployment-rules/v1/batch","href":"/api-reference/synqdatacheckssqltestsv1sqltestsdeploymentrulesservice/batchdeletesqltestdeploymentrules"},{"title":"BatchDeploySqlTestDeploymentRules","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/datachecks/sql-test-deployment-rules/v1/batch/deployed","href":"/api-reference/synqdatacheckssqltestsv1sqltestsdeploymentrulesservice/batchdeploysqltestdeploymentrules"},{"title":"BatchGetSqlTestDeploymentRules","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/datachecks/sql-test-deployment-rules/v1/by-id","href":"/api-reference/synqdatacheckssqltestsv1sqltestsdeploymentrulesservice/batchgetsqltestdeploymentrules"},{"title":"DeploySqlTestDeploymentRule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/datachecks/sql-test-deployment-rules/v1/deployed","href":"/api-reference/synqdatacheckssqltestsv1sqltestsdeploymentrulesservice/deploysqltestdeploymentrule"},{"title":"GetSqlTestDeployOverview","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/datachecks/sql-test-deployment-rules/v1/overview","href":"/api-reference/synqdatacheckssqltestsv1sqltestsdeploymentrulesservice/getsqltestdeployoverview"},{"title":"DeleteSqlTestDeploymentRule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/datachecks/sql-test-deployment-rules/v1/{id}","href":"/api-reference/synqdatacheckssqltestsv1sqltestsdeploymentrulesservice/deletesqltestdeploymentrule"},{"title":"GetSqlTestDeployDeleteOverview","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/datachecks/sql-test-deployment-rules/v1/{id}/deleted","href":"/api-reference/synqdatacheckssqltestsv1sqltestsdeploymentrulesservice/getsqltestdeploydeleteoverview"}]},{"group":"synq.datachecks.sqltests.v1.SqlTestsService","pages":[{"title":"ListSqlTests","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/datachecks/sqltests/v1","href":"/api-reference/synqdatacheckssqltestsv1sqltestsservice/listsqltests"},{"title":"BatchUpsertSqlTests","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/datachecks/sqltests/v1","href":"/api-reference/synqdatacheckssqltestsv1sqltestsservice/batchupsertsqltests"},{"title":"BatchDeleteSqlTests","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/datachecks/sqltests/v1","href":"/api-reference/synqdatacheckssqltestsv1sqltestsservice/batchdeletesqltests"},{"title":"BatchGetSqlTests","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/datachecks/sqltests/v1/by-id","href":"/api-reference/synqdatacheckssqltestsv1sqltestsservice/batchgetsqltests"}]},{"group":"synq.datachecks.testsuggestions.v1.TestSuggestionsService","pages":[{"title":"BatchGetTestSuggestionsForEntities","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/datachecks/testsuggestions/v1","href":"/api-reference/synqdatacheckstestsuggestionsv1testsuggestionsservice/batchgettestsuggestionsforentities"},{"title":"BatchCreateTestSuggestions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/datachecks/testsuggestions/v1","href":"/api-reference/synqdatacheckstestsuggestionsv1testsuggestionsservice/batchcreatetestsuggestions"},{"title":"BatchAcceptTestSuggestions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /api/datachecks/testsuggestions/v1/accepted","href":"/api-reference/synqdatacheckstestsuggestionsv1testsuggestionsservice/batchaccepttestsuggestions"},{"title":"BatchRejectTestSuggestions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /api/datachecks/testsuggestions/v1/rejected","href":"/api-reference/synqdatacheckstestsuggestionsv1testsuggestionsservice/batchrejecttestsuggestions"}]},{"group":"synq.dataproducts.v1.DataproductsService","pages":[{"title":"List","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/dataproducts/v1","href":"/api-reference/synqdataproductsv1dataproductsservice/list"},{"title":"Upsert","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/dataproducts/v1","href":"/api-reference/synqdataproductsv1dataproductsservice/upsert"},{"title":"SetDefinition","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/dataproducts/v1/definition","href":"/api-reference/synqdataproductsv1dataproductsservice/setdefinition"},{"title":"UpsertDefinitionPart","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/dataproducts/v1/definition/part","href":"/api-reference/synqdataproductsv1dataproductsservice/upsertdefinitionpart"},{"title":"RemoveDefinitionPart","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/dataproducts/v1/definition/part/delete","href":"/api-reference/synqdataproductsv1dataproductsservice/removedefinitionpart"},{"title":"Delete","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/dataproducts/v1/delete","href":"/api-reference/synqdataproductsv1dataproductsservice/delete"},{"title":"Get","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/dataproducts/v1/get","href":"/api-reference/synqdataproductsv1dataproductsservice/get"}]},{"group":"synq.dataproducts.v2.DataproductsService","pages":[{"title":"List","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/dataproducts/v2","href":"/api-reference/synqdataproductsv2dataproductsservice/list"},{"title":"Upsert","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/dataproducts/v2","href":"/api-reference/synqdataproductsv2dataproductsservice/upsert"},{"title":"BatchGet","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/dataproducts/v2/batch-get","href":"/api-reference/synqdataproductsv2dataproductsservice/batchget"},{"title":"Delete","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/dataproducts/v2/delete","href":"/api-reference/synqdataproductsv2dataproductsservice/delete"},{"title":"SetDefinition","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /api/dataproducts/v2/{id}/definition","href":"/api-reference/synqdataproductsv2dataproductsservice/setdefinition"},{"title":"UpsertDefinitionPart","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/dataproducts/v2/{id}/definition/parts","href":"/api-reference/synqdataproductsv2dataproductsservice/upsertdefinitionpart"},{"title":"RemoveDefinitionPart","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/dataproducts/v2/{id}/definition/parts/{part_id}","href":"/api-reference/synqdataproductsv2dataproductsservice/removedefinitionpart"},{"title":"ListMembers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/dataproducts/v2/{id}/members","href":"/api-reference/synqdataproductsv2dataproductsservice/listmembers"}]},{"group":"synq.ingest.dwh.v1.DwhService","pages":[{"title":"IngestTaskResults","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/datawarehouse/v1/connection/{connection_id}/task/{task_id}/task-results","href":"/api-reference/synqingestdwhv1dwhservice/ingesttaskresults"},{"title":"IngestLineage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/datawarehouse/v1/connection/{connection_id}/upload/{upload_id}/lineage","href":"/api-reference/synqingestdwhv1dwhservice/ingestlineage"},{"title":"IngestObjectInformation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/datawarehouse/v1/connection/{connection_id}/upload/{upload_id}/object-information","href":"/api-reference/synqingestdwhv1dwhservice/ingestobjectinformation"},{"title":"IngestObjectMetrics","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/datawarehouse/v1/connection/{connection_id}/upload/{upload_id}/object-metrics","href":"/api-reference/synqingestdwhv1dwhservice/ingestobjectmetrics"},{"title":"IngestQueryLogs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/datawarehouse/v1/connection/{connection_id}/upload/{upload_id}/query-logs","href":"/api-reference/synqingestdwhv1dwhservice/ingestquerylogs"},{"title":"IngestSchemas","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/datawarehouse/v1/connection/{connection_id}/upload/{upload_id}/schemas","href":"/api-reference/synqingestdwhv1dwhservice/ingestschemas"},{"title":"IngestSqlDefinitions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/datawarehouse/v1/connection/{connection_id}/upload/{upload_id}/sql-definitions","href":"/api-reference/synqingestdwhv1dwhservice/ingestsqldefinitions"},{"title":"IngestTableConstraints","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/datawarehouse/v1/connection/{connection_id}/upload/{upload_id}/table-constraints","href":"/api-reference/synqingestdwhv1dwhservice/ingesttableconstraints"}]},{"group":"synq.deliveries.v1.DeliveriesService","pages":[{"title":"ListDeliveries","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/deliveries/v1","href":"/api-reference/synqdeliveriesv1deliveriesservice/listdeliveries"},{"title":"BatchGetDeliveries","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/deliveries/v1/by-id","href":"/api-reference/synqdeliveriesv1deliveriesservice/batchgetdeliveries"},{"title":"SummariseDeliveries","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/deliveries/v1/summarise","href":"/api-reference/synqdeliveriesv1deliveriesservice/summarisedeliveries"},{"title":"SendTestDelivery","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/deliveries/v1/test","href":"/api-reference/synqdeliveriesv1deliveriesservice/sendtestdelivery"},{"title":"ListAttempts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/deliveries/v1/{delivery_id}/attempts","href":"/api-reference/synqdeliveriesv1deliveriesservice/listattempts"},{"title":"Redeliver","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/deliveries/v1/{delivery_id}/redeliver","href":"/api-reference/synqdeliveriesv1deliveriesservice/redeliver"}]},{"group":"synq.domains.members.v1.DomainMembersService","pages":[{"title":"ListUserDomains","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/domains/members/v1/users/{user_id}/domains","href":"/api-reference/synqdomainsmembersv1domainmembersservice/listuserdomains"},{"title":"SetDefaultUserDomain","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/domains/members/v1/{domain_id}/default-for-user","href":"/api-reference/synqdomainsmembersv1domainmembersservice/setdefaultuserdomain"},{"title":"ListDomainMembers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/domains/members/v1/{domain_id}/members","href":"/api-reference/synqdomainsmembersv1domainmembersservice/listdomainmembers"},{"title":"AddDomainMembers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/domains/members/v1/{domain_id}/members","href":"/api-reference/synqdomainsmembersv1domainmembersservice/adddomainmembers"},{"title":"RemoveDomainMembers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/domains/members/v1/{domain_id}/members/remove","href":"/api-reference/synqdomainsmembersv1domainmembersservice/removedomainmembers"}]},{"group":"synq.domains.v1.DomainsService","pages":[{"title":"List","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/domains/v1","href":"/api-reference/synqdomainsv1domainsservice/list"},{"title":"Upsert","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/domains/v1","href":"/api-reference/synqdomainsv1domainsservice/upsert"},{"title":"BatchGet","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/domains/v1/batch-get","href":"/api-reference/synqdomainsv1domainsservice/batchget"},{"title":"Delete","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/domains/v1/delete","href":"/api-reference/synqdomainsv1domainsservice/delete"},{"title":"GetUsage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/domains/v1/usage","href":"/api-reference/synqdomainsv1domainsservice/getusage"},{"title":"SetDefinition","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /api/domains/v1/{domain_id}/definition","href":"/api-reference/synqdomainsv1domainsservice/setdefinition"},{"title":"UpsertDefinitionPart","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/domains/v1/{domain_id}/definition/parts","href":"/api-reference/synqdomainsv1domainsservice/upsertdefinitionpart"},{"title":"RemoveDefinitionPart","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/domains/v1/{domain_id}/definition/parts/{part_id}","href":"/api-reference/synqdomainsv1domainsservice/removedefinitionpart"},{"title":"FetchDomainWithSubDomains","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/domains/v1/{domain_id}/sub-domains","href":"/api-reference/synqdomainsv1domainsservice/fetchdomainwithsubdomains"}]},{"group":"synq.domains.v2.DomainsService","pages":[{"title":"List","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/domains/v2","href":"/api-reference/synqdomainsv2domainsservice/list"},{"title":"Upsert","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/domains/v2","href":"/api-reference/synqdomainsv2domainsservice/upsert"},{"title":"BatchGet","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/domains/v2/batch-get","href":"/api-reference/synqdomainsv2domainsservice/batchget"},{"title":"Delete","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/domains/v2/delete","href":"/api-reference/synqdomainsv2domainsservice/delete"},{"title":"GetUsage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/domains/v2/usage","href":"/api-reference/synqdomainsv2domainsservice/getusage"},{"title":"SetDefinition","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /api/domains/v2/{id}/definition","href":"/api-reference/synqdomainsv2domainsservice/setdefinition"},{"title":"UpsertDefinitionPart","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/domains/v2/{id}/definition/parts","href":"/api-reference/synqdomainsv2domainsservice/upsertdefinitionpart"},{"title":"RemoveDefinitionPart","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/domains/v2/{id}/definition/parts/{part_id}","href":"/api-reference/synqdomainsv2domainsservice/removedefinitionpart"},{"title":"ListMembers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/domains/v2/{id}/members","href":"/api-reference/synqdomainsv2domainsservice/listmembers"},{"title":"FetchDomainWithSubDomains","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/domains/v2/{id}/sub-domains","href":"/api-reference/synqdomainsv2domainsservice/fetchdomainwithsubdomains"}]},{"group":"synq.entities.activity.v1alpha.ActivityService","pages":[{"title":"ListActors","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/activity/v1alpha/actor-list","href":"/api-reference/synqentitiesactivityv1alphaactivityservice/listactors"},{"title":"GetActorSummary","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/activity/v1alpha/actor-summary","href":"/api-reference/synqentitiesactivityv1alphaactivityservice/getactorsummary"},{"title":"ListEntityActors","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/activity/v1alpha/actors","href":"/api-reference/synqentitiesactivityv1alphaactivityservice/listentityactors"},{"title":"GetActivityOverview","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/activity/v1alpha/overview","href":"/api-reference/synqentitiesactivityv1alphaactivityservice/getactivityoverview"},{"title":"ListPersonActivity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/activity/v1alpha/person","href":"/api-reference/synqentitiesactivityv1alphaactivityservice/listpersonactivity"},{"title":"BatchGetPopularity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/activity/v1alpha/popularity","href":"/api-reference/synqentitiesactivityv1alphaactivityservice/batchgetpopularity"},{"title":"GetEntityActivitySeries","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/activity/v1alpha/series","href":"/api-reference/synqentitiesactivityv1alphaactivityservice/getentityactivityseries"},{"title":"ListAccessSignals","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/activity/v1alpha/signals","href":"/api-reference/synqentitiesactivityv1alphaactivityservice/listaccesssignals"},{"title":"BatchGetEntityUsage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/activity/v1alpha/usage","href":"/api-reference/synqentitiesactivityv1alphaactivityservice/batchgetentityusage"}]},{"group":"synq.entities.annotations.v1.AnnotationsService","pages":[{"title":"ListAnnotations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/entities/annotations/v1","href":"/api-reference/synqentitiesannotationsv1annotationsservice/listannotations"},{"title":"BatchGetEntityAnnotations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/annotations/v1/batchGet","href":"/api-reference/synqentitiesannotationsv1annotationsservice/batchgetentityannotations"}]},{"group":"synq.entities.checks.v1.ChecksCategoriesService","pages":[{"title":"ListCheckCategories","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/entities/checks/v1/categories","href":"/api-reference/synqentitieschecksv1checkscategoriesservice/listcheckcategories"},{"title":"DeleteCheckCategories","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/checks/v1/categories:delete","href":"/api-reference/synqentitieschecksv1checkscategoriesservice/deletecheckcategories"},{"title":"UpsertCheckCategories","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/checks/v1/categories:upsert","href":"/api-reference/synqentitieschecksv1checkscategoriesservice/upsertcheckcategories"}]},{"group":"synq.entities.custom.v1.EntityExecutionsService","pages":[{"title":"UpsertExecution","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/custom/executions/v1","href":"/api-reference/synqentitiescustomv1entityexecutionsservice/upsertexecution"},{"title":"UpsertLogEntry","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/custom/executions/v1/log-entry","href":"/api-reference/synqentitiescustomv1entityexecutionsservice/upsertlogentry"}]},{"group":"synq.entities.custom.v1.ChecksRelationshipsService","pages":[{"title":"UpsertCheckRelationships","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/custom/v1/check-relationships","href":"/api-reference/synqentitiescustomv1checksrelationshipsservice/upsertcheckrelationships"},{"title":"DeleteCheckRelationships","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/entities/custom/v1/check-relationships","href":"/api-reference/synqentitiescustomv1checksrelationshipsservice/deletecheckrelationships"},{"title":"ListCheckRelationships","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/custom/v1/check-relationships/list","href":"/api-reference/synqentitiescustomv1checksrelationshipsservice/listcheckrelationships"}]},{"group":"synq.entities.custom.v1.EntitiesService","pages":[{"title":"ListEntities","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/entities/custom/v1/entities","href":"/api-reference/synqentitiescustomv1entitiesservice/listentities"},{"title":"UpsertEntity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/custom/v1/entities","href":"/api-reference/synqentitiescustomv1entitiesservice/upsertentity"},{"title":"DeleteEntity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/entities/custom/v1/entities","href":"/api-reference/synqentitiescustomv1entitiesservice/deleteentity"}]},{"group":"synq.entities.custom.v1.FeaturesService","pages":[{"title":"UpsertEntityFeature","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/custom/v1/features","href":"/api-reference/synqentitiescustomv1featuresservice/upsertentityfeature"},{"title":"DeleteEntityFeature","description":"Delete one feature of a custom entity, by the entity and the `feature_id`. The\n entity itself is kept. Deleting a feature that does not exist succeeds.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/entities/custom/v1/features","href":"/api-reference/synqentitiescustomv1featuresservice/deleteentityfeature"},{"title":"ListEntityFeatures","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/custom/v1/features/list","href":"/api-reference/synqentitiescustomv1featuresservice/listentityfeatures"}]},{"group":"synq.entities.custom.v1.GroupsService","pages":[{"title":"UpsertEntitiesGroup","description":"Set the entities of a group, and create the group if it does not exist. Every\n entity in the group must be a custom entity. The entities that were in the group\n before and are not in the new list are deleted.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/custom/v1/groups","href":"/api-reference/synqentitiescustomv1groupsservice/upsertentitiesgroup"},{"title":"DeleteEntitiesGroup","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/entities/custom/v1/groups","href":"/api-reference/synqentitiescustomv1groupsservice/deleteentitiesgroup"},{"title":"ListEntityGroups","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/custom/v1/groups/list","href":"/api-reference/synqentitiescustomv1groupsservice/listentitygroups"}]},{"group":"synq.entities.custom.v1.RelationshipsService","pages":[{"title":"UpsertRelationships","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/custom/v1/relationships","href":"/api-reference/synqentitiescustomv1relationshipsservice/upsertrelationships"},{"title":"DeleteRelationships","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/entities/custom/v1/relationships","href":"/api-reference/synqentitiescustomv1relationshipsservice/deleterelationships"},{"title":"ListRelationships","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/custom/v1/relationships/list","href":"/api-reference/synqentitiescustomv1relationshipsservice/listrelationships"}]},{"group":"synq.entities.custom.v1.TypesService","pages":[{"title":"UpsertType","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/custom/v1/types","href":"/api-reference/synqentitiescustomv1typesservice/upserttype"},{"title":"DeleteType","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/entities/custom/v1/types","href":"/api-reference/synqentitiescustomv1typesservice/deletetype"},{"title":"ListTypes","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/custom/v1/types/list","href":"/api-reference/synqentitiescustomv1typesservice/listtypes"}]},{"group":"synq.entities.folders.v1.FoldersService","pages":[{"title":"Browse","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/entities/folders/v1/browse","href":"/api-reference/synqentitiesfoldersv1foldersservice/browse"},{"title":"GetFolderOf","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/entities/folders/v1/folder-of","href":"/api-reference/synqentitiesfoldersv1foldersservice/getfolderof"},{"title":"ListMembers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/entities/folders/v1/members","href":"/api-reference/synqentitiesfoldersv1foldersservice/listmembers"}]},{"group":"synq.entities.platformusers.v1alpha.PlatformUsersService","pages":[{"title":"BatchGetPlatformUsers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/platform-users/v1alpha/batch-get","href":"/api-reference/synqentitiesplatformusersv1alphaplatformusersservice/batchgetplatformusers"},{"title":"ListLinkSuggestions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/platform-users/v1alpha/link-suggestions","href":"/api-reference/synqentitiesplatformusersv1alphaplatformusersservice/listlinksuggestions"},{"title":"ListPlatformUsers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/platform-users/v1alpha/list","href":"/api-reference/synqentitiesplatformusersv1alphaplatformusersservice/listplatformusers"}]},{"group":"synq.entities.platformusers.v1alpha.ServiceAccountsService","pages":[{"title":"ApplyServiceAccountChanges","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/service-accounts/v1alpha/apply","href":"/api-reference/synqentitiesplatformusersv1alphaserviceaccountsservice/applyserviceaccountchanges"},{"title":"BatchGetServiceAccounts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/service-accounts/v1alpha/batch-get","href":"/api-reference/synqentitiesplatformusersv1alphaserviceaccountsservice/batchgetserviceaccounts"},{"title":"ListServiceAccounts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/service-accounts/v1alpha/list","href":"/api-reference/synqentitiesplatformusersv1alphaserviceaccountsservice/listserviceaccounts"},{"title":"PlanServiceAccountChanges","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/service-accounts/v1alpha/plan","href":"/api-reference/synqentitiesplatformusersv1alphaserviceaccountsservice/planserviceaccountchanges"},{"title":"ListServiceAccountSuggestions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/service-accounts/v1alpha/suggestions","href":"/api-reference/synqentitiesplatformusersv1alphaserviceaccountsservice/listserviceaccountsuggestions"}]},{"group":"synq.entities.tableinfo.v1alpha.TableInfoService","pages":[{"title":"BatchGetTableInfo","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/table-info/v1alpha/batch-get","href":"/api-reference/synqentitiestableinfov1alphatableinfoservice/batchgettableinfo"}]},{"group":"synq.entities.typedefs.v1.TypeDefsService","pages":[{"title":"ListEntityTraitDefs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/typedefs/v1/entity-traits/list","href":"/api-reference/synqentitiestypedefsv1typedefsservice/listentitytraitdefs"},{"title":"ListEntityTypeDefs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/typedefs/v1/entity-types/list","href":"/api-reference/synqentitiestypedefsv1typedefsservice/listentitytypedefs"},{"title":"ListExecutionTypeDefs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/typedefs/v1/execution-types/list","href":"/api-reference/synqentitiestypedefsv1typedefsservice/listexecutiontypedefs"},{"title":"ListPlatformDefs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/typedefs/v1/platforms/list","href":"/api-reference/synqentitiestypedefsv1typedefsservice/listplatformdefs"}]},{"group":"synq.entities.entities.v1.EntitiesService","pages":[{"title":"ListEntities","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/entities/v1","href":"/api-reference/synqentitiesentitiesv1entitiesservice/listentities"},{"title":"BatchGetEntities","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/v1/by-id","href":"/api-reference/synqentitiesentitiesv1entitiesservice/batchgetentities"},{"title":"SearchEntities","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/entities/v1/search","href":"/api-reference/synqentitiesentitiesv1entitiesservice/searchentities"}]},{"group":"synq.entities.checks.v2.ChecksCategoriesService","pages":[{"title":"UpsertCheckCategories","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/v2/checks/categories","href":"/api-reference/synqentitieschecksv2checkscategoriesservice/upsertcheckcategories"},{"title":"BatchGetCheckCategories","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/v2/checks/categories/batch-get","href":"/api-reference/synqentitieschecksv2checkscategoriesservice/batchgetcheckcategories"},{"title":"DeleteCheckCategories","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/v2/checks/categories/delete","href":"/api-reference/synqentitieschecksv2checkscategoriesservice/deletecheckcategories"},{"title":"ListCategorisationFilters","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/v2/checks/categories/filters","href":"/api-reference/synqentitieschecksv2checkscategoriesservice/listcategorisationfilters"},{"title":"ListCheckCategories","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/v2/checks/categories/list","href":"/api-reference/synqentitieschecksv2checkscategoriesservice/listcheckcategories"},{"title":"ListCategories","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/v2/checks/categories/vocabulary","href":"/api-reference/synqentitieschecksv2checkscategoriesservice/listcategories"}]},{"group":"synq.entities.checks.v2.ChecksCategorisationRulesService","pages":[{"title":"UpsertRule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/v2/checks/categorisation-rules","href":"/api-reference/synqentitieschecksv2checkscategorisationrulesservice/upsertrule"},{"title":"BatchGetRules","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/v2/checks/categorisation-rules/batch-get","href":"/api-reference/synqentitieschecksv2checkscategorisationrulesservice/batchgetrules"},{"title":"DeleteRule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/v2/checks/categorisation-rules/delete","href":"/api-reference/synqentitieschecksv2checkscategorisationrulesservice/deleterule"},{"title":"ListRules","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/v2/checks/categorisation-rules/list","href":"/api-reference/synqentitieschecksv2checkscategorisationrulesservice/listrules"},{"title":"ListRuleMatches","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/v2/checks/categorisation-rules/matches","href":"/api-reference/synqentitieschecksv2checkscategorisationrulesservice/listrulematches"},{"title":"PreviewRule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/v2/checks/categorisation-rules/preview","href":"/api-reference/synqentitieschecksv2checkscategorisationrulesservice/previewrule"},{"title":"GetRecategorisationStatus","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/entities/v2/checks/categorisation-rules/recategorisation-status","href":"/api-reference/synqentitieschecksv2checkscategorisationrulesservice/getrecategorisationstatus"}]},{"group":"synq.entities.executions.v1.EntityExecutionsService","pages":[{"title":"UpsertExecution","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/executions/v1","href":"/api-reference/synqentitiesexecutionsv1entityexecutionsservice/upsertexecution"},{"title":"UpsertLogEntry","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/executions/v1/log-entry","href":"/api-reference/synqentitiesexecutionsv1entityexecutionsservice/upsertlogentry"}]},{"group":"synq.entities.executions.v2.EntityExecutionsService","pages":[{"title":"BatchGetExecutions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/executions/v2/by-id","href":"/api-reference/synqentitiesexecutionsv2entityexecutionsservice/batchgetexecutions"},{"title":"GetLatestExecutions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/executions/v2/latest","href":"/api-reference/synqentitiesexecutionsv2entityexecutionsservice/getlatestexecutions"},{"title":"ListExecutions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/executions/v2/list","href":"/api-reference/synqentitiesexecutionsv2entityexecutionsservice/listexecutions"},{"title":"GetExecutionsSummary","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/executions/v2/summary","href":"/api-reference/synqentitiesexecutionsv2entityexecutionsservice/getexecutionssummary"}]},{"group":"synq.extensions.atlan.integrations.v1.AtlanIntegrationService","pages":[{"title":"Get","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/extensions/atlan/integrations/v1","href":"/api-reference/synqextensionsatlanintegrationsv1atlanintegrationservice/get"},{"title":"Upsert","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/extensions/atlan/integrations/v1","href":"/api-reference/synqextensionsatlanintegrationsv1atlanintegrationservice/upsert"},{"title":"Remove","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/extensions/atlan/integrations/v1","href":"/api-reference/synqextensionsatlanintegrationsv1atlanintegrationservice/remove"},{"title":"Activate","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /api/extensions/atlan/integrations/v1","href":"/api-reference/synqextensionsatlanintegrationsv1atlanintegrationservice/activate"},{"title":"Ping","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/extensions/atlan/integrations/v1/ping","href":"/api-reference/synqextensionsatlanintegrationsv1atlanintegrationservice/ping"}]},{"group":"synq.extensions.atlan.provider.v1.AtlanProviderService","pages":[{"title":"GetAtlanConnections","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/extensions/atlan/provider/v1/connections","href":"/api-reference/synqextensionsatlanproviderv1atlanproviderservice/getatlanconnections"},{"title":"GetAtlanDataProducts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/extensions/atlan/provider/v1/data-products","href":"/api-reference/synqextensionsatlanproviderv1atlanproviderservice/getatlandataproducts"},{"title":"GetAtlanDomains","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/extensions/atlan/provider/v1/domains","href":"/api-reference/synqextensionsatlanproviderv1atlanproviderservice/getatlandomains"}]},{"group":"synq.extensions.atlan.workflows.v1.AtlanWorkflowService","pages":[{"title":"GetConnectionMappings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/extensions/atlan/workflows/v1/connection-mappings","href":"/api-reference/synqextensionsatlanworkflowsv1atlanworkflowservice/getconnectionmappings"},{"title":"SetConnectionMappings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/extensions/atlan/workflows/v1/connection-mappings","href":"/api-reference/synqextensionsatlanworkflowsv1atlanworkflowservice/setconnectionmappings"},{"title":"RemoveConnectionMappings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/extensions/atlan/workflows/v1/connection-mappings","href":"/api-reference/synqextensionsatlanworkflowsv1atlanworkflowservice/removeconnectionmappings"},{"title":"GetDomainMappings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/extensions/atlan/workflows/v1/domain-mappings","href":"/api-reference/synqextensionsatlanworkflowsv1atlanworkflowservice/getdomainmappings"},{"title":"GetMappingToggles","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/extensions/atlan/workflows/v1/mappings/toggle","href":"/api-reference/synqextensionsatlanworkflowsv1atlanworkflowservice/getmappingtoggles"},{"title":"SetMappingToggles","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/extensions/atlan/workflows/v1/mappings/toggle","href":"/api-reference/synqextensionsatlanworkflowsv1atlanworkflowservice/setmappingtoggles"},{"title":"GetProductMappings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/extensions/atlan/workflows/v1/product-mappings","href":"/api-reference/synqextensionsatlanworkflowsv1atlanworkflowservice/getproductmappings"},{"title":"FetchRuns","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/extensions/atlan/workflows/v1/runs","href":"/api-reference/synqextensionsatlanworkflowsv1atlanworkflowservice/fetchruns"},{"title":"Synchronize","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/extensions/atlan/workflows/v1/synchronize","href":"/api-reference/synqextensionsatlanworkflowsv1atlanworkflowservice/synchronize"}]},{"group":"synq.agent.sre.v1.FeatureRequestService","pages":[{"title":"SubmitFeatureRequest","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/feature-request/v1/submit","href":"/api-reference/synqagentsrev1featurerequestservice/submitfeaturerequest"}]},{"group":"synq.git.commits.v1.CommitsService","pages":[{"title":"GetDiffByChangeId","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/git/v1/change/{change_id}","href":"/api-reference/synqgitcommitsv1commitsservice/getdiffbychangeid"},{"title":"GetDiffByCommit","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/git/v1/commit/{commit_sha}","href":"/api-reference/synqgitcommitsv1commitsservice/getdiffbycommit"}]},{"group":"synq.auth.iam.v1.IamService","pages":[{"title":"Iam","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/iam/v1","href":"/api-reference/synqauthiamv1iamservice/iam"}]},{"group":"synq.entities.impact.v1.ImpactService","pages":[{"title":"GetImpact","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/impact/v1","href":"/api-reference/synqentitiesimpactv1impactservice/getimpact"}]},{"group":"synq.incidents.v1.IncidentsService","pages":[{"title":"ListIncidents","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/incidents/v1","href":"/api-reference/synqincidentsv1incidentsservice/listincidents"},{"title":"CreateIncident","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/incidents/v1","href":"/api-reference/synqincidentsv1incidentsservice/createincident"},{"title":"BatchGetIncidents","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/incidents/v1/by-id","href":"/api-reference/synqincidentsv1incidentsservice/batchgetincidents"},{"title":"AssignIncidentOwner","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /api/incidents/v1/{incident_id}/assign-owner","href":"/api-reference/synqincidentsv1incidentsservice/assignincidentowner"},{"title":"CancelIncident","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /api/incidents/v1/{incident_id}/cancel","href":"/api-reference/synqincidentsv1incidentsservice/cancelincident"},{"title":"CloseIncident","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /api/incidents/v1/{incident_id}/close","href":"/api-reference/synqincidentsv1incidentsservice/closeincident"},{"title":"PostComment","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/incidents/v1/{incident_id}/comment","href":"/api-reference/synqincidentsv1incidentsservice/postcomment"},{"title":"DeleteComment","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/incidents/v1/{incident_id}/comment/{comment_id}","href":"/api-reference/synqincidentsv1incidentsservice/deletecomment"},{"title":"AddIssuesToIncident","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/incidents/v1/{incident_id}/issues","href":"/api-reference/synqincidentsv1incidentsservice/addissuestoincident"},{"title":"RemoveIssuesFromIncident","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/incidents/v1/{incident_id}/issues","href":"/api-reference/synqincidentsv1incidentsservice/removeissuesfromincident"},{"title":"MergeIncidents","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/incidents/v1/{incident_id}/merge","href":"/api-reference/synqincidentsv1incidentsservice/mergeincidents"},{"title":"RenameIncident","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /api/incidents/v1/{incident_id}/rename","href":"/api-reference/synqincidentsv1incidentsservice/renameincident"},{"title":"SplitIncident","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/incidents/v1/{incident_id}/split","href":"/api-reference/synqincidentsv1incidentsservice/splitincident"},{"title":"UpdateIncidentState","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /api/incidents/v1/{incident_id}/state","href":"/api-reference/synqincidentsv1incidentsservice/updateincidentstate"}]},{"group":"synq.ingest.airflow.v1.AirflowLogsService","pages":[{"title":"IngestDatahubAspects","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/ingest/airflow/v1/aspects","href":"/api-reference/synqingestairflowv1airflowlogsservice/ingestdatahubaspects"},{"title":"IngestLog","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/ingest/airflow/v1/{dag_id}/{task_id}/{run_id}/logs","href":"/api-reference/synqingestairflowv1airflowlogsservice/ingestlog"}]},{"group":"synq.ingest.cloudwatch.v1.CloudwatchService","pages":[{"title":"IngestCloudwatchLogsData","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/ingest/cloudwatch/v1/{log_group}/{log_stream}","href":"/api-reference/synqingestcloudwatchv1cloudwatchservice/ingestcloudwatchlogsdata"}]},{"group":"synq.ingest.openlineage.v1.OpenlineageService","pages":[{"title":"Ingest","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/ingest/openlineage/v1","href":"/api-reference/synqingestopenlineagev1openlineageservice/ingest"}]},{"group":"synq.integrations.v1.IntegrationsService","pages":[{"title":"ListIntegrations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/integrations/v1","href":"/api-reference/synqintegrationsv1integrationsservice/listintegrations"},{"title":"CreateIntegration","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/integrations/v1","href":"/api-reference/synqintegrationsv1integrationsservice/createintegration"},{"title":"BatchGetIntegrations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/integrations/v1/by-id","href":"/api-reference/synqintegrationsv1integrationsservice/batchgetintegrations"},{"title":"UpdateIntegration","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /api/integrations/v1/{integration_id}","href":"/api-reference/synqintegrationsv1integrationsservice/updateintegration"},{"title":"DeleteIntegration","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/integrations/v1/{integration_id}","href":"/api-reference/synqintegrationsv1integrationsservice/deleteintegration"},{"title":"DisableIntegration","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/integrations/v1/{integration_id}/disable","href":"/api-reference/synqintegrationsv1integrationsservice/disableintegration"},{"title":"EnableIntegration","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/integrations/v1/{integration_id}/enable","href":"/api-reference/synqintegrationsv1integrationsservice/enableintegration"},{"title":"RefreshIntegration","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/integrations/v1/{integration_id}/refresh","href":"/api-reference/synqintegrationsv1integrationsservice/refreshintegration"}]},{"group":"synq.issues.issues.v1.IssuesService","pages":[{"title":"ListIssues","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/issues/v1","href":"/api-reference/synqissuesissuesv1issuesservice/listissues"},{"title":"BatchGetIssues","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/issues/v1/by-id","href":"/api-reference/synqissuesissuesv1issuesservice/batchgetissues"},{"title":"PostComment","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/issues/v1/{issue_id}/comment","href":"/api-reference/synqissuesissuesv1issuesservice/postcomment"},{"title":"MarkExpected","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /api/issues/v1/{issue_id}/mark-expected","href":"/api-reference/synqissuesissuesv1issuesservice/markexpected"},{"title":"MarkFixed","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /api/issues/v1/{issue_id}/mark-fixed","href":"/api-reference/synqissuesissuesv1issuesservice/markfixed"},{"title":"MarkInvestigating","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /api/issues/v1/{issue_id}/mark-investigating","href":"/api-reference/synqissuesissuesv1issuesservice/markinvestigating"},{"title":"MarkNoActionNeeded","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /api/issues/v1/{issue_id}/mark-no-action-needed","href":"/api-reference/synqissuesissuesv1issuesservice/marknoactionneeded"}]},{"group":"synq.issues.v2.IssuesService","pages":[{"title":"ListIssues","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/issues/v2","href":"/api-reference/synqissuesv2issuesservice/listissues"},{"title":"BatchGetIssues","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/issues/v2/by-id","href":"/api-reference/synqissuesv2issuesservice/batchgetissues"},{"title":"ClearStatus","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /api/issues/v2/{issue_id}/clear-status","href":"/api-reference/synqissuesv2issuesservice/clearstatus"},{"title":"PostComment","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/issues/v2/{issue_id}/comment","href":"/api-reference/synqissuesv2issuesservice/postcomment"},{"title":"DeleteComment","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/issues/v2/{issue_id}/comment/{comment_id}","href":"/api-reference/synqissuesv2issuesservice/deletecomment"},{"title":"MarkExpected","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /api/issues/v2/{issue_id}/mark-expected","href":"/api-reference/synqissuesv2issuesservice/markexpected"},{"title":"MarkFixed","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /api/issues/v2/{issue_id}/mark-fixed","href":"/api-reference/synqissuesv2issuesservice/markfixed"},{"title":"MarkInvestigating","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /api/issues/v2/{issue_id}/mark-investigating","href":"/api-reference/synqissuesv2issuesservice/markinvestigating"},{"title":"MarkNoActionNeeded","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /api/issues/v2/{issue_id}/mark-no-action-needed","href":"/api-reference/synqissuesv2issuesservice/marknoactionneeded"}]},{"group":"synq.knowledge.v1alpha.KnowledgeService","pages":[{"title":"BatchGetEntityKnowledge","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/knowledge/v1alpha/entities/by-id","href":"/api-reference/synqknowledgev1alphaknowledgeservice/batchgetentityknowledge"},{"title":"ListKnowledgePages","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/knowledge/v1alpha/pages","href":"/api-reference/synqknowledgev1alphaknowledgeservice/listknowledgepages"},{"title":"BatchGetKnowledgePages","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/knowledge/v1alpha/pages/by-id","href":"/api-reference/synqknowledgev1alphaknowledgeservice/batchgetknowledgepages"},{"title":"ListKnowledgePageLinks","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/knowledge/v1alpha/pages/{page_id}/links","href":"/api-reference/synqknowledgev1alphaknowledgeservice/listknowledgepagelinks"}]},{"group":"synq.entities.lineage.folds.v1alpha.LineageFoldsService","pages":[{"title":"ListFolds","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/lineage/folds/v1alpha","href":"/api-reference/synqentitieslineagefoldsv1alphalineagefoldsservice/listfolds"},{"title":"CreateFold","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/lineage/folds/v1alpha","href":"/api-reference/synqentitieslineagefoldsv1alphalineagefoldsservice/createfold"},{"title":"BatchGetFolds","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/lineage/folds/v1alpha/batch-get","href":"/api-reference/synqentitieslineagefoldsv1alphalineagefoldsservice/batchgetfolds"},{"title":"BatchGetFoldNodes","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/lineage/folds/v1alpha/nodes/batch-get","href":"/api-reference/synqentitieslineagefoldsv1alphalineagefoldsservice/batchgetfoldnodes"},{"title":"PreviewFold","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/lineage/folds/v1alpha/preview","href":"/api-reference/synqentitieslineagefoldsv1alphalineagefoldsservice/previewfold"},{"title":"DeleteFold","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/lineage/folds/v1alpha/{id}/delete","href":"/api-reference/synqentitieslineagefoldsv1alphalineagefoldsservice/deletefold"},{"title":"SetFoldEnabled","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/lineage/folds/v1alpha/{id}/enabled","href":"/api-reference/synqentitieslineagefoldsv1alphalineagefoldsservice/setfoldenabled"},{"title":"UpdateFoldMatcher","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/lineage/folds/v1alpha/{id}/matcher","href":"/api-reference/synqentitieslineagefoldsv1alphalineagefoldsservice/updatefoldmatcher"},{"title":"RenameFold","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/lineage/folds/v1alpha/{id}/rename","href":"/api-reference/synqentitieslineagefoldsv1alphalineagefoldsservice/renamefold"}]},{"group":"synq.entities.lineage.v1.LineageService","pages":[{"title":"GetLineage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/lineage/v1","href":"/api-reference/synqentitieslineagev1lineageservice/getlineage"}]},{"group":"synq.monitors.automated_monitors.v1.DeploymentRulesService","pages":[{"title":"GetDeployOverview","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/monitors/automated/v1/deployment-rule","href":"/api-reference/synqmonitorsautomated_monitorsv1deploymentrulesservice/getdeployoverview"},{"title":"DeleteDeploymentRule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/monitors/automated/v1/deployment-rule/{id}","href":"/api-reference/synqmonitorsautomated_monitorsv1deploymentrulesservice/deletedeploymentrule"},{"title":"GetDeployDeleteOverview","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/monitors/automated/v1/deployment-rule/{id}/deleted","href":"/api-reference/synqmonitorsautomated_monitorsv1deploymentrulesservice/getdeploydeleteoverview"},{"title":"ListDeploymentRules","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/monitors/automated/v1/deployment-rules","href":"/api-reference/synqmonitorsautomated_monitorsv1deploymentrulesservice/listdeploymentrules"},{"title":"UpsertDeploymentRule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/monitors/automated/v1/deployment-rules","href":"/api-reference/synqmonitorsautomated_monitorsv1deploymentrulesservice/upsertdeploymentrule"},{"title":"BatchUpdateDeploymentRuleTitle","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /api/monitors/automated/v1/deployment-rules","href":"/api-reference/synqmonitorsautomated_monitorsv1deploymentrulesservice/batchupdatedeploymentruletitle"},{"title":"BatchGetDeploymentRules","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/monitors/automated/v1/deployment-rules/batch","href":"/api-reference/synqmonitorsautomated_monitorsv1deploymentrulesservice/batchgetdeploymentrules"},{"title":"BatchUpsertDeploymentRules","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/monitors/automated/v1/deployment-rules/batch","href":"/api-reference/synqmonitorsautomated_monitorsv1deploymentrulesservice/batchupsertdeploymentrules"},{"title":"BatchDeleteDeploymentRules","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/monitors/automated/v1/deployment-rules/batch","href":"/api-reference/synqmonitorsautomated_monitorsv1deploymentrulesservice/batchdeletedeploymentrules"},{"title":"BatchDeployDeploymentRules","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/monitors/automated/v1/deployment-rules/batch/deployed","href":"/api-reference/synqmonitorsautomated_monitorsv1deploymentrulesservice/batchdeploydeploymentrules"},{"title":"DeployDeploymentRule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/monitors/automated/v1/deployment-rules/deployed","href":"/api-reference/synqmonitorsautomated_monitorsv1deploymentrulesservice/deploydeploymentrule"},{"title":"ListDeploymentRulesForAsset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/monitors/automated/v1/deployment-rules/{asset_path}","href":"/api-reference/synqmonitorsautomated_monitorsv1deploymentrulesservice/listdeploymentrulesforasset"}]},{"group":"synq.monitors.custom_monitors.v1.CustomMonitorsService","pages":[{"title":"ListMonitors","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/monitors/custom-monitors/v1","href":"/api-reference/synqmonitorscustom_monitorsv1custommonitorsservice/listmonitors"},{"title":"BatchUpdateMonitor","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /api/monitors/custom-monitors/v1","href":"/api-reference/synqmonitorscustom_monitorsv1custommonitorsservice/batchupdatemonitor"},{"title":"BatchCreateMonitor","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/monitors/custom-monitors/v1","href":"/api-reference/synqmonitorscustom_monitorsv1custommonitorsservice/batchcreatemonitor"},{"title":"ListConfigsMonitors","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/monitors/custom-monitors/v1/by-config","href":"/api-reference/synqmonitorscustom_monitorsv1custommonitorsservice/listconfigsmonitors"},{"title":"ConfigChangesOverview","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/monitors/custom-monitors/v1/config-changes","href":"/api-reference/synqmonitorscustom_monitorsv1custommonitorsservice/configchangesoverview"},{"title":"BatchDeleteMonitor","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/monitors/custom-monitors/v1/delete","href":"/api-reference/synqmonitorscustom_monitorsv1custommonitorsservice/batchdeletemonitor"},{"title":"BatchUpdateMonitorMode","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/monitors/custom-monitors/v1/mode","href":"/api-reference/synqmonitorscustom_monitorsv1custommonitorsservice/batchupdatemonitormode"},{"title":"BatchUpdateMonitorSeverity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/monitors/custom-monitors/v1/severity","href":"/api-reference/synqmonitorscustom_monitorsv1custommonitorsservice/batchupdatemonitorseverity"}]},{"group":"synq.monitors.history.v1.HistoryService","pages":[{"title":"History","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/monitors/history/v1","href":"/api-reference/synqmonitorshistoryv1historyservice/history"}]},{"group":"synq.monitors.info.v1.MonitorInfoService","pages":[{"title":"MonitorInfo","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/monitors/info/v1","href":"/api-reference/synqmonitorsinfov1monitorinfoservice/monitorinfo"}]},{"group":"synq.monitors.predictions.v1.MonitorPredictionsService","pages":[{"title":"GetMonitorPredictions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/monitors/predictions/v1","href":"/api-reference/synqmonitorspredictionsv1monitorpredictionsservice/getmonitorpredictions"},{"title":"GetEntityMetrics","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/monitors/predictions/v1/entity-metrics","href":"/api-reference/synqmonitorspredictionsv1monitorpredictionsservice/getentitymetrics"},{"title":"BatchGetLatestEntityMetrics","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/monitors/predictions/v1/entity-metrics:batchLatest","href":"/api-reference/synqmonitorspredictionsv1monitorpredictionsservice/batchgetlatestentitymetrics"}]},{"group":"synq.monitors.segments.v1.MonitorSegmentsService","pages":[{"title":"ListMonitorSegments","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/monitors/segments/v1","href":"/api-reference/synqmonitorssegmentsv1monitorsegmentsservice/listmonitorsegments"},{"title":"BatchUpdateMonitorSegmentLabels","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/monitors/segments/v1/labels","href":"/api-reference/synqmonitorssegmentsv1monitorsegmentsservice/batchupdatemonitorsegmentlabels"}]},{"group":"synq.entities.orchestration.v1.OrchestrationService","pages":[{"title":"BatchOrchestration","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/orchestration/v1","href":"/api-reference/synqentitiesorchestrationv1orchestrationservice/batchorchestration"}]},{"group":"synq.overlays.v1.OverlaysService","pages":[{"title":"BatchGetEntityOverlays","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/overlays/v1/by-id","href":"/api-reference/synqoverlaysv1overlaysservice/batchgetentityoverlays"},{"title":"ListEntityCoverage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/overlays/v1/coverage","href":"/api-reference/synqoverlaysv1overlaysservice/listentitycoverage"},{"title":"GetCoverageSummary","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/overlays/v1/coverage-summary","href":"/api-reference/synqoverlaysv1overlaysservice/getcoveragesummary"},{"title":"BatchGetOverlayMemberCounts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/overlays/v1/member-counts","href":"/api-reference/synqoverlaysv1overlaysservice/batchgetoverlaymembercounts"}]},{"group":"synq.owners.v1.OwnersService","pages":[{"title":"ListOwners","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/owners/v1","href":"/api-reference/synqownersv1ownersservice/listowners"},{"title":"UpsertOwner","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/owners/v1","href":"/api-reference/synqownersv1ownersservice/upsertowner"},{"title":"BatchGetOwners","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/owners/v1/batch-get","href":"/api-reference/synqownersv1ownersservice/batchgetowners"},{"title":"DeleteOwner","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/owners/v1/delete","href":"/api-reference/synqownersv1ownersservice/deleteowner"},{"title":"BatchGetOwnerships","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/owners/v1/ownerships/batch-get","href":"/api-reference/synqownersv1ownersservice/batchgetownerships"},{"title":"DeleteOwnership","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/owners/v1/ownerships/delete","href":"/api-reference/synqownersv1ownersservice/deleteownership"},{"title":"ListOwnerships","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/owners/v1/{owner_id}/ownerships","href":"/api-reference/synqownersv1ownersservice/listownerships"},{"title":"UpsertOwnership","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/owners/v1/{owner_id}/ownerships","href":"/api-reference/synqownersv1ownersservice/upsertownership"}]},{"group":"synq.platforms.v1.PlatformsService","pages":[{"title":"SetPlatformAuthentication","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/platforms/v1","href":"/api-reference/synqplatformsv1platformsservice/setplatformauthentication"}]},{"group":"synq.queries.v1.QueriesService","pages":[{"title":"DescribeResolverQl","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/queries/v1/describe-resolver-ql","href":"/api-reference/synqqueriesv1queriesservice/describeresolverql"},{"title":"ResolveQuery","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/queries/v1/resolve","href":"/api-reference/synqqueriesv1queriesservice/resolvequery"},{"title":"TranslateResolverQl","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/queries/v1/translate-resolver-ql","href":"/api-reference/synqqueriesv1queriesservice/translateresolverql"}]},{"group":"synq.queries.v1.NLQueryService","pages":[{"title":"GenerateQuery","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/queries/v1/generate","href":"/api-reference/synqqueriesv1nlqueryservice/generatequery"}]},{"group":"synq.recommendations.v1.RecommendationsService","pages":[{"title":"ListRecommendations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/recommendations/v1","href":"/api-reference/synqrecommendationsv1recommendationsservice/listrecommendations"},{"title":"BatchGetRecommendations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/recommendations/v1/by-id","href":"/api-reference/synqrecommendationsv1recommendationsservice/batchgetrecommendations"},{"title":"DismissRecommendation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/recommendations/v1/{recommendation_id}/dismiss","href":"/api-reference/synqrecommendationsv1recommendationsservice/dismissrecommendation"},{"title":"IgnoreRecommendation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/recommendations/v1/{recommendation_id}/ignore","href":"/api-reference/synqrecommendationsv1recommendationsservice/ignorerecommendation"},{"title":"RestoreRecommendation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/recommendations/v1/{recommendation_id}/restore","href":"/api-reference/synqrecommendationsv1recommendationsservice/restorerecommendation"}]},{"group":"synq.agent.recon.v1.SuiteDeploymentService","pages":[{"title":"TriggerDeployment","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/recon/v1/deployments/trigger","href":"/api-reference/synqagentreconv1suitedeploymentservice/triggerdeployment"}]},{"group":"synq.entities.resolve.v1.IdentifierResolveService","pages":[{"title":"BatchResolveIdentifiers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/resolve/v1/by-id","href":"/api-reference/synqentitiesresolvev1identifierresolveservice/batchresolveidentifiers"}]},{"group":"synq.savedviews.v1.SavedViewsService","pages":[{"title":"Upsert","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/saved-views/v1","href":"/api-reference/synqsavedviewsv1savedviewsservice/upsert"},{"title":"BatchGet","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/saved-views/v1/batch-get","href":"/api-reference/synqsavedviewsv1savedviewsservice/batchget"},{"title":"Delete","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/saved-views/v1/delete","href":"/api-reference/synqsavedviewsv1savedviewsservice/delete"},{"title":"List","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/saved-views/v1/list","href":"/api-reference/synqsavedviewsv1savedviewsservice/list"},{"title":"SetPin","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/saved-views/v1/set-pin","href":"/api-reference/synqsavedviewsv1savedviewsservice/setpin"}]},{"group":"synq.schedule.v1.ScheduleService","pages":[{"title":"PreviewSchedules","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/schedule/v1/preview","href":"/api-reference/synqschedulev1scheduleservice/previewschedules"}]},{"group":"synq.entities.schemas.v1.SchemaMismatchesService","pages":[{"title":"BatchSchemaMismatches","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/schema-mismatches/v1","href":"/api-reference/synqentitiesschemasv1schemamismatchesservice/batchschemamismatches"}]},{"group":"synq.entities.schemas.v1.SchemasService","pages":[{"title":"GetSchema","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/schema/v1","href":"/api-reference/synqentitiesschemasv1schemasservice/getschema"}]},{"group":"synq.entities.sql_insights.v1.SqlInsightsService","pages":[{"title":"ListSqlConstructs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/sql-insights/v1/constructs","href":"/api-reference/synqentitiessql_insightsv1sqlinsightsservice/listsqlconstructs"},{"title":"BatchSqlDetails","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/sql-insights/v1/details:batch","href":"/api-reference/synqentitiessql_insightsv1sqlinsightsservice/batchsqldetails"},{"title":"ListJoinPatterns","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/sql-insights/v1/join-patterns","href":"/api-reference/synqentitiessql_insightsv1sqlinsightsservice/listjoinpatterns"}]},{"group":"synq.agent.sre.v1.LlmService","pages":[{"title":"Evaluate","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/sre/llm/v1/evaluate","href":"/api-reference/synqagentsrev1llmservice/evaluate"}]},{"group":"synq.entities.status.v1.EntityIncidentsService","pages":[{"title":"BatchGetIncidents","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/status/v1/incidents/by-id","href":"/api-reference/synqentitiesstatusv1entityincidentsservice/batchgetincidents"}]},{"group":"synq.entities.status.v1.EntityIssuesService","pages":[{"title":"BatchGetIssuesStatus","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/status/v1/issues/by-id","href":"/api-reference/synqentitiesstatusv1entityissuesservice/batchgetissuesstatus"}]},{"group":"synq.agent.sre.v1.TriageService","pages":[{"title":"BatchLatestConclusions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/triage/v1/conclusions","href":"/api-reference/synqagentsrev1triageservice/batchlatestconclusions"},{"title":"MarkFailed","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /api/triage/v1/failed","href":"/api-reference/synqagentsrev1triageservice/markfailed"},{"title":"MarkAsInProgress","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /api/triage/v1/in-progress","href":"/api-reference/synqagentsrev1triageservice/markasinprogress"},{"title":"BatchTriageState","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/triage/v1/states","href":"/api-reference/synqagentsrev1triageservice/batchtriagestate"},{"title":"ListTriageState","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/triage/v1/statuses","href":"/api-reference/synqagentsrev1triageservice/listtriagestate"},{"title":"Conclude","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/triage/v1/{session_id}/conclusion","href":"/api-reference/synqagentsrev1triageservice/conclude"},{"title":"RecordEvidence","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/triage/v1/{session_id}/evidence","href":"/api-reference/synqagentsrev1triageservice/recordevidence"}]},{"group":"synq.users.v1.UsersService","pages":[{"title":"ListUsers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/users/v1","href":"/api-reference/synqusersv1usersservice/listusers"},{"title":"GetUserAliases","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/users/v1/aliases","href":"/api-reference/synqusersv1usersservice/getuseraliases"},{"title":"UpsertUserAliases","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /api/users/v1/aliases","href":"/api-reference/synqusersv1usersservice/upsertuseraliases"},{"title":"DeleteUserAliases","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/users/v1/aliases/delete","href":"/api-reference/synqusersv1usersservice/deleteuseraliases"},{"title":"BatchGetUsers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/users/v1/batch-get","href":"/api-reference/synqusersv1usersservice/batchgetusers"},{"title":"GetByAlias","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/users/v1/by-alias","href":"/api-reference/synqusersv1usersservice/getbyalias"},{"title":"GetByEmail","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/users/v1/by-email","href":"/api-reference/synqusersv1usersservice/getbyemail"},{"title":"GetUserIdentities","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/users/v1/identities","href":"/api-reference/synqusersv1usersservice/getuseridentities"},{"title":"AddUserRole","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/users/v1/roles","href":"/api-reference/synqusersv1usersservice/adduserrole"},{"title":"RemoveUserRole","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/users/v1/roles/remove","href":"/api-reference/synqusersv1usersservice/removeuserrole"}]}]},{"group":"gRPC API","pages":[{"title":"API","href":"/api-reference/api"},{"title":null,"href":"/api-reference/examples"}]},{"group":"Custom Integrations","pages":[{"title":"Custom Integrations","href":"/custom-integrations/overview"},{"title":"Modelling Your Tool","href":"/custom-integrations/modelling"},{"title":"Building an Integration","href":"/custom-integrations/building-an-integration"},{"title":"API Surface","href":"/custom-integrations/api-surface"},{"title":"Agent Workflow","href":"/custom-integrations/agent-workflow"}]},{"group":"Webhooks","pages":[{"title":"Using Webhooks","href":"/api-reference/webhook"},{"title":"Debugging Deliveries","href":"/api-reference/webhook-deliveries"}]}]}]}]},"basePath":"","title":"ListEntityFeatures - Coalesce Quality Documentation","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DX1Meug0.js","utils-B_OMIQVC.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-ChxhRPMa.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CuKvD8Iv.js","snippetPresets-C5d7p2hp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CfHcE8m4.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C1zZV314.js","shallow-CmQhqCJn.js","getApiPlaygroundDisplay-YRo9s1O7.js","CodeSnippet-RN1MTdfk.js","CodeSnippets-DKLPHxJA.js","Page-BAvA99GL.js","getPastedJson-bz0M41mU.js","icon-CsmhpPrv.js","MethodPill-CNGsVE77.js","DuplicateIcon-DilfU_Z2.js","createIcon-BdsYzQck.js","DynamicMarkdown-CbqEDjbV.js","SectionHeading-O6hXpFCN.js","axios-vUo_bRtp.js","Markdown-nKm-uidQ.js","clsx-ClVdStUn.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CIQkMg3R.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-ImrFS4Fy.js"]}