ListJoinPatterns lists how other SQL joins a table, or one of its columns:
every join key that the SQL of a table, view or model in the workspace
uses to join the requested entity, read from the requested entity’s side,
and which SQL makes it. It is the reverse of BatchSqlDetails joins, which
say how building one entity joins others: here the requested entity is the
one being joined.
The requested entity is taken together with every entity that is the same
object, like a dbt model, the table it builds and that table in a
catalog, so asking about any of them returns the joins on all of them.
Set to return only the patterns whose key compares this column of the
entity, like customer_id. Matched case-insensitively. Leave empty for
every column.
Set to return only how the entity is joined with this other entity, which
answers "how do I join these two tables". A key that also compares a third
table keeps only its comparisons with this one. Like entity_id, it
matches every entity that is the same object. Leave empty for joins with
any entity.
Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must
be between -315576000000 and 315576000000 inclusive (which corresponds to
0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z).
Non-negative fractions of a second at nanosecond resolution. This field is
the nanosecond portion of the duration, not an alternative to seconds.
Negative second values with fractions must still have non-negative nanos
values that count forward in time. Must be between 0 and 999,999,999
inclusive.
A pattern seen only in the query history is listed when it reaches any
of these thresholds that is set. 0 sets none, and with none set every
pattern is listed. A pattern that a SQL definition makes is always
listed.
Set to keep the queries Coalesce ran: those Coalesce Quality's tag
marks, and those of the warehouse users Coalesce connects as. Leave
unset to leave them out, as popularity does, and count them in
query_log_left_out.
The join patterns. Those that a SQL definition makes come first, then
those of the query history only, by distinct logins, the last hour seen
and queries. Empty when no SQL in the workspace joins the entity, or none
was parsed yet.
How many hours of the query_log window the query history covered in
full. 0 with no QUERY_LOG pattern means that no query history was read
for the window, not that no query made a join.
The requested entity first, then every entity that is the same object,
like the table a dbt model builds. The patterns already include the
joins of each of them, so asking about another one of these returns the
same patterns.
Maximum string length: 4096
{"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":"6ae4bce77e124eba0d7b8466","collectionId":"b27469a1-8245-4341-8e48-3bd0c2081fd7","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae4bce77e124eba0d7b8466"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae66a13039e90b0fea0fef8","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"Documentation","count":448},{"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":"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":"Monitors","count":11},{"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":"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":"byok-sep-25","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":"billing-updated-9-15","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}],"googleFontsInlined":false},"customCss":[{"filePath":"global.css","content":".dark img[src^=\"/images/\"]{background:#fff;border-radius:.5rem;padding:4px}"}],"page":{"pagePath":"api-reference/synqentitiessql_insightsv1sqlinsightsservice/listjoinpatterns","slug":"/api-reference/synqentitiessql_insightsv1sqlinsightsservice/listjoinpatterns","pageMetadata":{"title":"ListJoinPatterns","description":"ListJoinPatterns lists how other SQL joins a table, or one of its columns:\n every join key that the SQL of a table, view or model in the workspace\n uses to join the requested entity, read from the requested entity's side,\n and which SQL makes it. It is the reverse of `BatchSqlDetails` joins, which\n say how building one entity joins others: here the requested entity is the\n one being joined.\n\n The requested entity is taken together with every entity that is the same\n object, like a dbt model, the table it builds and that table in a\n catalog, so asking about any of them returns the joins on all of them.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/sql-insights/v1/join-patterns","href":"/api-reference/synqentitiessql_insightsv1sqlinsightsservice/listjoinpatterns","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"ListJoinPatterns lists how other SQL joins a table, or one of its columns:\\nevery join key that the SQL of a table, view or model in the workspace\\nuses to join the requested entity, read from the requested entity’s side,\\nand which SQL makes it. It is the reverse of \", _jsx(_components.code, {\n children: \"BatchSqlDetails\"\n }), \" joins, which\\nsay how building one entity joins others: here the requested entity is the\\none being joined.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"The requested entity is taken together with every entity that is the same\\nobject, like a dbt model, the table it builds and that table in a\\ncatalog, so asking about any of them returns the joins on all of them.\"\n })]\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":"ListJoinPatterns","description":"ListJoinPatterns lists how other SQL joins a table, or one of its columns:\n every join key that the SQL of a table, view or model in the workspace\n uses to join the requested entity, read from the requested entity's side,\n and which SQL makes it. It is the reverse of `BatchSqlDetails` joins, which\n say how building one entity joins others: here the requested entity is the\n one being joined.\n\n The requested entity is taken together with every entity that is the same\n object, like a dbt model, the table it builds and that table in a\n catalog, so asking about any of them returns the joins on all of them.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/sql-insights/v1/join-patterns","href":"/api-reference/synqentitiessql_insightsv1sqlinsightsservice/listjoinpatterns","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/synq-15/7fe5b7dda612017d/region.js"],"openApiReferenceData":{"operation":{"tags":["synq.entities.sql_insights.v1.SqlInsightsService"],"summary":"ListJoinPatterns","description":"ListJoinPatterns lists how other SQL joins a table, or one of its columns:\n every join key that the SQL of a table, view or model in the workspace\n uses to join the requested entity, read from the requested entity's side,\n and which SQL makes it. It is the reverse of `BatchSqlDetails` joins, which\n say how building one entity joins others: here the requested entity is the\n one being joined.\n\n The requested entity is taken together with every entity that is the same\n object, like a dbt model, the table it builds and that table in a\n catalog, so asking about any of them returns the joins on all of them.","operationId":"synq.entities.sql_insights.v1.SqlInsightsService.ListJoinPatterns","parameters":["7046492d-ce1d-46d5-94ab-5554bf40aee4","88b9743a-73f3-4392-b27d-f2b68c98c4d4","7f59c610-5803-4b14-a83c-394386559bd9","a6bc5f34-7e08-4587-83e4-3f4b9a4ee27c","3cedc974-0de9-4b9a-bc53-9be3f8c68104","c297253f-d004-4e53-a0f3-97b6c771840b","b648f1af-8a60-4d7f-94ea-65f2c45b3eeb","63db5d0e-7f81-4f7c-af7b-88cb7ecf0950","cd9d1a05-e9d4-48ce-84eb-b81655a17d2c","7f0c79a0-d253-45c0-bd86-cd0e2797557c"],"responses":{"200":"a6ff1eb8-25e5-44d4-9520-e884e5adba3a"},"method":"get","type":"path","servers":["48744bfd-8999-4797-84b4-2998e5a947c5","75e3b0c9-c49c-4335-af67-cbc071a8c92d","619e14d1-f915-4478-a7e2-ad1b0ade05a7"],"security":["e6e3a4e7-a0de-460f-a4f0-9753c38136eb"],"path":"/api/sql-insights/v1/join-patterns","baseUrlOptions":["https://developer.synq.io","https://api.us.synq.io","https://api.au.synq.io"],"title":"ListJoinPatterns","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"7046492d-ce1d-46d5-94ab-5554bf40aee4":{"name":"entityId","in":"query","description":"The synq path of the table, view or model to list the join patterns of,\n as the `paths` of `BatchSqlDetailsRequest` take it.","schema":{"type":"string","title":"entity_id","maxLength":4096,"minLength":1,"description":"The synq path of the table, view or model to list the join patterns of,\n as the `paths` of `BatchSqlDetailsRequest` take it.","uniqueKey":"","typeLabel":"string"}},"88b9743a-73f3-4392-b27d-f2b68c98c4d4":{"name":"column","in":"query","description":"Set to return only the patterns whose key compares this column of the\n entity, like `customer_id`. Matched case-insensitively. Leave empty for\n every column.","schema":{"type":"string","title":"column","maxLength":4096,"description":"Set to return only the patterns whose key compares this column of the\n entity, like `customer_id`. Matched case-insensitively. Leave empty for\n every column.","uniqueKey":"","typeLabel":"string"}},"7f59c610-5803-4b14-a83c-394386559bd9":{"name":"otherEntityId","in":"query","description":"Set to return only how the entity is joined with this other entity, which\n answers \"how do I join these two tables\". A key that also compares a third\n table keeps only its comparisons with this one. Like `entity_id`, it\n matches every entity that is the same object. Leave empty for joins with\n any entity.","schema":{"type":"string","title":"other_entity_id","maxLength":4096,"description":"Set to return only how the entity is joined with this other entity, which\n answers \"how do I join these two tables\". A key that also compares a third\n table keeps only its comparisons with this one. Like `entity_id`, it\n matches every entity that is the same object. Leave empty for joins with\n any entity.","uniqueKey":"","typeLabel":"string"}},"a6bc5f34-7e08-4587-83e4-3f4b9a4ee27c":{"name":"queryLog.from.seconds","in":"query","description":"Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must\n be between -315576000000 and 315576000000 inclusive (which corresponds to\n 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z).","schema":{"oneOf":[{"type":"integer","title":"seconds","format":"int64","description":"Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must\n be between -315576000000 and 315576000000 inclusive (which corresponds to\n 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z).","uniqueKey":"oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"string","title":"seconds","format":"int64","description":"Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must\n be between -315576000000 and 315576000000 inclusive (which corresponds to\n 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z).","uniqueKey":"oneOf.1","typeLabel":"string\u003cint64>"}],"uniqueKey":"","typeLabel":"integer\u003cint64> | string\u003cint64>"}},"3cedc974-0de9-4b9a-bc53-9be3f8c68104":{"name":"queryLog.from.nanos","in":"query","description":"Non-negative fractions of a second at nanosecond resolution. This field is\n the nanosecond portion of the duration, not an alternative to seconds.\n Negative second values with fractions must still have non-negative nanos\n values that count forward in time. Must be between 0 and 999,999,999\n inclusive.","schema":{"type":"integer","title":"nanos","format":"int32","description":"Non-negative fractions of a second at nanosecond resolution. This field is\n the nanosecond portion of the duration, not an alternative to seconds.\n Negative second values with fractions must still have non-negative nanos\n values that count forward in time. Must be between 0 and 999,999,999\n inclusive.","uniqueKey":"","typeLabel":"integer\u003cint32>"}},"c297253f-d004-4e53-a0f3-97b6c771840b":{"name":"queryLog.minQueries","in":"query","description":"A pattern seen only in the query history is listed when it reaches any\n of these thresholds that is set. 0 sets none, and with none set every\n pattern is listed. A pattern that a SQL definition makes is always\n listed.","schema":{"oneOf":[{"type":"integer","title":"min_queries","format":"int64","description":"A pattern seen only in the query history is listed when it reaches any\n of these thresholds that is set. 0 sets none, and with none set every\n pattern is listed. A pattern that a SQL definition makes is always\n listed.","uniqueKey":"oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"string","title":"min_queries","format":"int64","description":"A pattern seen only in the query history is listed when it reaches any\n of these thresholds that is set. 0 sets none, and with none set every\n pattern is listed. A pattern that a SQL definition makes is always\n listed.","uniqueKey":"oneOf.1","typeLabel":"string\u003cint64>"}],"uniqueKey":"","typeLabel":"integer\u003cint64> | string\u003cint64>"}},"b648f1af-8a60-4d7f-94ea-65f2c45b3eeb":{"name":"queryLog.minLogins","in":"query","schema":{"type":"integer","title":"min_logins","uniqueKey":"","typeLabel":"integer"}},"63db5d0e-7f81-4f7c-af7b-88cb7ecf0950":{"name":"queryLog.includeCoalesceQuality","in":"query","description":"Set to keep the queries Coalesce ran: those Coalesce Quality's tag\n marks, and those of the warehouse users Coalesce connects as. Leave\n unset to leave them out, as popularity does, and count them in\n `query_log_left_out`.","schema":{"type":"boolean","title":"include_coalesce_quality","description":"Set to keep the queries Coalesce ran: those Coalesce Quality's tag\n marks, and those of the warehouse users Coalesce connects as. Leave\n unset to leave them out, as popularity does, and count them in\n `query_log_left_out`.","uniqueKey":"","typeLabel":"boolean"}},"cd9d1a05-e9d4-48ce-84eb-b81655a17d2c":{"name":"queryLog.excludeServiceAccounts","in":"query","description":"Set to leave out the queries of every warehouse user in a service\n account, and count them in `query_log_left_out`.","schema":{"type":"boolean","title":"exclude_service_accounts","description":"Set to leave out the queries of every warehouse user in a service\n account, and count them in `query_log_left_out`.","uniqueKey":"","typeLabel":"boolean"}},"7f0c79a0-d253-45c0-bd86-cd0e2797557c":{"name":"bareOnly","in":"query","description":"Set to return only the patterns whose every side is a plain column, with\n no expression around it, like `lower(email)` or a cast.","schema":{"type":"boolean","title":"bare_only","description":"Set to return only the patterns whose every side is a plain column, with\n no expression around it, like `lower(email)` or a cast.","uniqueKey":"","typeLabel":"boolean"}}},"responses":{"a6ff1eb8-25e5-44d4-9520-e884e5adba3a":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"patterns":{"type":"array","items":{"type":"object","properties":{"key":{"type":"array","items":{"type":"object","properties":{"column":{"type":"object","properties":{"entityId":{"type":"string","maxLength":4096,"description":"The entity the column belongs to. It is the same opaque identifier the\n request's `paths` take, so it can be passed back to look that entity up.","uniqueKey":"patterns.items.[INDEX].key.items.[INDEX].column.entityId","typeLabel":"string"},"column":{"type":"string","maxLength":4096,"description":"The column name, lowercased.","uniqueKey":"patterns.items.[INDEX].key.items.[INDEX].column.column","typeLabel":"string"},"derivation":{"type":"string","title":"JoinSideDerivation","enum":["JOIN_SIDE_DERIVATION_UNSPECIFIED","JOIN_SIDE_DERIVATION_PASSTHROUGH","JOIN_SIDE_DERIVATION_RENAMED","JOIN_SIDE_DERIVATION_TRANSFORMED"],"description":"How the column reaches the comparison.","uniqueKey":"patterns.items.[INDEX].key.items.[INDEX].column.derivation","typeLabel":"enum\u003cstring>"},"expression":{"type":"string","maxLength":100000,"description":"The side's SQL when `derivation` is TRANSFORMED, like `lower(c.email)`.\n For an OTHER operator, the whole comparison. Empty otherwise.","uniqueKey":"patterns.items.[INDEX].key.items.[INDEX].column.expression","typeLabel":"string"}},"title":"JoinColumn","additionalProperties":false,"description":"The requested entity's side of the comparison.","uniqueKey":"patterns.items.[INDEX].key.items.[INDEX].column","typeLabel":"JoinColumn · object"},"other":{"type":"object","properties":{"entityId":{"type":"string","maxLength":4096,"description":"The entity the column belongs to. It is the same opaque identifier the\n request's `paths` take, so it can be passed back to look that entity up.","uniqueKey":"patterns.items.[INDEX].key.items.[INDEX].other.entityId","typeLabel":"string"},"column":{"type":"string","maxLength":4096,"description":"The column name, lowercased.","uniqueKey":"patterns.items.[INDEX].key.items.[INDEX].other.column","typeLabel":"string"},"derivation":{"type":"string","title":"JoinSideDerivation","enum":["JOIN_SIDE_DERIVATION_UNSPECIFIED","JOIN_SIDE_DERIVATION_PASSTHROUGH","JOIN_SIDE_DERIVATION_RENAMED","JOIN_SIDE_DERIVATION_TRANSFORMED"],"description":"How the column reaches the comparison.","uniqueKey":"patterns.items.[INDEX].key.items.[INDEX].other.derivation","typeLabel":"enum\u003cstring>"},"expression":{"type":"string","maxLength":100000,"description":"The side's SQL when `derivation` is TRANSFORMED, like `lower(c.email)`.\n For an OTHER operator, the whole comparison. Empty otherwise.","uniqueKey":"patterns.items.[INDEX].key.items.[INDEX].other.expression","typeLabel":"string"}},"title":"JoinColumn","additionalProperties":false,"description":"The side it is compared with.","uniqueKey":"patterns.items.[INDEX].key.items.[INDEX].other","typeLabel":"JoinColumn · object"},"kind":{"type":"string","title":"JoinKind","enum":["JOIN_KIND_UNSPECIFIED","JOIN_KIND_INNER","JOIN_KIND_LEFT_OUTER","JOIN_KIND_RIGHT_OUTER","JOIN_KIND_FULL_OUTER","JOIN_KIND_CROSS","JOIN_KIND_LEFT_SEMI","JOIN_KIND_RIGHT_SEMI","JOIN_KIND_LEFT_ANTI","JOIN_KIND_RIGHT_ANTI","JOIN_KIND_ASOF","JOIN_KIND_IMPLICIT","JOIN_KIND_UPDATE_FROM","JOIN_KIND_DELETE_USING","JOIN_KIND_MERGE"],"description":"The kind of join, seen from `column`'s side. A join the SQL writes as\n `other RIGHT JOIN column` reads as LEFT_OUTER here, as it keeps every row\n of `column`'s table. It is the kind of the pattern's first join type,\n and `JoinPattern.join_types` lists every one.","uniqueKey":"patterns.items.[INDEX].key.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","title":"JoinOperator","enum":["JOIN_OPERATOR_UNSPECIFIED","JOIN_OPERATOR_EQ","JOIN_OPERATOR_NULL_SAFE_EQ","JOIN_OPERATOR_NOT_EQ","JOIN_OPERATOR_LT","JOIN_OPERATOR_LTE","JOIN_OPERATOR_GT","JOIN_OPERATOR_GTE","JOIN_OPERATOR_OTHER"],"description":"The comparison, read as `column \u003coperator> other`.","uniqueKey":"patterns.items.[INDEX].key.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"leads":{"type":"boolean","description":"Set for the side with a role of its own in an ASOF, UPDATE_FROM,\n DELETE_USING or MERGE join: the side whose rows look for a match in an\n ASOF join, or the table the statement writes to.","uniqueKey":"patterns.items.[INDEX].key.items.[INDEX].leads","typeLabel":"boolean"},"joinType":{"type":"string","title":"JoinType","enum":["JOIN_TYPE_UNSPECIFIED","JOIN_TYPE_LEFT_OUTER","JOIN_TYPE_INNER","JOIN_TYPE_FULL_OUTER","JOIN_TYPE_CROSS","JOIN_TYPE_OTHER"],"description":"The join type, seen from `column`'s side, as a semantic layer names it.\n OTHER for a kind with no join type of its own, and `native_join_type`\n then names it.","uniqueKey":"patterns.items.[INDEX].key.items.[INDEX].joinType","typeLabel":"enum\u003cstring>"},"nativeJoinType":{"type":"string","maxLength":256,"description":"The kind's own name when `join_type` is OTHER, like `RIGHT_OUTER` or\n `ASOF`. Empty otherwise.","uniqueKey":"patterns.items.[INDEX].key.items.[INDEX].nativeJoinType","typeLabel":"string"}},"title":"JoinKeyPart","additionalProperties":false,"description":"JoinKeyPart is one comparison of a join key, read from the side of the\n requested entity: `column` belongs to the requested entity, or to an entity\n that is the same object, and `other` to the entity it is joined with.","uniqueKey":"patterns.items.[INDEX].key.items.[INDEX]","typeLabel":"JoinKeyPart · object"},"description":"The comparisons of the key, read from the requested entity's side and\n ordered by its column. More than one is a composite key: a row matches\n when every comparison holds. Never empty.","uniqueKey":"patterns.items.[INDEX].key","typeLabel":"JoinKeyPart · object[]"},"filters":{"type":"array","items":{"type":"string","maxLength":100000,"uniqueKey":"patterns.items.[INDEX].filters.items.[INDEX]","typeLabel":"string"},"description":"The comparisons between a column and a literal that the same ON clauses\n add, as SQL, like `c.status = 'active'`. They make the join conditional.\n Each is listed once, in the order first seen.","uniqueKey":"patterns.items.[INDEX].filters","typeLabel":"string[]"},"evidenceKinds":{"type":"array","items":{"type":"string","title":"JoinEvidenceKind","enum":["JOIN_EVIDENCE_KIND_UNSPECIFIED","JOIN_EVIDENCE_KIND_SQL_DEFINITION","JOIN_EVIDENCE_KIND_QUERY_LOG"],"description":"JoinEvidenceKind says where a join pattern was seen.","uniqueKey":"patterns.items.[INDEX].evidenceKinds.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Where the pattern was seen.","uniqueKey":"patterns.items.[INDEX].evidenceKinds","typeLabel":"enum\u003cstring>[]"},"sources":{"type":"array","items":{"type":"object","properties":{"entityId":{"type":"string","maxLength":4096,"description":"The entity whose SQL makes the join. It is the same opaque identifier the\n request's `entity_id` takes.","uniqueKey":"patterns.items.[INDEX].sources.items.[INDEX].entityId","typeLabel":"string"},"statementIndex":{"type":"integer","description":"Index of the statement the join is in, among the SQL statements of\n `entity_id`, counting from 0.","uniqueKey":"patterns.items.[INDEX].sources.items.[INDEX].statementIndex","typeLabel":"integer"},"joinIndex":{"type":"integer","description":"Index of the join within its statement, counting from 0. It is the\n `join_index` of the same join in `BatchSqlDetails` for `entity_id`.","uniqueKey":"patterns.items.[INDEX].sources.items.[INDEX].joinIndex","typeLabel":"integer"}},"title":"JoinPatternSource","additionalProperties":false,"description":"JoinPatternSource is one join in the SQL of one entity that joins on the\n pattern's key.","uniqueKey":"patterns.items.[INDEX].sources.items.[INDEX]","typeLabel":"JoinPatternSource · object"},"description":"Each join, in the SQL of a table, view or model in the workspace, that\n joins on this key. Ordered by `entity_id`. Entities that are the same\n object are listed once: a join both a dbt model and the view it builds\n make is listed from the model, as `BatchSqlDetails` reads it.","uniqueKey":"patterns.items.[INDEX].sources","typeLabel":"JoinPatternSource · object[]"},"queryLog":{"type":"object","properties":{"queries":{"oneOf":[{"type":"integer","format":"int64","description":"The queries that made the join.","uniqueKey":"patterns.items.[INDEX].queryLog.queries.oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"string","format":"int64","description":"The queries that made the join.","uniqueKey":"patterns.items.[INDEX].queryLog.queries.oneOf.1","typeLabel":"string\u003cint64>"}],"uniqueKey":"patterns.items.[INDEX].queryLog.queries","typeLabel":"integer\u003cint64> | string\u003cint64>"},"distinctLogins":{"type":"integer","description":"The distinct warehouse users that ran them. A query that names no user\n adds none.","uniqueKey":"patterns.items.[INDEX].queryLog.distinctLogins","typeLabel":"integer"},"firstHour":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"The first and the last hour the join was seen in, each the start of its\n UTC hour.","uniqueKey":"patterns.items.[INDEX].queryLog.firstHour","typeLabel":"string\u003cdate-time>"},"lastHour":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"A Timestamp represents a point in time independent of any time zone or local\n calendar, encoded as a count of seconds and fractions of seconds at\n nanosecond resolution. The count is relative to an epoch at UTC midnight on\n January 1, 1970, in the proleptic Gregorian calendar which extends the\n Gregorian calendar backwards to year one.\n\n All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n second table is needed for interpretation, using a [24-hour linear\n smear](https://developers.google.com/time/smear).\n\n The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n restricting to that range, we ensure that we can convert to and from [RFC\n 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n\n # Examples\n\n Example 1: Compute Timestamp from POSIX `time()`.\n\n Timestamp timestamp;\n timestamp.set_seconds(time(NULL));\n timestamp.set_nanos(0);\n\n Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n\n struct timeval tv;\n gettimeofday(\u0026tv, NULL);\n\n Timestamp timestamp;\n timestamp.set_seconds(tv.tv_sec);\n timestamp.set_nanos(tv.tv_usec * 1000);\n\n Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n\n FILETIME ft;\n GetSystemTimeAsFileTime(\u0026ft);\n UINT64 ticks = (((UINT64)ft.dwHighDateTime) \u003c\u003c 32) | ft.dwLowDateTime;\n\n // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n Timestamp timestamp;\n timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n\n Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n\n long millis = System.currentTimeMillis();\n\n Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n .setNanos((int) ((millis % 1000) * 1000000)).build();\n\n Example 5: Compute Timestamp from Java `Instant.now()`.\n\n Instant now = Instant.now();\n\n Timestamp timestamp =\n Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n .setNanos(now.getNano()).build();\n\n Example 6: Compute Timestamp from current time in Python.\n\n timestamp = Timestamp()\n timestamp.GetCurrentTime()\n\n # JSON Mapping\n\n In JSON format, the Timestamp type is encoded as a string in the\n [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n where {year} is always expressed using four digits while {month}, {day},\n {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n is required. A proto3 JSON serializer should always use UTC (as indicated by\n \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n able to accept both UTC and other timezones (as indicated by an offset).\n\n For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n 01:30 UTC on January 15, 2017.\n\n In JavaScript, one can convert a Date object to this format using the\n standard\n [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n method. In Python, a standard `datetime.datetime` object can be converted\n to this format using\n [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n the Joda Time's [`ISODateTimeFormat.dateTime()`](\n http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()\n ) to obtain a formatter capable of generating timestamps in this format.","uniqueKey":"patterns.items.[INDEX].queryLog.lastHour","typeLabel":"string\u003cdate-time>"},"issuers":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","maxLength":256,"description":"The tool that ran the queries, from the query's tag, as the lowercase\n platform name, like `looker` or `dbt_cloud`. Empty when no tag names a\n tool, and `kind` then says who ran them.","uniqueKey":"patterns.items.[INDEX].queryLog.issuers.items.[INDEX].platform","typeLabel":"string"},"entityId":{"type":"string","maxLength":4096,"description":"The entity that ran the queries, when the tag names one. Empty\n otherwise. It is the same opaque identifier the request's `entity_id`\n takes.","uniqueKey":"patterns.items.[INDEX].queryLog.issuers.items.[INDEX].entityId","typeLabel":"string"},"queries":{"oneOf":[{"type":"integer","format":"int64","description":"The queries it ran that made the join.","uniqueKey":"patterns.items.[INDEX].queryLog.issuers.items.[INDEX].queries.oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"string","format":"int64","description":"The queries it ran that made the join.","uniqueKey":"patterns.items.[INDEX].queryLog.issuers.items.[INDEX].queries.oneOf.1","typeLabel":"string\u003cint64>"}],"uniqueKey":"patterns.items.[INDEX].queryLog.issuers.items.[INDEX].queries","typeLabel":"integer\u003cint64> | string\u003cint64>"},"distinctLogins":{"type":"integer","description":"The distinct warehouse users that ran them.","uniqueKey":"patterns.items.[INDEX].queryLog.issuers.items.[INDEX].distinctLogins","typeLabel":"integer"},"kind":{"type":"string","title":"JoinIssuerKind","enum":["JOIN_ISSUER_KIND_UNSPECIFIED","JOIN_ISSUER_KIND_TOOL","JOIN_ISSUER_KIND_PEOPLE","JOIN_ISSUER_KIND_SERVICE_ACCOUNT","JOIN_ISSUER_KIND_COALESCE","JOIN_ISSUER_KIND_UNKNOWN"],"description":"Who ran the queries. Unspecified only from a server that does not\n classify them yet.","uniqueKey":"patterns.items.[INDEX].queryLog.issuers.items.[INDEX].kind","typeLabel":"enum\u003cstring>"}},"title":"JoinIssuer","additionalProperties":false,"description":"JoinIssuer is one tool, one entity of a tool, or one kind of warehouse\n user with no tool, that ran queries making a join. An issuer entity, like a\n dbt model or a Looker dashboard, has the role that the entity of a SQL\n definition has in `sources`.","uniqueKey":"patterns.items.[INDEX].queryLog.issuers.items.[INDEX]","typeLabel":"JoinIssuer · object"},"description":"Who ran the queries, most queries first.","uniqueKey":"patterns.items.[INDEX].queryLog.issuers","typeLabel":"JoinIssuer · object[]"},"sampleQueryId":{"type":"string","maxLength":4096,"description":"The warehouse's id of a query of the last hour that made the join.","uniqueKey":"patterns.items.[INDEX].queryLog.sampleQueryId","typeLabel":"string"}},"title":"JoinQueryLogEvidence","additionalProperties":false,"description":"How queries in the query history made the join in the requested window,\n over every join type in `join_types`. A warehouse user is counted once.\n Set when `evidence_kinds` holds QUERY_LOG.","uniqueKey":"patterns.items.[INDEX].queryLog","typeLabel":"JoinQueryLogEvidence · object"},"joinTypes":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","title":"JoinKind","enum":["JOIN_KIND_UNSPECIFIED","JOIN_KIND_INNER","JOIN_KIND_LEFT_OUTER","JOIN_KIND_RIGHT_OUTER","JOIN_KIND_FULL_OUTER","JOIN_KIND_CROSS","JOIN_KIND_LEFT_SEMI","JOIN_KIND_RIGHT_SEMI","JOIN_KIND_LEFT_ANTI","JOIN_KIND_RIGHT_ANTI","JOIN_KIND_ASOF","JOIN_KIND_IMPLICIT","JOIN_KIND_UPDATE_FROM","JOIN_KIND_DELETE_USING","JOIN_KIND_MERGE"],"description":"The kind of join, seen from the requested entity's side, as\n `JoinKeyPart.kind` is.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"joinType":{"type":"string","title":"JoinType","enum":["JOIN_TYPE_UNSPECIFIED","JOIN_TYPE_LEFT_OUTER","JOIN_TYPE_INNER","JOIN_TYPE_FULL_OUTER","JOIN_TYPE_CROSS","JOIN_TYPE_OTHER"],"description":"The join type, seen from the requested entity's side, as a semantic\n layer names it.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].joinType","typeLabel":"enum\u003cstring>"},"nativeJoinType":{"type":"string","maxLength":256,"description":"The kind's own name when `join_type` is OTHER, like `RIGHT_OUTER`.\n Empty otherwise.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].nativeJoinType","typeLabel":"string"},"keeps":{"type":"string","title":"JoinKeeps","enum":["JOIN_KEEPS_UNSPECIFIED","JOIN_KEEPS_MATCHED","JOIN_KEEPS_REQUESTED","JOIN_KEEPS_OTHER","JOIN_KEEPS_BOTH"],"description":"Which side keeps the rows that find no match on the other side.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].keeps","typeLabel":"enum\u003cstring>"},"filters":{"type":"array","items":{"type":"string","maxLength":100000,"uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].filters.items.[INDEX]","typeLabel":"string"},"description":"The comparisons between a column and a literal that the ON clauses of\n this join type add, as SQL. Each is listed once, in the order first\n seen.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].filters","typeLabel":"string[]"},"sources":{"type":"array","items":{"type":"object","properties":{"entityId":{"type":"string","maxLength":4096,"description":"The entity whose SQL makes the join. It is the same opaque identifier the\n request's `entity_id` takes.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].sources.items.[INDEX].entityId","typeLabel":"string"},"statementIndex":{"type":"integer","description":"Index of the statement the join is in, among the SQL statements of\n `entity_id`, counting from 0.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].sources.items.[INDEX].statementIndex","typeLabel":"integer"},"joinIndex":{"type":"integer","description":"Index of the join within its statement, counting from 0. It is the\n `join_index` of the same join in `BatchSqlDetails` for `entity_id`.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].sources.items.[INDEX].joinIndex","typeLabel":"integer"}},"title":"JoinPatternSource","additionalProperties":false,"description":"JoinPatternSource is one join in the SQL of one entity that joins on the\n pattern's key.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].sources.items.[INDEX]","typeLabel":"JoinPatternSource · object"},"description":"The joins of the pattern's `sources` that use this join type, in the\n same order.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].sources","typeLabel":"JoinPatternSource · object[]"},"queryLog":{"type":"object","properties":{"queries":{"oneOf":[{"type":"integer","format":"int64","description":"The queries that made the join.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].queryLog.queries.oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"string","format":"int64","description":"The queries that made the join.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].queryLog.queries.oneOf.1","typeLabel":"string\u003cint64>"}],"uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].queryLog.queries","typeLabel":"integer\u003cint64> | string\u003cint64>"},"distinctLogins":{"type":"integer","description":"The distinct warehouse users that ran them. A query that names no user\n adds none.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].queryLog.distinctLogins","typeLabel":"integer"},"firstHour":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"The first and the last hour the join was seen in, each the start of its\n UTC hour.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].queryLog.firstHour","typeLabel":"string\u003cdate-time>"},"lastHour":{"type":"string","examples":["2023-01-15T01:30:15.01Z","2024-12-25T12:00:00Z"],"format":"date-time","description":"A Timestamp represents a point in time independent of any time zone or local\n calendar, encoded as a count of seconds and fractions of seconds at\n nanosecond resolution. The count is relative to an epoch at UTC midnight on\n January 1, 1970, in the proleptic Gregorian calendar which extends the\n Gregorian calendar backwards to year one.\n\n All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n second table is needed for interpretation, using a [24-hour linear\n smear](https://developers.google.com/time/smear).\n\n The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n restricting to that range, we ensure that we can convert to and from [RFC\n 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n\n # Examples\n\n Example 1: Compute Timestamp from POSIX `time()`.\n\n Timestamp timestamp;\n timestamp.set_seconds(time(NULL));\n timestamp.set_nanos(0);\n\n Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n\n struct timeval tv;\n gettimeofday(\u0026tv, NULL);\n\n Timestamp timestamp;\n timestamp.set_seconds(tv.tv_sec);\n timestamp.set_nanos(tv.tv_usec * 1000);\n\n Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n\n FILETIME ft;\n GetSystemTimeAsFileTime(\u0026ft);\n UINT64 ticks = (((UINT64)ft.dwHighDateTime) \u003c\u003c 32) | ft.dwLowDateTime;\n\n // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n Timestamp timestamp;\n timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n\n Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n\n long millis = System.currentTimeMillis();\n\n Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n .setNanos((int) ((millis % 1000) * 1000000)).build();\n\n Example 5: Compute Timestamp from Java `Instant.now()`.\n\n Instant now = Instant.now();\n\n Timestamp timestamp =\n Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n .setNanos(now.getNano()).build();\n\n Example 6: Compute Timestamp from current time in Python.\n\n timestamp = Timestamp()\n timestamp.GetCurrentTime()\n\n # JSON Mapping\n\n In JSON format, the Timestamp type is encoded as a string in the\n [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n where {year} is always expressed using four digits while {month}, {day},\n {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n is required. A proto3 JSON serializer should always use UTC (as indicated by\n \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n able to accept both UTC and other timezones (as indicated by an offset).\n\n For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n 01:30 UTC on January 15, 2017.\n\n In JavaScript, one can convert a Date object to this format using the\n standard\n [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n method. In Python, a standard `datetime.datetime` object can be converted\n to this format using\n [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n the Joda Time's [`ISODateTimeFormat.dateTime()`](\n http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()\n ) to obtain a formatter capable of generating timestamps in this format.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].queryLog.lastHour","typeLabel":"string\u003cdate-time>"},"issuers":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","maxLength":256,"description":"The tool that ran the queries, from the query's tag, as the lowercase\n platform name, like `looker` or `dbt_cloud`. Empty when no tag names a\n tool, and `kind` then says who ran them.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].queryLog.issuers.items.[INDEX].platform","typeLabel":"string"},"entityId":{"type":"string","maxLength":4096,"description":"The entity that ran the queries, when the tag names one. Empty\n otherwise. It is the same opaque identifier the request's `entity_id`\n takes.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].queryLog.issuers.items.[INDEX].entityId","typeLabel":"string"},"queries":{"oneOf":[{"type":"integer","format":"int64","description":"The queries it ran that made the join.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].queryLog.issuers.items.[INDEX].queries.oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"string","format":"int64","description":"The queries it ran that made the join.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].queryLog.issuers.items.[INDEX].queries.oneOf.1","typeLabel":"string\u003cint64>"}],"uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].queryLog.issuers.items.[INDEX].queries","typeLabel":"integer\u003cint64> | string\u003cint64>"},"distinctLogins":{"type":"integer","description":"The distinct warehouse users that ran them.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].queryLog.issuers.items.[INDEX].distinctLogins","typeLabel":"integer"},"kind":{"type":"string","title":"JoinIssuerKind","enum":["JOIN_ISSUER_KIND_UNSPECIFIED","JOIN_ISSUER_KIND_TOOL","JOIN_ISSUER_KIND_PEOPLE","JOIN_ISSUER_KIND_SERVICE_ACCOUNT","JOIN_ISSUER_KIND_COALESCE","JOIN_ISSUER_KIND_UNKNOWN"],"description":"Who ran the queries. Unspecified only from a server that does not\n classify them yet.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].queryLog.issuers.items.[INDEX].kind","typeLabel":"enum\u003cstring>"}},"title":"JoinIssuer","additionalProperties":false,"description":"JoinIssuer is one tool, one entity of a tool, or one kind of warehouse\n user with no tool, that ran queries making a join. An issuer entity, like a\n dbt model or a Looker dashboard, has the role that the entity of a SQL\n definition has in `sources`.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].queryLog.issuers.items.[INDEX]","typeLabel":"JoinIssuer · object"},"description":"Who ran the queries, most queries first.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].queryLog.issuers","typeLabel":"JoinIssuer · object[]"},"sampleQueryId":{"type":"string","maxLength":4096,"description":"The warehouse's id of a query of the last hour that made the join.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].queryLog.sampleQueryId","typeLabel":"string"}},"title":"JoinQueryLogEvidence","additionalProperties":false,"description":"How queries in the query history made the join with this join type.\n Set when queries made it.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX].queryLog","typeLabel":"JoinQueryLogEvidence · object"}},"title":"JoinPatternType","additionalProperties":false,"description":"JoinPatternType is one join type that a pattern's key is joined with, and\n the evidence of that join type only.","uniqueKey":"patterns.items.[INDEX].joinTypes.items.[INDEX]","typeLabel":"JoinPatternType · object"},"description":"Each join type the key is joined with, the most used first: by the SQL\n definitions that use it, then by queries. The `kind`, `join_type` and\n `native_join_type` of the key's comparisons are those of the first.","uniqueKey":"patterns.items.[INDEX].joinTypes","typeLabel":"JoinPatternType · object[]"}},"title":"JoinPattern","additionalProperties":false,"description":"JoinPattern is one way to join the requested entity: a join key, and the\n SQL that joins on it. The same key written in several SQL definitions, or\n joined with several join types, is one pattern listing each of them.","uniqueKey":"patterns.items.[INDEX]","typeLabel":"JoinPattern · object"},"description":"The join patterns. Those that a SQL definition makes come first, then\n those of the query history only, by distinct logins, the last hour seen\n and queries. Empty when no SQL in the workspace joins the entity, or none\n was parsed yet.","uniqueKey":"patterns","typeLabel":"JoinPattern · object[]"},"queryLogCoveredHours":{"type":"integer","description":"How many hours of the `query_log` window the query history covered in\n full. 0 with no QUERY_LOG pattern means that no query history was read\n for the window, not that no query made a join.","uniqueKey":"queryLogCoveredHours","typeLabel":"integer"},"queryLogLeftOut":{"type":"object","properties":{"coalesceQualityQueries":{"oneOf":[{"type":"integer","format":"int64","description":"Queries that Coalesce Quality's tag marks, by any warehouse user.","uniqueKey":"queryLogLeftOut.coalesceQualityQueries.oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"string","format":"int64","description":"Queries that Coalesce Quality's tag marks, by any warehouse user.","uniqueKey":"queryLogLeftOut.coalesceQualityQueries.oneOf.1","typeLabel":"string\u003cint64>"}],"uniqueKey":"queryLogLeftOut.coalesceQualityQueries","typeLabel":"integer\u003cint64> | string\u003cint64>"},"coalesceLogins":{"oneOf":[{"type":"integer","format":"int64","description":"The other queries of the warehouse users Coalesce connects as, for\n Coalesce Quality or Coalesce Catalog.","uniqueKey":"queryLogLeftOut.coalesceLogins.oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"string","format":"int64","description":"The other queries of the warehouse users Coalesce connects as, for\n Coalesce Quality or Coalesce Catalog.","uniqueKey":"queryLogLeftOut.coalesceLogins.oneOf.1","typeLabel":"string\u003cint64>"}],"uniqueKey":"queryLogLeftOut.coalesceLogins","typeLabel":"integer\u003cint64> | string\u003cint64>"},"serviceAccounts":{"oneOf":[{"type":"integer","format":"int64","description":"Queries of the warehouse users that `exclude_service_accounts` leaves\n out.","uniqueKey":"queryLogLeftOut.serviceAccounts.oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"string","format":"int64","description":"Queries of the warehouse users that `exclude_service_accounts` leaves\n out.","uniqueKey":"queryLogLeftOut.serviceAccounts.oneOf.1","typeLabel":"string\u003cint64>"}],"uniqueKey":"queryLogLeftOut.serviceAccounts","typeLabel":"integer\u003cint64> | string\u003cint64>"}},"title":"JoinQueryLogLeftOut","additionalProperties":false,"description":"The queries left out of the query history evidence. Set when the\n request sets `query_log`.","uniqueKey":"queryLogLeftOut","typeLabel":"JoinQueryLogLeftOut · object"},"entityIds":{"type":"array","items":{"type":"string","maxLength":4096,"uniqueKey":"entityIds.items.[INDEX]","typeLabel":"string"},"description":"The requested entity first, then every entity that is the same object,\n like the table a dbt model builds. The patterns already include the\n joins of each of them, so asking about another one of these returns the\n same patterns.","uniqueKey":"entityIds","typeLabel":"string[]"}},"title":"ListJoinPatternsResponse","additionalProperties":false,"description":"ListJoinPatternsResponse lists the join patterns of the requested entity.","uniqueKey":"","typeLabel":"ListJoinPatternsResponse · object"},"examples":{"Example":{"title":"Example","value":{"patterns":[{"key":[{"column":{"entityId":"\u003cstring>","column":"\u003cstring>","derivation":"JOIN_SIDE_DERIVATION_UNSPECIFIED","expression":"\u003cstring>"},"other":{"entityId":"\u003cstring>","column":"\u003cstring>","derivation":"JOIN_SIDE_DERIVATION_UNSPECIFIED","expression":"\u003cstring>"},"kind":"JOIN_KIND_UNSPECIFIED","operator":"JOIN_OPERATOR_UNSPECIFIED","leads":true,"joinType":"JOIN_TYPE_UNSPECIFIED","nativeJoinType":"\u003cstring>"}],"filters":["\u003cstring>"],"evidenceKinds":["JOIN_EVIDENCE_KIND_UNSPECIFIED"],"sources":[{"entityId":"\u003cstring>","statementIndex":123,"joinIndex":123}],"queryLog":{"queries":123,"distinctLogins":123,"firstHour":"2023-01-15T01:30:15.01Z","lastHour":"2023-01-15T01:30:15.01Z","issuers":[{"platform":"\u003cstring>","entityId":"\u003cstring>","queries":123,"distinctLogins":123,"kind":"JOIN_ISSUER_KIND_UNSPECIFIED"}],"sampleQueryId":"\u003cstring>"},"joinTypes":[{"kind":"JOIN_KIND_UNSPECIFIED","joinType":"JOIN_TYPE_UNSPECIFIED","nativeJoinType":"\u003cstring>","keeps":"JOIN_KEEPS_UNSPECIFIED","filters":["\u003cstring>"],"sources":[{"entityId":"\u003cstring>","statementIndex":123,"joinIndex":123}],"queryLog":{"queries":123,"distinctLogins":123,"firstHour":"2023-01-15T01:30:15.01Z","lastHour":"2023-01-15T01:30:15.01Z","issuers":[{"platform":"\u003cstring>","entityId":"\u003cstring>","queries":123,"distinctLogins":123,"kind":"JOIN_ISSUER_KIND_UNSPECIFIED"}],"sampleQueryId":"\u003cstring>"}}]}],"queryLogCoveredHours":123,"queryLogLeftOut":{"coalesceQualityQueries":123,"coalesceLogins":123,"serviceAccounts":123},"entityIds":["\u003cstring>"]}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"e6e3a4e7-a0de-460f-a4f0-9753c38136eb":{"bearerAuth":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"48744bfd-8999-4797-84b4-2998e5a947c5":{"url":"https://developer.synq.io"},"75e3b0c9-c49c-4335-af67-cbc071a8c92d":{"url":"https://api.us.synq.io"},"619e14d1-f915-4478-a7e2-ad1b0ade05a7":{"url":"https://api.au.synq.io"}},"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":"ListJoinPatterns - Coalesce Quality Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-31T22:22:27.992Z","originalFileLocation":"api-reference/synqentitiessql_insightsv1sqlinsightsservice/listjoinpatterns.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=\"ListJoinPatterns lists how other SQL joins a table, or one of its columns: every join key that the SQL of a table, view or model in the workspace uses to join the requested entity, read from the requested entity\u0026#x27;s side, and which SQL makes it. It is the reverse of BatchSqlDetails joins, which say how building one entity joins others: here the requested entity is the one being joined. The requested entity is taken together with every entity that is the same object, like a dbt model, the table it builds and that table in a catalog, so asking about any of them returns the joins on all of them.\">\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=\"ListJoinPatterns - Coalesce Quality Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"ListJoinPatterns lists how other SQL joins a table, or one of its columns: every join key that the SQL of a table, view or model in the workspace uses to join the requested entity, read from the requested entity\u0026#x27;s side, and which SQL makes it. It is the reverse of BatchSqlDetails joins, which say how building one entity joins others: here the requested entity is the one being joined. The requested entity is taken together with every entity that is the same object, like a dbt model, the table it builds and that table in a catalog, so asking about any of them returns the joins on all of them.\">\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/synqentitiessql_insightsv1sqlinsightsservice/listjoinpatterns\">\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.sql_insights.v1.SqlInsightsService\u0026amp;title=ListJoinPatterns\u0026amp;description=ListJoinPatterns+lists+how+other+SQL+joins+a+table%2C+or+one+of+its+columns%3A%0A+every+join+key+that+the+SQL+of+a+table%2C+view+or+model+in+the+workspace%0A+uses+to+join\u0026amp;theme=c4b0b33f9bac9b90d2a12108\u0026amp;signature=8febd35a04b40630ef0f07aa1a2092a56c1e7c8dd3fbd4c9b86769e32dc9099e\">\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=\"ListJoinPatterns - Coalesce Quality Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"ListJoinPatterns lists how other SQL joins a table, or one of its columns: every join key that the SQL of a table, view or model in the workspace uses to join the requested entity, read from the requested entity\u0026#x27;s side, and which SQL makes it. It is the reverse of BatchSqlDetails joins, which say how building one entity joins others: here the requested entity is the one being joined. The requested entity is taken together with every entity that is the same object, like a dbt model, the table it builds and that table in a catalog, so asking about any of them returns the joins on all of them.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://synq-15.mintlify.app/_mintlify/api/og/v2?division=synq.entities.sql_insights.v1.SqlInsightsService\u0026amp;title=ListJoinPatterns\u0026amp;description=ListJoinPatterns+lists+how+other+SQL+joins+a+table%2C+or+one+of+its+columns%3A%0A+every+join+key+that+the+SQL+of+a+table%2C+view+or+model+in+the+workspace%0A+uses+to+join\u0026amp;theme=c4b0b33f9bac9b90d2a12108\u0026amp;signature=8febd35a04b40630ef0f07aa1a2092a56c1e7c8dd3fbd4c9b86769e32dc9099e\">\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/synqentitiessql_insightsv1sqlinsightsservice/listjoinpatterns\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/synqentitiessql_insightsv1sqlinsightsservice/listjoinpatterns.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/synqentitiessql_insightsv1sqlinsightsservice/listjoinpatterns#webpage\",\"url\":\"https://docs.synq.io/api-reference/synqentitiessql_insightsv1sqlinsightsservice/listjoinpatterns\",\"name\":\"ListJoinPatterns\",\"description\":\"ListJoinPatterns lists how other SQL joins a table, or one of its columns: every join key that the SQL of a table, view or model in the workspace uses to join the requested entity, read from the requested entity's side, and which SQL makes it. It is the reverse of BatchSqlDetails joins, which say how building one entity joins others: here the requested entity is the one being joined. The requested entity is taken together with every entity that is the same object, like a dbt model, the table it builds and that table in a catalog, so asking about any of them returns the joins on all of them.\",\"dateModified\":\"2026-10-31T22:22:27.992Z\",\"isPartOf\":{\"@id\":\"https://docs.synq.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.synq.io/api-reference/synqentitiessql_insightsv1sqlinsightsservice/listjoinpatterns#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.synq.io/api-reference/synqentitiessql_insightsv1sqlinsightsservice/listjoinpatterns#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.sql_insights.v1.SqlInsightsService\",\"item\":\"https://docs.synq.io/api-reference/synqentitiessql_insightsv1sqlinsightsservice/listsqlconstructs\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"ListJoinPatterns\",\"item\":\"https://docs.synq.io/api-reference/synqentitiessql_insightsv1sqlinsightsservice/listjoinpatterns\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.synq.io/api-reference/synqentitiessql_insightsv1sqlinsightsservice/listjoinpatterns#apireference\",\"headline\":\"ListJoinPatterns\",\"name\":\"ListJoinPatterns\",\"description\":\"ListJoinPatterns lists how other SQL joins a table, or one of its columns: every join key that the SQL of a table, view or model in the workspace uses to join the requested entity, read from the requested entity's side, and which SQL makes it. It is the reverse of BatchSqlDetails joins, which say how building one entity joins others: here the requested entity is the one being joined. The requested entity is taken together with every entity that is the same object, like a dbt model, the table it builds and that table in a catalog, so asking about any of them returns the joins on all of them.\",\"url\":\"https://docs.synq.io/api-reference/synqentitiessql_insightsv1sqlinsightsservice/listjoinpatterns\",\"mainEntityOfPage\":{\"@id\":\"https://docs.synq.io/api-reference/synqentitiessql_insightsv1sqlinsightsservice/listjoinpatterns#webpage\"},\"dateModified\":\"2026-10-31T22:22:27.992Z\",\"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":"Working with time dimensions and scheduling for monitors","href":"/monitors/time-dimensions"}]},{"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","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","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","description":"BatchSqlDetails returns the SQL details for each of the requested entities,\n keyed by their synq path: the set of detected SQL constructs and, when the\n request asks for them, the joins that building the entity makes. Every\n requested path appears in the response, including a path with no SQL\n details and a path matching no entity; both are returned with an empty set\n of constructs and no joins.","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","description":"Evaluates an LLM request with a structured output schema and message history.\n The main prompt should be constant as it will be cached for efficiency.","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":"ListJoinPatterns - Coalesce Quality Documentation","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","Page-m07pfKpT.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js","Markdown-DfhCTwyA.js","clsx-xpJZXxdP.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BTZUMDnx.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DqdKa2R4.js"]}