Use Cases
Embedded Analytics
The GraphQL API can be used to build embedded analytics applications that leverage the semantic layer. This allows you to build custom applications that use the semantic layer to generate queries and retrieve data.Building custom AI analyst applications
The GraphQL API can be used to build custom AI analyst applications that leverage the semantic layer to answer user questions in natural language.Metadata Sharing
The GraphQL API can be used to share metadata with other applications or services. For example, you can use the GraphQL API to share metadata with a data catalog or a data governance tool, or to import metadata from another system into Honeydew.BI Integration
The GraphQL API can be used to publish metadata to BI tools, such as Tableau, Power BI, Thoughtspot, and more.Development and Testing
The GraphQL API can be used to develop and test semantic layer definitions. Developers can use their favorite development tools to edit the semantic layer definitions, push them directly to git, and use the GraphQL APIs to validate the definitions. These validations can also be integrated into CI/CD pipelines to ensure that the semantic layer definitions are valid before deploying them to production.Usage
Security
You can use the GraphQL API with an API Key and Secret. You cannot use the GraphQL API with a Honeydew username and password.API Endpoint
The default API endpoint ishttps://api.honeydew.cloud/api/public/v1/graphql.
If your organization uses a custom hostname for the API connection,
you can locate it in the Honeydew UI, under the API section in Settings.
Headers
The following custom Honeydew headers can be used in the API requests:X-Honeydew-Client: A string that identifies the client making the request. Use it to identify the client in Honeydew logs and query history, for audit, debugging and support purposes.X-Honeydew-Workspace: The name of the workspace to use for the request. This is required for most queries and mutations that operate on a specific workspace.X-Honeydew-Branch: The name of the branch to use for the request. This is required for most queries and mutations that operate on a specific branch.
Rate Limiting
The Public API implements rate limiting to ensure fair usage and system stability. Rate limits are applied per user (or per API key) and are enforced according to industry standards. Default Rate Limit: 60 calls per user/key per minute Response Headers: The API provides rate limit information through standard HTTP response headers:RateLimit-Limit: The maximum number of requests allowed per time windowRateLimit-Remaining: The number of requests remaining in the current time windowRateLimit-Reset: The timestamp when the rate limit will reset (in Unix epoch seconds)
API integration example
Below we have provided API integration examples for Python, JavaScript and cURL. The API can be used with any programming language that supports HTTP requests.- Python
- JavaScript
- cURL
requests library to make HTTP requests to the Honeydew API.
To install it, run:GraphQL API Reference
Workspaces and Branches
List Workspaces
List Workspaces
Create Workspace Branch
Create Workspace Branch
Rename Workspace Branch
Rename Workspace Branch
prod branch cannot be renamed, the branch being renamed must exist, and the new name
must not already be taken.Workspace/Branch Headers: Not requiredPermissions: Editor or higherParameters:workspace_name: The name of the workspace the branch belongs toold_branch_name: The current name of the branchnew_branch_name: The new name for the branch
Delete Workspace Branch
Delete Workspace Branch
prod branch cannot be deleted.Workspace/Branch Headers: Not requiredPermissions: Editor or higherParameters:workspace_name: The name of the workspace the branch belongs tobranch_name: The name of the branch to delete
Reload Workspace
Reload Workspace
Reload All Workspaces
Reload All Workspaces
Reload Workspace for All Users
Reload Workspace for All Users
Reload All Workspaces for All Users
Reload All Workspaces for All Users
Querying Schema
List Entities
List Entities
Get Entity By Name
Get Entity By Name
entity_name: The name of the entity to retrieve
Get Entity Field By Name
Get Entity Field By Name
entity_name: The name of the entity to retrieve the field fromname: The name of the field to retrieve
List Domains
List Domains
Get Domain By Name
Get Domain By Name
name: The name of the domain to retrieve
List Global Parameters
List Global Parameters
Get Global Parameter By Name
Get Global Parameter By Name
name: The name of the global parameter to retrieve
List Dynamic Datasets
List Dynamic Datasets
Get Dynamic Dataset By Name
Get Dynamic Dataset By Name
name: The name of the dynamic dataset to retrieve
Search the Semantic Model
Search the Semantic Model
what: The term to search for. Matching is case-insensitive.search_mode:ORsplits the term on whitespace and returns objects matching any word.ANDsplits it the same way and returns only objects matching every word.EXACTkeeps the term whole and returns objects whose name, display name, or label equals it.
entity.field to search only the fields of matching entities. In OR and AND modes,
customers. returns every field of the entities matching customers.Return Value:
Returns every matching object, with no relevance ordering and no result limit. A match can be of
any model object type, so select through an inline fragment on each type you accept, and select
__typename to see which one matched. ... on Field covers attributes, metrics, filters, and
datasets; a dynamic dataset comes back as Perspective.Validate a Workspace
Use these queries to validate a workspace in a CI/CD pipeline: reload the branch from Git, confirm the workspace loads, then check every object for errors. This is the same sequence run by the GitHub Action; see CI/CD Overview for using it with other CI/CD systems. All calls below require theX-Honeydew-Workspace and X-Honeydew-Branch headers, and the
Viewer role or higher. A pipeline runs them in the order shown and fails the step if any
error is found.
1. Reload the branch from Git so validation reflects the latest commit of the branch:
has_errors: true argument, so they return only the objects that fail
validation. Treat the workspace as failing if any entity has a non-null error, any entity
returns fields, or any domain, perspective, or parameter is returned:
validation_errors; both use has_errors: true, so any returned object
is a failure:
Modifying Schema
Except forvalidate_object, which only reads, these mutations run on a
branch only — calling them with prod as the branch header
fails. Commit the branch and merge it to publish the change.
Create Object
Create Object
yaml_text: The YAML definition of the object to create. See references for YAML schema here.force_with_error:- If false, the mutation will fail if the deletion causes the workspace to become invalid (For example, if the object is used by another object in the workspace).
- If true, the mutation will delete the object even if it causes the workspace to become invalid. This is useful if you are performing a set of changes that will eventually make the workspace valid again.
name, error, etc.Update Object
Update Object
yaml_text: The YAML definition of the object to update. See references for YAML schema here.object_key: The key of the object to update. This is theobject_keyfield that can be retrieved in any query on objects.force_with_error:- If false, the mutation will fail if the deletion causes the workspace to become invalid (For example, if the object is used by another object in the workspace).
- If true, the mutation will delete the object even if it causes the workspace to become invalid. This is useful if you are performing a set of changes that will eventually make the workspace valid again.
name, error, etc.Delete Object
Delete Object
object_key: The key of the object to delete.force_with_error:- If false, the mutation will fail if the deletion causes the workspace to become invalid (For example, if the object is used by another object in the workspace).
- If true, the mutation will delete the object even if it causes the workspace to become invalid. This is useful if you are performing a set of changes that will eventually make the workspace valid again.
Create Entity
Create Entity
create_object instead to add a single object to an existing entity.Workspace/Branch Headers: RequiredPermissions: Editor or higherParameters:entity_yaml_text: The YAML definition of the entity. See the YAML schema.dataset_yaml_text: The YAML definition of the dataset. Itsentityfield must name the entity defined inentity_yaml_text, otherwise the mutation fails.
error on the result to see whether it is valid — there is no force_with_error to opt out of
that, unlike create_object.Validate Object
Validate Object
create_object and update_object. It works on any branch.Workspace/Branch Headers: RequiredPermissions: Viewer or higherParameters:yaml_text: The YAML definition to validate. See the YAML schema.object_key: The key of the object being edited. Pass it when validating a change to an existing object, and omit it when validating a new one.
error populated when the definition is invalid.
The object type depends on the type in the YAML, so select through an inline fragment on each
type you accept, and select __typename to see which one came back.
For a domain, the result is the resolved form with extends applied, so it shows what the
domain would actually expose — create_object and update_object instead return the
unresolved definition as submitted.Agents and Context Items
Manage agents and context items — instructions and memories. Each object is a Markdown document with YAML frontmatter, passed as thefrontmatter_text
argument in the format described in the
agent and
context item schemas.
Honeydew derives the file path from the definition, so no path is passed.
The mutations run on a branch only — calling them with
prod as the branch header fails. Commit the branch and merge it to publish the change.
The queries read the branch named in the headers, prod included.
Create Agent
Create Agent
frontmatter_text: The agent definition, as Markdown with YAML frontmatterforce_with_error: If false or omitted, the mutation fails when the definition has validation errors. If true, the agent is written anyway.
object_key: The key of the created agent, to pass toupdate_agentordelete_agentpath: The path of the file in Gitvalidation_errors: Any validation errors on the definition, each with anerrormessage and thepathwithin the definition that caused itagent: The parsed agent, including itsname
Update Agent
Update Agent
object_key: The key of the agent to updatefrontmatter_text: The new agent definition, as Markdown with YAML frontmatterforce_with_error: If false or omitted, the mutation fails when the definition has validation errors. If true, the agent is written anyway.
object_key: The key of the agentpath: The path of the file in Gitvalidation_errors: Any validation errors on the definitionagent: The parsed agent, including itsname
Delete Agent
Delete Agent
object_key: The key of the agent to delete
Create Context Item
Create Context Item
type and subtype in the definition.Workspace/Branch Headers: RequiredPermissions: Editor or higherParameters:frontmatter_text: The context item definition, as Markdown with YAML frontmatterforce_with_error: If false or omitted, the mutation fails when the definition has validation errors. If true, the context item is written anyway.
InstructionFrontmatter or MemoryFrontmatter, so select the fields through an inline
fragment on each, and select __typename to see which of the two was created. Both provide:object_key: The key of the created context item, to pass toupdate_context_objectordelete_context_objectpath: The path of the file in Gitvalidation_errors: Any validation errors on the definition
Update Context Item
Update Context Item
object_key: The key of the context item to updatefrontmatter_text: The new context item definition, as Markdown with YAML frontmatterforce_with_error: If false or omitted, the mutation fails when the definition has validation errors. If true, the context item is written anyway.
InstructionFrontmatter or MemoryFrontmatter, as for create_context_object.Delete Context Item
Delete Context Item
object_key: The key of the context item to delete
List Agents
List Agents
has_errors: If true, returns only the agents whose definition has validation errors. If false, only those without them. Omit it to return every agent.
object_key: The key of the agent, to pass to theagentquery and to theupdate_agentanddelete_agentmutationspath: The path of the file in Gitui_url: The URL of the agent in the Honeydew UIvalidation_errors: Any validation errors on the definitionagent: The parsed agent, including itsname,display_name,descriptionanddomain
Get Agent
Get Agent
object_key: The key of the agent to read
object_key: The key of the agentpath: The path of the file in Gitfrontmatter_text: The agent definition, to edit and pass back toupdate_agentvalidation_errors: Any validation errors on the definitionagent: The parsed agent, including itsname,display_name,description,domainandcontext— the names and the glob patterns of the context items it loads
Find Agents for a Question
Find Agents for a Question
question: The question to route
agents. Agents whose definition has validation
errors are skipped, and the list is empty when no agent fits the question.List Context Items
List Context Items
has_errors: If true, returns only the context items whose definition has validation errors. If false, only those without them. Omit it to return every context item.names: Return only the context items with these names. Names with no context item are ignored.
InstructionFrontmatter or MemoryFrontmatter, as for create_context_object, so
select the fields through an inline fragment on each:object_key: The key of the context itempath: The path of the file in Gitinstruction: The parsed instruction, including itsname,title,subtypeandenabledmemory: The parsed memory, with the same fields and the dates it covers
List Instructions or Memories
List Instructions or Memories
instructions and memories each return one type, so their fields are selected without an
inline fragment.Workspace/Branch Headers: RequiredPermissions: Viewer or higherParameters:has_errors: If true, returns only the items whose definition has validation errors. If false, only those without them. Omit it to return every item. Neither query takes thenamesargument thatcontext_itemsaccepts.
context_items, on InstructionFrontmatter and on MemoryFrontmatter.Get Instruction or Memory
Get Instruction or Memory
instruction fails on the
key of a memory, and memory on the key of an instruction.Workspace/Branch Headers: RequiredPermissions: Viewer or higherParameters:object_key: The key of the context item to read
context_items for that type, frontmatter_text — the definition to edit and pass
back to update_context_object — and referencing_agents, the agents that load the item.For an instruction:Data Warehouse
Browse the data warehouse of a workspace, describe a custom SQL query, and import tables as entities. AI agents reach most of these operations through the MCP server. The queries below run against the warehouse connection of the workspace and branch in the headers.get_databases and get_schemas also accept connector_name, to browse an
organization-level connector instead, together with the dwh_type it is configured for:
snowflake, databricks or bigquery. The other queries always use the workspace connection.
Browsing Metadata
List Databases
List Databases
dwh_type: The type of the warehouse to browse, as aDwhTypevalue. Required withconnector_name.connector_name: Browse this organization-level connector instead of the workspace connection. Requires the Admin role.
List Schemas
List Schemas
database: The database to list the schemas of. Omit it to list the schemas of every database, each returned asdatabase.schema.dwh_type: The type of the warehouse to browse, as aDwhTypevalue. Required withconnector_name.connector_name: Browse this organization-level connector instead of the workspace connection. Requires the Admin role.
List Tables
List Tables
database: The database to list tables in. Omit it to use the database of the connection.schema: Return only the tables of this schema
table_catalog: The database of the tabletable_schema: The schema of the tabletable_name: The name of the tabletable_type:BASE_TABLE,EXTERNAL_TABLEorVIEWrow_count: The number of rows, when the warehouse reports itdata_bytes: The size in bytes, when the warehouse reports itcreated: When the table was createdlast_altered: When the table was last changedcomment: The comment on the tabletags: The warehouse tags on the table, each with itskeyandvalue
Get Table Info
Get Table Info
database: The database of the tableschema: The schema of the tabletable: The name of the table
table_md: The metadata of the table, with the same fieldsget_tablesreturnscolumns_md: One entry per column, each with itscolumn_name,ordinal_position,data_type,is_nullable,comment,tags,is_primary_keyandforeign_keys. Each foreign key names the table and column it points at.
List Semantic Views
List Semantic Views
database: The database to list semantic views in. Omit it to use the database of the connection.schema: Return only the semantic views of this schema
semantic_view_catalog: The database of the semantic viewsemantic_view_schema: The schema of the semantic viewsemantic_view_name: The name of the semantic viewcomment: The comment on the semantic view
Get Custom SQL Info
Get Custom SQL Info
sql: The query to describe. It resolves against the current environment, and may use parameters.
columns_md: One entry per column of the query result, each with itscolumn_name,ordinal_position,data_type,is_nullableandcomment
Importing and Syncing Tables
These mutations change the model of the branch in the headers, and commit the change to Git. Run them on a development branch, then merge the change.Import Tables
Import Tables
prod branch of a workspace.Workspace/Branch Headers: RequiredPermissions: Editor or higherParameters:tables: The tables to import, as fully qualifieddatabase.schema.tablenamescheck_keys_uniqueness: Query the warehouse to confirm that detected entity keys are unique before applying them. Defaults tofalse.
detect_entities_relations_result: The result of the relation detection that follows the import, with itsresponsetext
Sync Table from Source
Sync Table from Source
dataset_object_key: The object key of the dataset to sync. You can find dataset object keys by querying the entity’s fields and looking for theDataSettype’sobject_keyfield.force_with_error: Apply the change even when it leaves the workspace invalid, for example when a removed column is still used elsewhere. Defaults tofalse.
Sync All Tables from Source
Sync All Tables from Source
force_with_error: Apply the changes even when they leave the workspace invalid. Defaults tofalse.
Deployment
Deploy Dynamic Dataset
Deploy Dynamic Dataset
perspective_name: The name of the dynamic dataset to deploy
Deploy Entity
Deploy Entity
entity_name: The name of the entity to deploy
Refresh Dynamic Dataset Data
Refresh Dynamic Dataset Data
- For views: no-op, returns
false. - For tables: redeploys the table with fresh data, returns
true. - For dynamic tables (Snowflake only): triggers an incremental refresh, returns
true.
perspective_name: The name of the dynamic dataset to refresh
true if data was refreshed, false if no refresh was needed.Clear Deployed Cache Status
Clear Deployed Cache Status
null.Queries
Get SQL for adhoc query
Get SQL for adhoc query
-
yaml_text: YAML definition of a dynamic dataset, which represents a query. For more information on the YAML format, see Dynamic Dataset YAML. Here’s an example of a simple dynamic dataset YAML:
domain: The domain the query was built in, as named in the YAML.dwh_role: The role to use for the query, from the workspace, branch and domain connection settings.nullwhen not set.dwh_warehouse: The warehouse to use for the query, from the workspace, branch and domain connection settings.nullwhen not set.sql: A list of the actual data warehouse SQL queries to run, translated from the provided YAML by the Honeydew semantic layer. Note that there can be multiple sql statements to run, for example - there might be aSETstatement to set values for parameters used in the sql query.
Translate SQL interface query to data warehouse SQL
Translate SQL interface query to data warehouse SQL
-
sql: The SQL query to translate. This should be a valid SQL query in Trino dialect. For more information, see SQL Interface documentation. Here’s an example of a simple sql query to translate:
domain: The domain to use for the query (if applicable), as extracted from the SQL query.dwh_role: The role to use for the query, from the workspace, branch and domain connection settings.nullwhen not set.dwh_warehouse: The warehouse to use for the query, from the workspace, branch and domain connection settings.nullwhen not set.sql: A list of the actual data warehouse SQL queries to run, translated from the provided SQL query by the Honeydew semantic layer. Note that there can be multiple sql statements to run, for example - there might be aSETstatement to set values for parameters used in the sql query.
Query History
Query history holds the queries executed against the semantic model, with the generated SQL and the execution details. See Query history for what is recorded and how long records are kept. You see and cancel your own queries only. Admins see and cancel the queries of all users.List Query History
List Query History
limit: Maximum number of queries to return. Defaults to 250.offset: Number of queries to skip for paginationuser_in: Filter by the email of the user who ran the querystatus_in: Filter by status:RUNNING,SUCCESS,FAILEDorCANCELEDfrom_execution_time: Return queries that started at or after this timeto_execution_time: Return queries that started at or before this timeclient_in: Filter by the client identifier set in theX-Honeydew-Clientheaderdomain_in: Filter by domain name. Includenullin the list to also match queries that ran without a domain.
PerspectiveQuery objects. Each object includes:-
name: The ID of the query -
object_key: The key of the query record, to pass tocancel_query -
domain: The domain the query targeted -
owner: Email of the user who ran the query -
dwh_query_id: The query ID assigned by the data warehouse -
sql: The generated data warehouse SQL -
yaml: The semantic definition of the query, as attributes, metrics and filters -
last_update_time: When the query record was last written -
error:descriptionholds the error message when the query failed -
ui_url: The URL of the query in the Honeydew UI -
metadata: Sections ofname/valuepairs. Thehoneydewsection holds the execution details:dwh_status: The status of the query. Absent when the query was compiled but never run on the data warehouse.client_name: The client that submitted the querycompile_start_timestamp: When Honeydew started compiling the querycompile_end_timestamp: When Honeydew finished compiling the querydwh_end_timestamp: When the data warehouse finished running the generated SQLoriginal_sql: The source query, for queries submitted as SQL, MDX or textaggregates_used: The aggregates the query was accelerated with
compile_end_timestampminuscompile_start_timestamp,dwh_end_timestampminuscompile_end_timestamp, anddwh_end_timestampminuscompile_start_timestamp.
Get Query By ID
Get Query By ID
name: The ID of the query, as returned by listing query history
PerspectiveQuery object, with the fields listed under
List Query History.Get Query Results
Get Query Results
name: The ID of the query, as returned by listing query historylimit: Maximum number of rows to return. Defaults to 10.offset: Number of rows to skip for paginationsort_fields: How to sort the rows. Each entry setsorder(ASCorDESC),nulls_first, and exactly one ofalias(the column name) orposition(the column position).
columns: The result columns, each with anameand atypedata: The result rows, each holding itsvaluesin column ordersql: The generated data warehouse SQL of the query
Cancel Running Query
Cancel Running Query
object_key: Theobject_keyof the query record, as returned by listing query history
null.AI
Create Chat for Deep Analysis Questions
Create Chat for Deep Analysis Questions
agent: Required. The name of the agent to run the analysis with. The agent supplies both the domain to query and the context items loaded into the session.show_charts: Whether the analysis produces charts. Defaults totrue.
chat_id: The ID of the created chat sessiondomain: The domain the agent is scoped toui_url: The URL of the chat in the Honeydew UI
Ask Deep Analysis Questions
Ask Deep Analysis Questions
chat_id: The ID of the conversation to use for the questionquestion: The deep analysis question to ask the AI
response: A list of content items produced by the analysis. Each item is one of:MarkdownContent: Textual analysis withtextandcategory(final_conclusion,interpretation,plan, oruser_response)DataContent: Tabular data withresults(columns and rows)GraphContent: A chart.vega_liteis a complete Vega-Lite specification with the data embedded, so it renders as-is.visualization_hintdescribes the intended chart in natural language, andgroup_namegroups related content. Also selectdatato get the rows on their own, to render with a different charting library.
suggested_responses: A list of suggested follow-up questionsui_url: The URL of the chat in the Honeydew UI
Abort Deep Analysis Chat
Abort Deep Analysis Chat
chat_id: The ID of the chat session to abort
nullon successFailureResultwitherror_codeandmessageon error
List Deep Analysis Chats
List Deep Analysis Chats
limit: Maximum number of chats to return. Omit it to return all chats.offset: Number of chats to skip for pagination
ChatData objects. Each object includes:chat_id: The ID of the chat, to pass to the other chat callschat_title: The title of the chatuser_feedback: The feedback stored on the chat, ornullif there is noneuser_display_name: Display name of the user who owns the chatcreation_time: When the chat was createddomain: The domain the chat queriesagent: The agent the chat runs withis_readonly:trueif the chat can no longer be continued, because the workspace changed since the chat was createdis_running:trueif an analysis is currently running in the chatui_url: The URL of the chat in the Honeydew UI
Get Deep Analysis Chat
Get Deep Analysis Chat
chat_id: The ID of the chat, as returned bycreate_chator by listing chats
ChatData object, with the fields listed under
List Deep Analysis Chats.Rename Deep Analysis Chat
Rename Deep Analysis Chat
chat_id: The ID of the chat to renamenew_title: The new title of the chat
ChatData object, with the fields listed under
List Deep Analysis Chats.Set Deep Analysis Chat Feedback
Set Deep Analysis Chat Feedback
chat_id: The ID of the chatuser_feedback: The feedback to store. Passnullto clear the feedback on the chat.
ChatData object, with the fields listed under
List Deep Analysis Chats.Delete Deep Analysis Chat
Delete Deep Analysis Chat
chat_id: The ID of the chat to delete
null.List AI Question History
List AI Question History
limit: Maximum number of results to return (up to 1000)offset: Number of results to skip for paginationparams: Optional filter parameters:domain: Filter by domain name(s)llm_model: Filter by LLM model name(s)conversation_id: Filter by conversation ID(s)asked_by: Filter by user display name(s)client: Filter by client name(s)agent: Filter by agent name(s)status: Filter by response status (FINISHEDorFAILED)from_execution_time: Filter by start time (inclusive)to_execution_time: Filter by end time (inclusive)question: Filter by question text (partial match)llm_response: Filter by LLM response text (partial match)has_feedback: Filter to questions whose chat has user feedback
AnalystResponse objects. Each object includes:question_id: Unique ID for the questionresponse_type:QUICK_ANALYSISorDEEP_ANALYSISquestion: The question textasked_by: Display name of the user who asked the questionclient: The client identifier set in theX-Honeydew-Clientheaderagent: The agent that handled the question, if applicableconversation_id: The ID of the deep analysis chat this question belongs toexecution_time: When the question was executedcreation_time: When the question record was createdllm_model: The LLM model used to answer the questionstatus:FINISHEDorFAILEDsql: The generated SQL, if applicableerror: Error message if the question failedruntime_ms: Total time to answer the question, in millisecondschat_title: The title of the deep analysis chat, if applicableuser_feedback: User feedback submitted on the chat, if applicable
Publish to BI Tools
Publish a domain directly to a BI tool, or generate the metadata artifact for it and load it into the tool yourself. Publishing to a server requires the matching connector to be configured in Honeydew first, from the user settings menu under Power BI / Sigma / Tableau / ThoughtSpot → Settings. See the setup instructions for Power BI, Sigma, Tableau and ThoughtSpot. A connector configured this way is nameddefault — pass that as connector_name.
Administrators can list the configured names with the queries under Connectors below.
Unless stated otherwise, domain is optional — omit it to use the full workspace model
instead of a single domain.
Connectors
List Configured BI Connectors
List Configured BI Connectors
powerbi_connectors_names, sigma_connectors_names, tableau_connectors_names and
thoughtspot_connectors_names each list the connector names configured for their tool,
to pass as connector_name.
A connector configured through the Honeydew UI is named default.Workspace/Branch Headers: Not requiredPermissions: AdminReturn Value:
Each query returns the names of the connectors configured for its tool.Lightdash
Get Lightdash Model For Domain
Get Lightdash Model For Domain
domain: The domain to retrieve the Lightdash model for
Looker
Get Looker LookML For Domain
Get Looker LookML For Domain
domain: The domain to retrieve the Looker LookML for
Power BI
Publish Domain to Power BI Service
Publish Domain to Power BI Service
connector_name: The name of the Power BI connector to usemodel_name: The name of the semantic model to create or updategroup_id: The ID of the Power BI workspace to publish into. Use thepowerbi_workspacesquery below to list the available workspaces.domain: The domain to publish
semantic_model_url: Link to the semantic model in the Power BI Servicerefresh_error: Error message if the refresh that follows the publish failed. The model is published either way.
Download Power BI Template (PBIT) For Domain
Download Power BI Template (PBIT) For Domain
domain: The domain to generate the template for
.pbit file, Base64-encoded.
Decode it and save it with a .pbit extension.Download Power BI Report (PBIX) For Domain
Download Power BI Report (PBIX) For Domain
domain: The domain to generate the report for
.pbix file, Base64-encoded.
Decode it and save it with a .pbix extension.List Power BI Workspaces
List Power BI Workspaces
group_id to publish into.Workspace/Branch Headers: Not requiredPermissions: Viewer or higherParameters:connector_name: The name of the Power BI connector to use
id: The ID of the workspace, to pass asgroup_idname: The name of the workspacehoneydew_datasets: The semantic models in the workspace that are connected to Honeydew as a source, each with itsid,nameandgroup_id
Sigma
Publish Domain to Sigma
Publish Domain to Sigma
connector_name: The name of the Sigma connector to useconnection_id: The ID of the Sigma connection to the data warehouse. Use thesigma_connectionsquery below to list the available connections.folder_id: The ID of the Sigma folder to publish into. Use thesigma_foldersquery below to list the available folders.domain: The domain to publishmodel_name: The name of the data model. Defaults to the display name of the domain.existing_data_model_id: The ID of a data model to update. Omit it to create a new data model.tags: Version tags to apply to the published version
data_model_url: Link to the data model in Sigmadata_model_id: The ID of the data model, to pass asexisting_data_model_idon the next publishtag_error: Error message if applying the version tags failed. The data model is published either way.
List Sigma Connections
List Sigma Connections
connection_id to publish against.Workspace/Branch Headers: Not requiredPermissions: Viewer or higherParameters:connector_name: The name of the Sigma connector to use
connection_id: The ID of the connectionname: The name of the connection
List Sigma Folders
List Sigma Folders
folder_id to publish into.
With neither optional parameter, returns the top-level folders of the default Sigma workspace.Workspace/Branch Headers: Not requiredPermissions: Viewer or higherParameters:connector_name: The name of the Sigma connector to useworkspace_id: List the top-level folders of this Sigma workspace. Use thesigma_workspacesquery below to list the available workspaces.parent_id: List the sub-folders of this folder
parent_id and workspace_id are mutually exclusive.Return Value:id: The ID of the folder, to pass asfolder_idname: The name of the folderpath: The full path of the folder
List Sigma Workspaces
List Sigma Workspaces
workspace_id when listing folders.Workspace/Branch Headers: Not requiredPermissions: Viewer or higherParameters:connector_name: The name of the Sigma connector to use
workspace_id: The ID of the workspace, to pass asworkspace_idtosigma_foldersname: The name of the workspace
Tableau
Publish Domain to Tableau Server/Cloud
Publish Domain to Tableau Server/Cloud
existing_datasource_id to update an existing data source, or both
datasource_name and project_id to create a new one. Any other combination is an error.Workspace/Branch Headers: RequiredPermissions: Editor or higherParameters:connector_name: The name of the Tableau Server connector to usedatasource_name: The name of the data source to createproject_id: The ID of the Tableau project to create the data source in. Use thetableau_projectsquery below to list the available projects.existing_datasource_id: The ID of the data source to update. Use thetableau_honeydew_datasourcesquery below to list the Honeydew data sources.domain: The domain to publish
datasource_url: Link to the data source in Tableau
Download Tableau Data Source (TDS) For Domain
Download Tableau Data Source (TDS) For Domain
domain: The domain to generate the data source forconnector_class: The Honeydew connector the data source connects through —honeydew_jdbc(the default) ortrino_jdbc
.tds file, Base64-encoded.
Decode it and save it with a .tds extension.List Tableau Projects
List Tableau Projects
project_id to publish into.Workspace/Branch Headers: Not requiredPermissions: Viewer or higherParameters:connector_name: The name of the Tableau Server connector to use
id: The ID of the project, to pass asproject_idname: The name of the projectparent_id: The ID of the parent project, for a nested project
List Honeydew Data Sources in Tableau
List Honeydew Data Sources in Tableau
existing_datasource_id to update.Workspace/Branch Headers: Not requiredPermissions: Viewer or higherParameters:connector_name: The name of the Tableau Server connector to useproject_id: Limit the results to a single Tableau project
id: The ID of the data source, to pass asexisting_datasource_idname: The name of the data sourceproject_id: The ID of the project the data source is in
ThoughtSpot
Publish Domain to ThoughtSpot
Publish Domain to ThoughtSpot
connector_name: The name of the ThoughtSpot connector to useconnection_name: The name of the Honeydew connection in ThoughtSpot to use. Use thethoughtspot_connectionsquery below to list the available connections.domain: The domain to publish. Required.table_name: The name of the table to create or update. Defaults to the display name of the domain.
table_url: Link to the table in ThoughtSpottable_guid: The ID of the table in ThoughtSpot
Get ThoughtSpot TML For Domain
Get ThoughtSpot TML For Domain
domain: The domain to retrieve the ThoughtSpot TML forconnection_name: The name of the Honeydew connection in ThoughtSpot to use
List ThoughtSpot Connections
List ThoughtSpot Connections
connection_name.Workspace/Branch Headers: Not requiredPermissions: Viewer or higherParameters:connector_name: The name of the ThoughtSpot connector to use
name: The name of the connection, to pass asconnection_nameconnection_id: The ID of the connection
API Keys
Create and manage API keys programmatically, instead of using Settings → API Keys in the Honeydew UI. Both organization-level keys, used as service accounts, and per-user keys are supported.api_key value (for example, hdapi_a1b2c3d4e5f6g7h8) identifies the key and is used as the
username for authentication. Management mutations that take an api_key parameter expect this
value, not the secret.Create Organization-Level API Key
Create Organization-Level API Key
api_key_name: A descriptive name for the key. Must not be empty, and is limited to 100 characters.role: The role assigned to the key —Admin,Editor, orViewer. See User Roles.workspaces: An optional list of workspace names the key can access. Applies only toEditorandViewerkeys, when workspace-level access is enabled for the organization. When it is enabled, omitting this parameter, or passingnullor an empty list, leaves the key with no workspace access.Adminkeys, and all keys in an organization without workspace-level access, reach every workspace.
api_key_name: The name of the created keyapi_key: The generated key identifier, used as the username for authenticationapi_secret: The generated secret, used as the password for authentication
Create Per-User API Key
Create Per-User API Key
- Admin-Only Mode: Admin
- User Self-Service Mode: any role, to create a key for themselves
assigned_user_email, always requires Admin.Parameters:api_key_name: A descriptive name for the key. Must not be empty, and is limited to 100 characters.assigned_user_email: The email of the user to assign the key to. Omit or passnullto create a key for the calling user.
api_key_name: The name of the created keyapi_key: The generated key identifier, used as the username for authenticationapi_secret: The generated secret, used as the password for authentication
List API Keys
List API Keys
name: The descriptive name given to the key on creationapi_key: The key identifiercreated_at: When the key was createdrole: The role of the keylast_login: When the key was last used to authenticate, ornullif never usedworkspaces: The workspaces the key is restricted to, ornullif no list was set.nullis not a grant of access to everything — with no stored list, access follows the key role and the organization workspace-level access setting. For per-user keys, this is inherited from the assigned user.assigned_user: The user a per-user key belongs to, ornullfor an organization-level key:name: The display name of the useremail: The email of the userrole: The role of the user, which the key inherits
Delete API Key
Delete API Key
api_key: The identifier of the key to delete, as returned by theapi_keysquery
Update API Key Role
Update API Key Role
api_key: The identifier of the key to updaterole: The new role —Admin,Editor, orViewer
Update API Key Workspaces
Update API Key Workspaces
api_key: The identifier of the key to updateworkspaces: The list of workspace names the key can access. Every name must be an existing workspace. When workspace-level access is enabled for the organization, passing an empty list leaves the key with no workspace access.
Admin role, or when workspace-level access is not enabled for the organization.
To give an Editor or Viewer key broader access, pass the full list of workspace names.