![]()
diff --git a/docs-mintlify/admin/connect-to-data/visualization-tools/retool.mdx b/docs-mintlify/admin/connect-to-data/visualization-tools/retool.mdx
index 3096c8b36414d..e7344d1c7ad71 100644
--- a/docs-mintlify/admin/connect-to-data/visualization-tools/retool.mdx
+++ b/docs-mintlify/admin/connect-to-data/visualization-tools/retool.mdx
@@ -25,7 +25,7 @@ detailed instructions.
## Connect from Cube Core
-You can connect a Cube deployment to Retool using the [REST API](/reference/rest-api).
+You can connect a Cube deployment to Retool using the [REST (JSON) API](/reference/rest-api).
## Connecting from Retool
@@ -37,7 +37,7 @@ Create a new "REST API" resource in Retool.

-Next, copy and paste Cube's REST API URL and the Authorization token.
+Next, copy and paste Cube's REST (JSON) API URL and the Authorization token.

@@ -52,7 +52,7 @@ copy it from Cube’s Playground or compose manually.
Create a POST request, paste the JSON query in the **Body**. Make sure to add a
`query` parameter for your JSON query.
-Because the Cube REST API has the format of `HOST/cubejs-api/v1`, don't forget
+Because the Cube REST (JSON) API has the format of `HOST/cubejs-api/v1`, don't forget
to add the `/load` endpoint to the end of the data source API.
Next, hit Run.
@@ -67,8 +67,8 @@ Retool has an amazing feature where you can drag and drop UI components into the
dashboard. You can use this to add a tables, bar charts, and much more.
Because the name of the Retool query in the example is `OrdersByMonth`, using
-the data binding curly brackets will populate the charts with data from the REST
-API.
+the data binding curly brackets will populate the charts with data from the
+REST (JSON) API.
```handlebars
{{OrdersByMonth.data.data}}
diff --git a/docs-mintlify/admin/connect-to-data/visualization-tools/steep.mdx b/docs-mintlify/admin/connect-to-data/visualization-tools/steep.mdx
index f4952e34beb66..8ed15d49423d7 100644
--- a/docs-mintlify/admin/connect-to-data/visualization-tools/steep.mdx
+++ b/docs-mintlify/admin/connect-to-data/visualization-tools/steep.mdx
@@ -1,6 +1,6 @@
---
title: Steep
-description: Pair Steep with Cube using Cloud integration steps or Core’s REST endpoint and API secret inside Steep’s data source form.
+description: Pair Steep with Cube using Cloud integration steps or Core’s REST (JSON) API endpoint and API secret inside Steep’s data source form.
---
[Steep](https://steep.app) is a modern analytics platform powered by and
@@ -26,13 +26,13 @@ detailed instructions.
## Connect from Cube Core
-You can connect a Cube deployment to Steep using the [REST API](/reference/rest-api).
+You can connect a Cube deployment to Steep using the [REST (JSON) API](/reference/rest-api).
## Connecting from Steep
### Creating a data source
-Copy **REST API endpoint** and **API Secret** and paste them into Steep form for
+Copy **REST (JSON) API endpoint** and **API Secret** and paste them into Steep form for
creating the Cube data source:
diff --git a/docs-mintlify/admin/deployment/byoc/aws/privatelink.mdx b/docs-mintlify/admin/deployment/byoc/aws/privatelink.mdx
index 9597f2121004b..be52be884dfb1 100644
--- a/docs-mintlify/admin/deployment/byoc/aws/privatelink.mdx
+++ b/docs-mintlify/admin/deployment/byoc/aws/privatelink.mdx
@@ -25,7 +25,7 @@ This approach ensures that all traffic between your applications and Cube Cloud
## Architecture
With private connectivity enabled, Cube Cloud exposes two AWS PrivateLink services:
-- **HTTP API Service**: For REST API and GraphQL endpoints
+- **HTTP API Service**: For REST (JSON) API and GraphQL endpoints
- **SQL API Service**: For PostgreSQL-compatible SQL interface connections
Your Cube deployment APIs are available on dedicated hostnames following this pattern:
diff --git a/docs-mintlify/admin/deployment/limits.mdx b/docs-mintlify/admin/deployment/limits.mdx
index 1641332a90b72..10490a14aa67a 100644
--- a/docs-mintlify/admin/deployment/limits.mdx
+++ b/docs-mintlify/admin/deployment/limits.mdx
@@ -87,7 +87,7 @@ Usage is calculated per Cube Cloud deployment.
## Quotas
-The [REST][ref-rest-api] and [GraphQL][ref-gql-api] APIs both have a standard
+The [REST (JSON)][ref-rest-api] and [GraphQL][ref-gql-api] APIs both have a standard
quota of 100 requests per second per deployment; this can also go higher
for short bursts of traffic. These limits can be raised on request,
[contact support][cube-contact-us] for more details.
diff --git a/docs-mintlify/admin/index.mdx b/docs-mintlify/admin/index.mdx
index 850bc288c04cb..64c3af61d2994 100644
--- a/docs-mintlify/admin/index.mdx
+++ b/docs-mintlify/admin/index.mdx
@@ -77,7 +77,7 @@ or using JavaScript, in a `cube.js` file in the root folder of a Cube project.
```python title="Python"
from cube import config
-# Base path for the REST API
+# Base path for the REST (JSON) API
config.base_path = '/cube-api'
# Inspect, modify, or restrict every query
@@ -95,7 +95,7 @@ def query_rewrite(query: dict, ctx: dict) -> dict:
```javascript title="JavaScript"
module.exports = {
- // Base path for the REST API
+ // Base path for the REST (JSON) API
basePath: '/cube-api',
// Inspect, modify, or restrict every query
diff --git a/docs-mintlify/admin/monitoring/query-history.mdx b/docs-mintlify/admin/monitoring/query-history.mdx
index 9bc864d20c887..edf8fd68f5517 100644
--- a/docs-mintlify/admin/monitoring/query-history.mdx
+++ b/docs-mintlify/admin/monitoring/query-history.mdx
@@ -91,10 +91,10 @@ to the left of any query.
Check the columns to see the details:
- **Query** column shows a representation of a query, similar to the
-REST API [query format][ref-query-format]. In case of the SQL API, if the
-query is not coercible to a REST API query, raw SQL is shown "as is."
+REST (JSON) API [query format][ref-query-format]. In case of the SQL API, if the
+query is not coercible to a REST (JSON) API query, raw SQL is shown "as is."
- **API** column shows the API type that was used to run the query:
-REST API via HTTP transport, REST API via WebSockets, GraphQL API, or SQL API.
+REST (JSON) API via HTTP transport, REST (JSON) API via WebSockets, GraphQL API, or SQL API.
- **Duration** column shows how long the query took.
- Bolt icon indicates the [cache type][ref-cache-types] that was used to
fulfill the query.
diff --git a/docs-mintlify/cube-core/getting-started/learn-more.mdx b/docs-mintlify/cube-core/getting-started/learn-more.mdx
index 4358c2507583b..688bcc76fe11d 100644
--- a/docs-mintlify/cube-core/getting-started/learn-more.mdx
+++ b/docs-mintlify/cube-core/getting-started/learn-more.mdx
@@ -11,7 +11,7 @@ and how to effectively define metrics in your data models.
## Querying
Cube can be queried in a variety of ways. Explore how to use
-[REST API](/reference/rest-api), [GraphQL API](/reference/graphql-api), and
+[REST (JSON) API](/reference/rest-api), [GraphQL API](/reference/graphql-api), and
[SQL API](/reference/sql-api), or how to
[connect a BI or data visualization tool](/admin/connect-to-data/visualization-tools).
diff --git a/docs-mintlify/cube-core/getting-started/query-data.mdx b/docs-mintlify/cube-core/getting-started/query-data.mdx
index 2682488bd51d0..8f512f121cf6b 100644
--- a/docs-mintlify/cube-core/getting-started/query-data.mdx
+++ b/docs-mintlify/cube-core/getting-started/query-data.mdx
@@ -46,7 +46,7 @@ connection instructions for specific BI tools:

-Connectivity to data applications is enabled by the [REST API][ref-rest-api] and
+Connectivity to data applications is enabled by the [REST (JSON) API][ref-rest-api] and
the [GraphQL API][ref-graphql-api] as well as [JavaScript
SDKs][ref-frontend-int]. Check the **Frontend Integrations** tab for
usage instructions for these APIs:
diff --git a/docs-mintlify/docs.json b/docs-mintlify/docs.json
index c6ab5ee8c0840..e4bf514fdb929 100644
--- a/docs-mintlify/docs.json
+++ b/docs-mintlify/docs.json
@@ -495,7 +495,7 @@
]
},
{
- "group": "REST API",
+ "group": "REST (JSON) API",
"root": "reference/core-data-apis/rest-api/index",
"pages": [
"reference/core-data-apis/rest-api/query-format",
diff --git a/docs-mintlify/docs/data-modeling/dynamic/jinja.mdx b/docs-mintlify/docs/data-modeling/dynamic/jinja.mdx
index 038ac0b59fb17..78a33ee109f1d 100644
--- a/docs-mintlify/docs/data-modeling/dynamic/jinja.mdx
+++ b/docs-mintlify/docs/data-modeling/dynamic/jinja.mdx
@@ -50,7 +50,7 @@ Jinja templates in Cube Core. Please [track this issue](https://github.com/cube-
You can also view the resulting data model in [Playground][ref-payground] and [Visual
Model][ref-visual-model]. Also, you can introspect the data model using the
-[`/v1/meta` REST API endpoint][ref-meta-api].
+[`/v1/meta` REST (JSON) API endpoint][ref-meta-api].
### Loops
diff --git a/docs-mintlify/docs/explore-analyze/playground.mdx b/docs-mintlify/docs/explore-analyze/playground.mdx
index c9ab3ea027907..0c4fe68e02511 100644
--- a/docs-mintlify/docs/explore-analyze/playground.mdx
+++ b/docs-mintlify/docs/explore-analyze/playground.mdx
@@ -100,7 +100,7 @@ in the result set as if there's no limit present.
### Pasting a query
You can also compose a new query by clicking on the _pencil_ button in the sidebar on the
-left and pasting a [REST API][ref-rest-api] query or a [GraphQL API][ref-graphql-api]
+left and pasting a [REST (JSON) API][ref-rest-api] query or a [GraphQL API][ref-graphql-api]
query from the clipboard and clicking **Apply**.
@@ -166,7 +166,7 @@ that Cube passes to an underlying data source driver later when executing the qu
## Copying API queries
-View the queries for respective data APIs on the **SQL API**, **REST API**,
+View the queries for respective data APIs on the **SQL API**, **REST (JSON) API**,
and **GraphQL API** tabs. Click **Copy** to put one of them into your clipboard.
diff --git a/docs-mintlify/docs/explore-analyze/workbooks/querying-data.mdx b/docs-mintlify/docs/explore-analyze/workbooks/querying-data.mdx
index 9b7ab14f7938d..044e09e4c814b 100644
--- a/docs-mintlify/docs/explore-analyze/workbooks/querying-data.mdx
+++ b/docs-mintlify/docs/explore-analyze/workbooks/querying-data.mdx
@@ -45,6 +45,35 @@ change the sort order for any member. Drag and drop members within the sorting c
When a [pivot](#pivoting) is applied, an additional section with pivot dimensions appears.
+## Inspecting queries
+
+Every query in the Semantic Query tab can be inspected as code. Open the SQL panel via the **SQL** button in the top-right toolbar to see the query that the workbook generates, switch between representations, and copy it for use elsewhere.
+
+
+

+
+
+The panel exposes two top-level tabs:
+
+- **Semantic SQL** — the query expressed against the Semantic Model (semantic views, measures, dimensions, and `MEASURE()` calls). This is the source of truth for the query and what the workbook stores.
+- **Generated SQL** — the SQL that Cube compiles from the Semantic SQL and sends to your data warehouse. Use it to understand exactly what runs against your database, debug performance, or share with a database administrator.
+
+The **Semantic SQL** tab also has a dropdown for viewing the same query in the formats accepted by Cube's [Core Data APIs][ref-core-data-apis]:
+
+- **Semantic JSON** — the [REST (JSON) API][ref-rest-api] query format
+- **Semantic GraphQL** — the [GraphQL API][ref-graphql-api] query format
+
+These views are convenient when you want to take a query you've built interactively in a workbook and reuse it directly through one of the Core Data APIs from your own application.
+
+## Editing Semantic SQL by hand
+
+You can edit the Semantic SQL directly in the editor to refine a query — for example, to add a `WHERE` clause, change `GROUP BY` order, or apply a different sort. After making changes, click **Save and Run** to apply them to the query and refresh the results, or **Discard** to revert.
+
+
+

+
+
+When you save a hand-edited query, the workbook keeps the Semantic SQL as the source of truth, and the visual controls (members panel, sort, pivot) stay in sync with what's expressible in the UI. Anything that goes beyond the interactive controls — see [Advanced semantic queries](#advanced-semantic-queries) below — disables the affected UI controls but keeps the rest of the workbook fully functional.
## Advanced semantic queries
@@ -60,3 +89,7 @@ Currently, advanced semantic queries can be placed on dashboards, but dashboard
+[ref-core-data-apis]: /reference/core-data-apis
+[ref-rest-api]: /reference/core-data-apis/rest-api
+[ref-graphql-api]: /reference/core-data-apis/graphql-api
+
diff --git a/docs-mintlify/docs/getting-started/cloud/index.mdx b/docs-mintlify/docs/getting-started/cloud/index.mdx
index 18c1703bd595f..381b231aebf1b 100644
--- a/docs-mintlify/docs/getting-started/cloud/index.mdx
+++ b/docs-mintlify/docs/getting-started/cloud/index.mdx
@@ -12,7 +12,7 @@ You will learn how to:
- Connect Cube Cloud to Snowflake
- Create your first Cube data model
- Connect to a BI tool to explore this model
-- Create React application with Cube REST API
+- Create React application with Cube REST (JSON) API
## Prerequisites
diff --git a/docs-mintlify/docs/getting-started/cloud/query-from-bi.mdx b/docs-mintlify/docs/getting-started/cloud/query-from-bi.mdx
index f531cefacd219..d2c5725d66535 100644
--- a/docs-mintlify/docs/getting-started/cloud/query-from-bi.mdx
+++ b/docs-mintlify/docs/getting-started/cloud/query-from-bi.mdx
@@ -98,5 +98,5 @@ as shown in the image below.

-In the next section, we will learn how to use Cube's REST API to query our view
+In the next section, we will learn how to use Cube's REST (JSON) API to query our view
from a React app.
diff --git a/docs-mintlify/docs/getting-started/cloud/query-from-react-app.mdx b/docs-mintlify/docs/getting-started/cloud/query-from-react-app.mdx
index ac8e6cac1d1cf..5ad43c3c5cc7f 100644
--- a/docs-mintlify/docs/getting-started/cloud/query-from-react-app.mdx
+++ b/docs-mintlify/docs/getting-started/cloud/query-from-react-app.mdx
@@ -1,23 +1,23 @@
---
title: Query from a React app
-description: Wire a React app to Cube Cloud REST or GraphQL endpoints using the JavaScript client libraries and deployment-scoped URLs.
+description: Wire a React app to Cube Cloud REST (JSON) or GraphQL endpoints using the JavaScript client libraries and deployment-scoped URLs.
---
-Cube offers both [REST](/reference/rest-api) and
+Cube offers both [REST (JSON)](/reference/rest-api) and
[GraphQL](/reference/graphql-api) APIs, which can be used to
query data from applications built in React or other frontend frameworks.
-You can find your REST API endpoint on the **Overview** page. In
+You can find your REST (JSON) API endpoint on the **Overview** page. In
development mode, Cube creates an isolated endpoint for testing data model
-changes without affecting production. The structure of your REST API endpoint in
+changes without affecting production. The structure of your REST (JSON) API endpoint in
development mode should follow the format below.
```yaml
https://
..cubecloudapp.dev/dev-mode//cubejs-api/v1
```
-To test your REST API from your terminal, you can use [curl](https://curl.se/).
-Click on “How to connect your application” next to the REST API, and it will
+To test your REST (JSON) API from your terminal, you can use [curl](https://curl.se/).
+Click on “How to connect your application” next to the REST (JSON) API, and it will
display a code snippet that you can run in your terminal to test the endpoint
with curl.
diff --git a/docs-mintlify/docs/getting-started/databricks/index.mdx b/docs-mintlify/docs/getting-started/databricks/index.mdx
index bcbc14fac7cda..fe91e051ac644 100644
--- a/docs-mintlify/docs/getting-started/databricks/index.mdx
+++ b/docs-mintlify/docs/getting-started/databricks/index.mdx
@@ -12,7 +12,7 @@ You will learn how to:
- Connect Cube Cloud to Databricks
- Create your first Cube data model
- Connect to a BI tool to explore this model
-- Create React application with Cube REST API
+- Create React application with Cube REST (JSON) API
## Prerequisites
diff --git a/docs-mintlify/docs/getting-started/databricks/query-from-bi.mdx b/docs-mintlify/docs/getting-started/databricks/query-from-bi.mdx
index 4c81ac682d975..a6b2de0203c63 100644
--- a/docs-mintlify/docs/getting-started/databricks/query-from-bi.mdx
+++ b/docs-mintlify/docs/getting-started/databricks/query-from-bi.mdx
@@ -124,5 +124,5 @@ as shown in the image below.
-In the next section, we will learn how to use Cube's REST API to query our view
+In the next section, we will learn how to use Cube's REST (JSON) API to query our view
from a React app.
diff --git a/docs-mintlify/docs/getting-started/databricks/query-from-react-app.mdx b/docs-mintlify/docs/getting-started/databricks/query-from-react-app.mdx
index 0481ff19d47e3..8e4583c317cf0 100644
--- a/docs-mintlify/docs/getting-started/databricks/query-from-react-app.mdx
+++ b/docs-mintlify/docs/getting-started/databricks/query-from-react-app.mdx
@@ -3,21 +3,21 @@ title: Query from a React app
description: Call Cube Cloud APIs from a React app against a Databricks-backed deployment, including dev-mode URLs and signed requests.
---
-Cube offers both [REST](/reference/rest-api) and
+Cube offers both [REST (JSON)](/reference/rest-api) and
[GraphQL](/reference/graphql-api) APIs, which can be used to
query data from applications built in React or other frontend frameworks.
-You can find your REST API endpoint on the **Overview** page. In
+You can find your REST (JSON) API endpoint on the **Overview** page. In
development mode, Cube creates an isolated endpoint for testing data model
-changes without affecting production. The structure of your REST API endpoint in
+changes without affecting production. The structure of your REST (JSON) API endpoint in
development mode should follow the format below.
```yaml
https://..cubecloudapp.dev/dev-mode//cubejs-api/v1
```
-To test your REST API from your terminal, you can use [curl](https://curl.se/).
-Click on “How to connect your application” next to the REST API, and it will
+To test your REST (JSON) API from your terminal, you can use [curl](https://curl.se/).
+Click on “How to connect your application” next to the REST (JSON) API, and it will
display a code snippet that you can run in your terminal to test the endpoint
with curl.
diff --git a/docs-mintlify/docs/getting-started/embed-analytics.mdx b/docs-mintlify/docs/getting-started/embed-analytics.mdx
index 6135a1ea09a66..03576bf624647 100644
--- a/docs-mintlify/docs/getting-started/embed-analytics.mdx
+++ b/docs-mintlify/docs/getting-started/embed-analytics.mdx
@@ -15,7 +15,7 @@ For more control over the conversational analytics experience, you can use the [
## Build custom experiences
-If you want complete control over visualizations and user interfaces, you can use [Cube's core APIs][ref-core-apis]—including REST, GraphQL, and SQL APIs—directly. This headless approach enables you to build fully custom visualization, reporting, and dashboarding experiences tailored to your specific needs.
+If you want complete control over visualizations and user interfaces, you can use [Cube's core APIs][ref-core-apis]—including REST (JSON), GraphQL, and SQL APIs—directly. This headless approach enables you to build fully custom visualization, reporting, and dashboarding experiences tailored to your specific needs.
[ref-dashboards]: /analytics/dashboards
[ref-analytics-chat]: /analytics/analytics-chat
diff --git a/docs-mintlify/docs/introduction.mdx b/docs-mintlify/docs/introduction.mdx
index 2a626e03947f3..379ac5cf09152 100644
--- a/docs-mintlify/docs/introduction.mdx
+++ b/docs-mintlify/docs/introduction.mdx
@@ -88,9 +88,9 @@ When an AI agent sends a query to Cube, the aggregate awareness engine determine
**APIs enable AI agents, applications, and tools to interact with the semantic layer through standard protocols.** For agentic analytics to work across diverse use cases—from AI-powered workbooks to embedded analytics to traditional BI—the semantic layer must provide universal interoperability. AI agents need to query data, introspect the data model, and integrate with other systems without requiring custom integrations for every tool or framework.
-Rather than inventing proprietary protocols, Cube implements widely adopted standards: **REST, GraphQL, and SQL.**
+Rather than inventing proprietary protocols, Cube implements widely adopted standards: **REST (JSON), GraphQL, and SQL.**
-**REST and GraphQL** provide modern API interfaces for building custom applications and enabling programmatic access. These APIs power agentic workflows, allowing AI agents to query data, retrieve results, and build interactive experiences.
+**REST (JSON) and GraphQL** provide modern API interfaces for building custom applications and enabling programmatic access. These APIs power agentic workflows, allowing AI agents to query data, retrieve results, and build interactive experiences.
**SQL** is universally adopted across the data stack. Every BI tool, visualization platform, and data application can query a SQL data source. Cube implements Postgres-compatible SQL and extends it to support semantic layer concepts like measures—special types that know how to evaluate themselves based on data model definitions. Any tool that can connect to Postgres or Redshift can connect to Cube, making the semantic layer accessible to both AI agents and traditional analytics tools.
diff --git a/docs-mintlify/embedding/iframe/creator-mode.mdx b/docs-mintlify/embedding/iframe/creator-mode.mdx
index 92468655ce6c1..793d2d952911d 100644
--- a/docs-mintlify/embedding/iframe/creator-mode.mdx
+++ b/docs-mintlify/embedding/iframe/creator-mode.mdx
@@ -22,33 +22,32 @@ In Creator Mode, you embed the full Cube application instead of individual dashb
- Access all workbook and dashboard functionality
- Build custom analytics experiences
-To enable Creator Mode, pass `creatorMode: true`, `tenantId`, and `tenantName` to the [Generate Session API][ref-generate-session] when generating an embed session. The tenant ID is used to scope all content the user creates to a specific tenant; the tenant name is a human-readable label displayed in the user interface.
+To enable Creator Mode, pass `creatorMode: true` to the [Generate Session API][ref-generate-session] when generating an embed session. Optionally, pass `embedTenantName` to scope content to a specific embed tenant — by default, creator mode uses the current tenant's name.
-## Tenant ID and Name
+## Embed tenant name
-When using Creator Mode, you must provide both `tenantId` and `tenantName` parameters when generating a session:
+`embedTenantName` is an optional parameter on the Generate Session API used to scope all content (dashboards, workbooks, etc.) that users create within the embedded application to a specific embed tenant. This ensures proper data isolation in multi-tenant scenarios.
-- **`tenantId`** – Used to scope all content (dashboards, workbooks, etc.) that users create within the embedded application to a specific tenant. This ensures proper data isolation in multi-tenant scenarios.
-- **`tenantName`** – A human-readable friendly name for the tenant that will be displayed in the user interface.
+When `embedTenantName` is omitted in creator mode, the session defaults to the current tenant, so most setups don't need to set it.
+
+The value must be lowercase, start with a letter, end with a letter or number, and only contain letters, numbers, or hyphens (length 5–36).
## Using Creator Mode
To use Creator Mode and embed the app:
1. **Set the embed type to "App"** in the form
-2. **Fill in Deployment ID**, **Tenant ID**, **Tenant Name**, and either **External ID** or **Internal ID** (email)
+2. **Fill in Deployment ID** and either **External ID** or **Internal ID** (email). Optionally provide an **Embed Tenant Name** to scope content to a specific embed tenant
3. **Click "Generate Session & Embed"** — the request automatically includes `creatorMode: true` for app embeddings
4. The app is embedded at `/embed/d/{deploymentId}/app?session={sessionId}` and displayed in the iframe
-Creator Mode is enabled automatically when the embed type is "app"; no additional configuration is needed. The tenant ID is required to scope all dashboards and content created by the user to the specific tenant, and the tenant name will be displayed in the user interface.
+Creator mode is enabled automatically when the embed type is "app"; no additional configuration is needed.
### Example
```javascript
const API_KEY = "YOUR_API_KEY";
const DEPLOYMENT_ID = 32;
-const TENANT_ID = "tenant-123";
-const TENANT_NAME = "Acme Corporation";
const session = await fetch(
"https://your-account.cubecloud.dev/api/v1/embed/generate-session",
@@ -62,8 +61,8 @@ const session = await fetch(
deploymentId: DEPLOYMENT_ID,
externalId: "user@example.com",
creatorMode: true,
- tenantId: TENANT_ID,
- tenantName: TENANT_NAME,
+ // Optional — defaults to the current tenant when omitted:
+ embedTenantName: "acme-corp",
}),
},
);
@@ -93,7 +92,7 @@ For a complete working example of embedding, including Creator Mode, check out t
- A full working example of iframe embedding
- Implementation of signed iframe embedding with session generation
-- Support for Creator Mode with tenant ID and tenant name
+- Support for creator mode with an optional embed tenant name
- A React-based UI for testing embedding functionality
- Backend server that securely handles API key authentication
diff --git a/docs-mintlify/embedding/vizard.mdx b/docs-mintlify/embedding/vizard.mdx
index 57d12c1cef307..573073c96dc19 100644
--- a/docs-mintlify/embedding/vizard.mdx
+++ b/docs-mintlify/embedding/vizard.mdx
@@ -1,10 +1,10 @@
---
title: Chart Prototyping
-description: Turn a Playground query into starter front-end code that charts REST API results for embedded analytics prototypes.
+description: Turn a Playground query into starter front-end code that charts REST (JSON) API results for embedded analytics prototypes.
---
Chart Prototyping generates code of a front-end application that works with
-the [REST API][ref-rest-api] and visualizes data on charts. It's convenient
+the [REST (JSON) API][ref-rest-api] and visualizes data on charts. It's convenient
for boostrapping a new embedded analytics application or copying and pasting
code to an existing one.
diff --git a/docs-mintlify/introduction.mdx b/docs-mintlify/introduction.mdx
index 0aaa6061b2d99..769389c12f135 100644
--- a/docs-mintlify/introduction.mdx
+++ b/docs-mintlify/introduction.mdx
@@ -63,4 +63,4 @@ Caching enables AI agents to deliver fast, interactive experiences without overw
#### APIs
-APIs enable AI agents, applications, and tools to interact with the semantic layer through standard protocols: **REST**, **GraphQL**, and **SQL**.
+APIs enable AI agents, applications, and tools to interact with the semantic layer through standard protocols: **REST (JSON)**, **GraphQL**, and **SQL**.
diff --git a/docs-mintlify/recipes/core-data-api/cast-numerics.mdx b/docs-mintlify/recipes/core-data-api/cast-numerics.mdx
index 88800dc6301ac..c5e153cef3d6a 100644
--- a/docs-mintlify/recipes/core-data-api/cast-numerics.mdx
+++ b/docs-mintlify/recipes/core-data-api/cast-numerics.mdx
@@ -1,11 +1,11 @@
---
title: Retrieving numeric values on the front-end
-description: Recipe for coercing REST numeric strings into JavaScript numbers on the client, including precision pitfalls and when casting is unsafe.
+description: Recipe for coercing REST (JSON) numeric strings into JavaScript numbers on the client, including precision pitfalls and when casting is unsafe.
---
## Use case
-The REST API returns numeric measure and dimension values as strings.
+The REST (JSON) API returns numeric measure and dimension values as strings.
However, we'd like to receive them as JavaScript `Number` type.
In the recipe below, we explore a way to have numeric values automatically
converted to `Number`. This is a potentially unsafe operation, so we also
@@ -35,9 +35,9 @@ cubes:
type: sum
```
-## Query via the REST API
+## Query via the REST (JSON) API
-Let's send the following query via the REST API:
+Let's send the following query via the REST (JSON) API:
```json
{
@@ -69,7 +69,7 @@ Unsurprisingly, we'll get the following result set in respose:
]
```
-You can see that the REST API returns numeric measure and dimension values
+You can see that the REST (JSON) API returns numeric measure and dimension values
as strings. While it might counter-intuitive, this is actually by design.
[JavaScript numbers][link-js-numbers] are always stored as double precision
@@ -79,7 +79,7 @@ and `9007199254740991`, also known as `Number.MIN_SAFE_INTEGER` and
[`Number.MAX_SAFE_INTEGER`][link-mdn-max-safe-integer]. It's also true with
regards to JSON numbers since they are handled by the JavaScript runtime.
-That is why the REST API returns numeric measure and dimension values as
+That is why the REST (JSON) API returns numeric measure and dimension values as
strings by default. Depending on the nature of your data and domain, you
can decide that numbers are "safe integers" and parse them as instances of
the `Number` type; alternatively, you can parse them as instances of the
diff --git a/docs-mintlify/recipes/core-data-api/real-time-data-fetch.mdx b/docs-mintlify/recipes/core-data-api/real-time-data-fetch.mdx
index daafbdec50fc2..f45dc4a3be6c7 100644
--- a/docs-mintlify/recipes/core-data-api/real-time-data-fetch.mdx
+++ b/docs-mintlify/recipes/core-data-api/real-time-data-fetch.mdx
@@ -1,6 +1,6 @@
---
-title: Real-Time data fetch in the REST API
-description: Recipe for live-updating dashboards using the REST API with WebSocket transport and `@cubejs-client` subscriptions.
+title: Real-Time data fetch in the REST (JSON) API
+description: Recipe for live-updating dashboards using the REST (JSON) API with WebSocket transport and `@cubejs-client` subscriptions.
---
## Use case
@@ -11,7 +11,7 @@ as soon as the data changes in the database.
## Configuration
-When using the [REST API][ref-rest-api], you can use the [WebSocket
+When using the [REST (JSON) API][ref-rest-api], you can use the [WebSocket
transport][ref-websocket-transport] to receive real-time updates. Using this
transport enables subscriptions to real-time updates.
diff --git a/docs-mintlify/recipes/data-modeling/dbt.mdx b/docs-mintlify/recipes/data-modeling/dbt.mdx
index 906ba5406c369..05b2fd05fea9d 100644
--- a/docs-mintlify/recipes/data-modeling/dbt.mdx
+++ b/docs-mintlify/recipes/data-modeling/dbt.mdx
@@ -328,7 +328,7 @@ side-by-side with other cubes, even of they don't come from dbt.
To inspect rendered cubes, you can use [Visual Modeler][ref-visual-model],
[Playground][ref-playground], or the [`meta` endpoint][ref-rest-api-meta]
-of the REST API.
+of the REST (JSON) API.
[dynamic-models]: /docs/data-modeling/dynamic/jinja
diff --git a/docs-mintlify/recipes/data-modeling/xirr.mdx b/docs-mintlify/recipes/data-modeling/xirr.mdx
index 1c1c676a91f7a..03f261a04ae1e 100644
--- a/docs-mintlify/recipes/data-modeling/xirr.mdx
+++ b/docs-mintlify/recipes/data-modeling/xirr.mdx
@@ -15,7 +15,7 @@ XIRR calculation is enabled by the `XIRR` function, implemented in [SQL API][ref
and [DAX API][ref-dax-api]. It means that queries to any of these APIs can use the this function.
The `XIRR` function is also implemented in Cube Store, meaning that queries to the SQL API
-or the [REST API][ref-rest-api] that hit pre-aggregations can also use this function.
+or the [REST (JSON) API][ref-rest-api] that hit pre-aggregations can also use this function.
That function would need to be used in a measure that makes use of [multi-stage
calculations][ref-multi-stage-calculations].
diff --git a/docs-mintlify/recipes/index.mdx b/docs-mintlify/recipes/index.mdx
index 6182ace72d83c..4b9406ea8797b 100644
--- a/docs-mintlify/recipes/index.mdx
+++ b/docs-mintlify/recipes/index.mdx
@@ -137,7 +137,7 @@ pre-aggregations, configuration, APIs, and AI.
Power filter dropdowns by querying distinct dimension values from Cube's data APIs.
- Coerce REST numeric strings into JavaScript numbers, with precision pitfalls and caveats.
+ Coerce REST (JSON) numeric strings into JavaScript numbers, with precision pitfalls and caveats.
Sort query result sets by custom criteria beyond default ordering.
diff --git a/docs-mintlify/reference/configuration/config.mdx b/docs-mintlify/reference/configuration/config.mdx
index 4397463e26ffb..cc22d940a67a8 100644
--- a/docs-mintlify/reference/configuration/config.mdx
+++ b/docs-mintlify/reference/configuration/config.mdx
@@ -890,7 +890,7 @@ environment variable, this option is enabled as well for the best user experienc
### `base_path`
-The base path for the [REST API](/reference/rest-api/reference).
+The base path for the [REST (JSON) API](/reference/rest-api/reference).
@@ -912,7 +912,7 @@ The default value is `/cubejs-api`.
### `http.cors`
-CORS settings for the Cube REST API can be configured by providing an object
+CORS settings for the Cube REST (JSON) API can be configured by providing an object
with options [from here][link-express-cors-opts]:
@@ -995,7 +995,7 @@ module.exports = {
### `context_to_api_scopes`
This function is used to select accessible [API scopes][ref-rest-scopes]
-and effectively allow or disallow access to REST API endpoints, based on
+and effectively allow or disallow access to REST (JSON) API endpoints, based on
the [security context][ref-sec-ctx].
Security context is provided as the first argument. An array of scopes that
@@ -1121,7 +1121,7 @@ environment documentation][ref-exec-environment-globals].
### `check_auth`
-Used in the [REST API][ref-rest-api]. Default implementation parses the [JSON
+Used in the [REST (JSON) API][ref-rest-api]. Default implementation parses the [JSON
Web Token][link-jwt] in the `Authorization` header, verifies it, and sets its
payload to the `securityContext`. [Read more][ref-sec-ctx] about JWT generation.
diff --git a/docs-mintlify/reference/configuration/environment-variables.mdx b/docs-mintlify/reference/configuration/environment-variables.mdx
index 929a8a2cdb2ad..d90e2fdea7651 100644
--- a/docs-mintlify/reference/configuration/environment-variables.mdx
+++ b/docs-mintlify/reference/configuration/environment-variables.mdx
@@ -940,7 +940,7 @@ You can set the time zone name in the [TZ Database Name][link-tzdb] format, e.g.
## `CUBEJS_DEFAULT_API_SCOPES`
-[API scopes][ref-rest-scopes] used to allow or disallow access to REST API
+[API scopes][ref-rest-scopes] used to allow or disallow access to REST (JSON) API
endpoints.
| Possible Values | Default in Development | Default in Production |
diff --git a/docs-mintlify/reference/control-plane-api.mdx b/docs-mintlify/reference/control-plane-api.mdx
index c2fd2668b6223..7eaaec75b633b 100644
--- a/docs-mintlify/reference/control-plane-api.mdx
+++ b/docs-mintlify/reference/control-plane-api.mdx
@@ -163,7 +163,7 @@ Example response:
Send a `POST` request to create a JWT token for accessing the
[Metadata API][ref-metadata-api]. The generated token is scoped specifically
to metadata endpoints (e.g., `/v1/data-sources`, `/v1/entities`) and cannot
-be used to query data via the [REST API][ref-rest-api]. This makes it suitable
+be used to query data via the [REST (JSON) API][ref-rest-api]. This makes it suitable
for integrations such as data catalogs and lineage tools that only need to
read data model metadata.
diff --git a/docs-mintlify/reference/core-data-apis/graphql-api/index.mdx b/docs-mintlify/reference/core-data-apis/graphql-api/index.mdx
index c98ac47e5040d..31176ebef9a43 100644
--- a/docs-mintlify/reference/core-data-apis/graphql-api/index.mdx
+++ b/docs-mintlify/reference/core-data-apis/graphql-api/index.mdx
@@ -13,14 +13,14 @@ Often, the GraphQL API is used to enable the [embedded analytics][cube-ea] use
case.
Under the hood, the GraphQL API is exposed via the `/graphql` endpoint of the
-[REST API][ref-rest-api].
+[REST (JSON) API][ref-rest-api].
See [GraphQL API reference][ref-ref-graphql-api] for the list of supported
requests and parameters.
-Compared to the [REST API][ref-rest-api], GraphQL API currently has the
+Compared to the [REST (JSON) API][ref-rest-api], GraphQL API currently has the
following limitations:
- No support for the [WebSockets transport][ref-websockets].
@@ -110,7 +110,7 @@ like this:
}
```
-The equivalent query to the REST API endpoint would look like this:
+The equivalent query to the REST (JSON) API endpoint would look like this:
```json
{
diff --git a/docs-mintlify/reference/core-data-apis/index.mdx b/docs-mintlify/reference/core-data-apis/index.mdx
index 5bd99d82b05a0..80a63ebc1270e 100644
--- a/docs-mintlify/reference/core-data-apis/index.mdx
+++ b/docs-mintlify/reference/core-data-apis/index.mdx
@@ -1,12 +1,12 @@
---
title: Core Data APIs
sidebarTitle: Overview
-description: "Query the Cube semantic layer using SQL, DAX, REST, or GraphQL protocols depending on your application needs."
+description: "Query the Cube semantic layer using SQL, DAX, REST (JSON), or GraphQL protocols depending on your application needs."
---
Core Data APIs
-Core Data APIs enable you to query and retrieve data from your Cube semantic layer using various protocols and formats, including SQL, DAX, REST, and GraphQL.
+Core Data APIs enable you to query and retrieve data from your Cube semantic layer using various protocols and formats, including SQL, DAX, REST (JSON), and GraphQL.
## Choosing the Right API
@@ -20,7 +20,7 @@ Core Data APIs enable you to query and retrieve data from your Cube semantic lay
* For internal or self-serve [business intelligence][cube-issbi], use [Semantic Layer Sync][ref-sls] if it supports your BI tools. Otherwise, connect via the [SQL API][ref-sql-api] directly
-* For [embedded analytics][cube-ea] and [real-time analytics][cube-rta], use [REST API][ref-rest-api] or [GraphQL API][ref-graphql-api]. When using the REST API, the [JavaScript SDK][ref-js-sdk] can simplify integration with your front-end code
+* For [embedded analytics][cube-ea] and [real-time analytics][cube-rta], use [REST (JSON) API][ref-rest-api] or [GraphQL API][ref-graphql-api]. When using the REST (JSON) API, the [JavaScript SDK][ref-js-sdk] can simplify integration with your front-end code
All Core Data APIs share common [querying concepts][ref-queries] and support authentication, security contexts, and access policies defined in your semantic layer.
@@ -65,7 +65,7 @@ tools][ref-viz-tools]:
| [User name and password][ref-auth-user-pass] | [DAX API][ref-dax-api]
[Semantic Layer Sync][ref-sls]
[SQL API][ref-sql-api] |
| [Kerberos][ref-auth-kerberos] and [NTLM][ref-auth-ntlm] | [DAX API][ref-dax-api] |
| [Identity provider][ref-auth-idp] | [Cube Cloud for Excel][ref-cube-cloud-for-excel]
[Cube Cloud for Sheets][ref-cube-cloud-for-sheets] |
-| [JSON Web Token][ref-auth-jwt] | [REST API][ref-rest-api]
[GraphQL API][ref-graphql-api] |
+| [JSON Web Token][ref-auth-jwt] | [REST (JSON) API][ref-rest-api]
[GraphQL API][ref-graphql-api] |
[cube-issbi]: https://cube.dev/use-cases/semantic-layer
[cube-ea]: https://cube.dev/use-cases/embedded-analytics
diff --git a/docs-mintlify/reference/core-data-apis/queries.mdx b/docs-mintlify/reference/core-data-apis/queries.mdx
index d531db3acf0ef..07ba7c3c86232 100644
--- a/docs-mintlify/reference/core-data-apis/queries.mdx
+++ b/docs-mintlify/reference/core-data-apis/queries.mdx
@@ -1,6 +1,6 @@
---
title: Querying data APIs
-description: Cross-cutting query behavior in Cube—default ordering and limits, query kinds, and how REST, GraphQL, and SQL APIs interpret them.
+description: Cross-cutting query behavior in Cube—default ordering and limits, query kinds, and how REST (JSON), GraphQL, and SQL APIs interpret them.
---
After creating a [data model][ref-data-model], you would like to *ask questions
@@ -16,7 +16,7 @@ The following defaults apply to all queries run by Cube.
### Order
-By default, for [REST API][ref-rest-api] and [GraphQL API][ref-graphql-api]
+By default, for [REST (JSON) API][ref-rest-api] and [GraphQL API][ref-graphql-api]
queries, Cube will apply ordering to [any query](#query-types) that does not
set it explicitly. The default heuristics are to sort the result set by a time
dimension, if any; otherwise, sort it by the first measure, if any; otherwise,
@@ -55,7 +55,7 @@ filters) are in the [UTC time zone][wiki-utc-time-zone]. Similarly, it will use
the same time zone for time dimension values in result sets. You can use the
[`CUBEJS_DEFAULT_TIMEZONE`](/reference/configuration/environment-variables#cubejs_default_timezone) environment variable to override it.
-You can also use the `timezone` option with [REST API][ref-rest-api-query-format-options]
+You can also use the `timezone` option with [REST (JSON) API][ref-rest-api-query-format-options]
or [GraphQL API][ref-ref-graphql-api-args] to specify the time zone for a query.
Also, you can use the [`SQL_UTILS` context variable][ref-sql-utils] to apply the
time zone conversion to dimensions that are not used as time dimensions in a query.
@@ -70,12 +70,12 @@ and the sections below for details on each query type.
| Query type | Supported by [APIs][ref-apis] | Supported in [Playground][ref-playground] |
| --- | --- | --- |
-| [Regular query](#regular-query) | [SQL API][ref-sql-api], [REST API][ref-rest-api], [GraphQL API][ref-graphql-api] | ✅ Yes |
+| [Regular query](#regular-query) | [SQL API][ref-sql-api], [REST (JSON) API][ref-rest-api], [GraphQL API][ref-graphql-api] | ✅ Yes |
| [Query with post-processing](#query-with-post-processing) | [SQL API][ref-sql-api] only | ❌ No |
| [Query with pushdown](#query-with-pushdown) | [SQL API][ref-sql-api] only | ❌ No |
-| [Compare date range query](#compare-date-range-query) | [REST API][ref-rest-api] only | ❌ No |
-| [Total query](#total-query) | [REST API][ref-rest-api] only | ❌ No |
-| [Ungrouped query](#ungrouped-query) | [SQL API][ref-sql-api], [REST API][ref-rest-api], [GraphQL API][ref-graphql-api] | ❌ No |
+| [Compare date range query](#compare-date-range-query) | [REST (JSON) API][ref-rest-api] only | ❌ No |
+| [Total query](#total-query) | [REST (JSON) API][ref-rest-api] only | ❌ No |
+| [Ungrouped query](#ungrouped-query) | [SQL API][ref-sql-api], [REST (JSON) API][ref-rest-api], [GraphQL API][ref-graphql-api] | ❌ No |
### Regular query
@@ -112,7 +112,7 @@ GROUP BY 1, 2, 3
LIMIT 10;
```
-The same query using the REST API syntax looks as follows:
+The same query using the REST (JSON) API syntax looks as follows:
```json
{
@@ -304,7 +304,7 @@ However, unlike regular queries, they provide a convenient way to retrieve
measure values for *more than one date range* for a time dimension.
You can make a compare date range query by using the `compareDateRange`
-option with the [REST API][ref-rest-api-query-format-options-tdf]. Note that
+option with the [REST (JSON) API][ref-rest-api-query-format-options-tdf]. Note that
you also need to set the `queryType` parameter of the [`/v1/load`
endpoint][ref-rest-api-load] to `multi`.
@@ -365,7 +365,7 @@ grouping. Measures will be rendered as their `sql` without any aggregation.
Time dimensions will be truncated by granularity as usual, however, not grouped by.
You can make a regular query ungrouped by using the `ungrouped` option with
-[REST API][ref-rest-api-query-format-options] or [GraphQL API][ref-ref-graphql-api-args].
+[REST (JSON) API][ref-rest-api-query-format-options] or [GraphQL API][ref-ref-graphql-api-args].
For the [SQL API][ref-sql-api], you can omit the `GROUP BY` statement from the
SQL API query.
diff --git a/docs-mintlify/reference/core-data-apis/rest-api/index.mdx b/docs-mintlify/reference/core-data-apis/rest-api/index.mdx
index 5c1365c8dd400..49eab2fbd1295 100644
--- a/docs-mintlify/reference/core-data-apis/rest-api/index.mdx
+++ b/docs-mintlify/reference/core-data-apis/rest-api/index.mdx
@@ -1,11 +1,11 @@
---
-title: REST API
+title: REST (JSON) API
description: "Deliver data from Cube over HTTP to front-end apps, notebooks, low-code tools, and automated jobs."
---
- REST API
+ REST (JSON) API
-REST API enables Cube to deliver data over the HTTP protocol to certain kinds of
+REST (JSON) API enables Cube to deliver data over the HTTP protocol to certain kinds of
data applications, including but not limited to the following ones:
- Most commonly, front-end applications
@@ -13,15 +13,15 @@ data applications, including but not limited to the following ones:
- [Low-code tools][ref-low-code], e.g., [Retool][ref-retool]
- Automated jobs
-Often, the REST API is used to enable [embedded analytics][cube-ea] and
+Often, the REST (JSON) API is used to enable [embedded analytics][cube-ea] and
[real-time analytics][cube-rta] use cases.
-See [REST API reference][ref-ref-rest-api] for the list of supported API endpoints.
+See [REST (JSON) API reference][ref-ref-rest-api] for the list of supported API endpoints.
Also, check [query format][ref-rest-query-format] for details about query syntax.
-You can find a mostly complete OpenAPI documentation for the REST API in the
+You can find a mostly complete OpenAPI documentation for the REST (JSON) API in the
linked [`openspec.yml` file][gh-cube-openspec] that you can use with tools like Swagger.
@@ -34,13 +34,13 @@ provides.
-REST API also provides endpoints for [GraphQL API][ref-graphql-api] and
+REST (JSON) API also provides endpoints for [GraphQL API][ref-graphql-api] and
[Orchestration API][ref-orchestration-api]. However, they target specific use
-cases and are not considered part of the REST API.
+cases and are not considered part of the REST (JSON) API.
## Transport
-The REST API supports the following transports:
+The REST (JSON) API supports the following transports:
| Transport | Description | When to use |
| --- | --- | --- |
@@ -49,7 +49,7 @@ The REST API supports the following transports:
### HTTP transport
-You can use the `curl` utility to execute requests to the REST API. Provide the [API
+You can use the `curl` utility to execute requests to the REST (JSON) API. Provide the [API
token](#authentication) in the `Authorization` header:
```bash
@@ -84,7 +84,7 @@ curl \
```
You can also use the [`jq` utility][link-jq-utility] to format responses
-from the REST API in your terminal:
+from the REST (JSON) API in your terminal:
```bash
curl \
@@ -103,7 +103,7 @@ curl \
http://localhost:4000/cubejs-api/v1/meta | jq
```
-You can also use the [JavaScript SDK][ref-javascript-sdk] to call the REST API
+You can also use the [JavaScript SDK][ref-javascript-sdk] to call the REST (JSON) API
from your JavaScript applications.
### WebSocket transport
@@ -154,15 +154,15 @@ data fetch using the WebSocket transport.
## Configuration
-REST API is enabled by default and secured using [API scopes][self-api-scopes]
+REST (JSON) API is enabled by default and secured using [API scopes][self-api-scopes]
and [CORS][self-cors].
-To find your REST API endpoint in Cube Cloud, go to the **Overview**
-page, click **API credentials**, and choose the **REST API** tab.
+To find your REST (JSON) API endpoint in Cube Cloud, go to the **Overview**
+page, click **API credentials**, and choose the **REST (JSON) API** tab.
### Base path
-By default, all REST API endpoints are prefixed with a base path of
+By default, all REST (JSON) API endpoints are prefixed with a base path of
`/cubejs-api`, e.g., the `/v1/load` endpoint will be available at
`/cubejs-api/v1/load`.
@@ -177,13 +177,13 @@ configuration option.
### API scopes
-Each REST API endpoint belongs to an API scope, e.g., the `/v1/load` endpoint
+Each REST (JSON) API endpoint belongs to an API scope, e.g., the `/v1/load` endpoint
belongs to the `data` scope. API scopes allow to secure access to API endpoints
by making them accessible to specific users only or disallowing access for
everyone. By default, API endpoints in all scopes, except for `jobs`, are
accessible for everyone.
-| API scope | REST API endpoints | Accessible by default? |
+| API scope | REST (JSON) API endpoints | Accessible by default? |
| --- | --- | --- |
| `meta` | [`/v1/meta`][ref-ref-meta], [Metadata API][ref-ref-metadata] | ✅ Yes |
| `data` | [`/v1/load`][ref-ref-load], [`/v1/cubesql`][ref-ref-cubesql] | ✅ Yes |
@@ -219,7 +219,7 @@ module.exports = {
### CORS
-REST API supports [Cross-Origin Resource Sharing (CORS)][mdn-cors]. By default,
+REST (JSON) API supports [Cross-Origin Resource Sharing (CORS)][mdn-cors]. By default,
requests from any origin (`*`) are allowed.
You can configure CORS using the [`http.cors`][ref-config-cors] configuration
@@ -254,7 +254,7 @@ you can still use it to pass a security context.
### Error handling
-Cube REST API has basic errors and HTTP Error codes for all requests.
+Cube REST (JSON) API has basic errors and HTTP Error codes for all requests.
| Status | Error response | Description |
| ------ | ------------------------------ | ---------------------------------------------------------------------------------------------------- |
@@ -275,7 +275,7 @@ change during one single interaction.
## Cache control
-[`/v1/load`][ref-ref-load] and [`/v1/cubesql`][ref-ref-cubesql] endpoints of the REST API
+[`/v1/load`][ref-ref-load] and [`/v1/cubesql`][ref-ref-cubesql] endpoints of the REST (JSON) API
allow to control the in-memory cache behavior. The following querying strategies with regards to
the cache are supported:
@@ -288,13 +288,13 @@ the cache are supported:
## `Continue wait`
-If the request takes too long to be processed, the REST API responds with
+If the request takes too long to be processed, the REST (JSON) API responds with
`{ "error": "Continue wait" }` and the status code 200.
This is part of the long polling mechanism:
- After an API instance receives a request, it adds the query to the query queue.
- If the query takes too long to be processed, the API instance will respond with `Continue wait`. Receiving `Continue wait` doesn't mean the database query has been canceled, and it's actually still being processed by Cube.
-- Clients who received `Continue wait` should continuously retry the same query in a loop until they get a successful result. Database queries that are no longer retried by clients will be marked as orphaned and removed from the query queue. Subsequent calls to the REST API are idempotent and don't lead to scheduling new database queries if not required by the [`refresh_key`][ref-schema-ref-cube-refresh-key].
+- Clients who received `Continue wait` should continuously retry the same query in a loop until they get a successful result. Database queries that are no longer retried by clients will be marked as orphaned and removed from the query queue. Subsequent calls to the REST (JSON) API are idempotent and don't lead to scheduling new database queries if not required by the [`refresh_key`][ref-schema-ref-cube-refresh-key].
Possible reasons of `Continue wait`:
- The query is too heavy for the upstream database, i.e., it takes too long to be processed.
diff --git a/docs-mintlify/reference/core-data-apis/rest-api/query-format.mdx b/docs-mintlify/reference/core-data-apis/rest-api/query-format.mdx
index 652b51811b6a1..2a6ecda365681 100644
--- a/docs-mintlify/reference/core-data-apis/rest-api/query-format.mdx
+++ b/docs-mintlify/reference/core-data-apis/rest-api/query-format.mdx
@@ -1,9 +1,9 @@
---
-title: Query format in the REST API
-description: Field-by-field guide to REST `/load` query JSON, including members, filters, time dimensions, limits, totals, and data blending arrays.
+title: Query format in the REST (JSON) API
+description: Field-by-field guide to the REST (JSON) API `/load` query JSON, including members, filters, time dimensions, limits, totals, and data blending arrays.
---
-Queries to the REST API are plain JavaScript objects, describing an analytics
+Queries to the REST (JSON) API are plain JavaScript objects, describing an analytics
query. The basic elements of a query (query members) are `measures`, `dimensions`,
and `segments`.
diff --git a/docs-mintlify/reference/core-data-apis/rest-api/reference.mdx b/docs-mintlify/reference/core-data-apis/rest-api/reference.mdx
index 3aed19103d90f..76a4c68436564 100644
--- a/docs-mintlify/reference/core-data-apis/rest-api/reference.mdx
+++ b/docs-mintlify/reference/core-data-apis/rest-api/reference.mdx
@@ -1,6 +1,6 @@
---
-title: REST API reference
-description: "The REST API provides the following endpoints."
+title: REST (JSON) API reference
+description: "The REST (JSON) API provides the following endpoints."
---
@@ -12,7 +12,7 @@ By default, it's `/cubejs-api`.
## `{base_path}/v1/load`
-Run the query to the REST API and get the results.
+Run the query to the REST (JSON) API and get the results.
| Parameter | Description | Required |
| ----------- | --------------------------------------------------------------------------------------------------------------------- | --- |
@@ -110,7 +110,7 @@ Request parameters:
| Parameter, type | Description | Required |
| --- | --- | --- |
-| `format`, `string` | Query format:
`sql` for [SQL API][ref-sql-api] queries,
`rest` for [REST API][ref-rest-api] queries (default) | ❌ No |
+| `format`, `string` | Query format:
`sql` for [SQL API][ref-sql-api] queries,
`rest` for [REST (JSON) API][ref-rest-api] queries (default) | ❌ No |
| `query`, `string` | Query as an URL-encoded JSON object or SQL query | ✅ Yes |
| `disable_post_processing`, `boolean` | Flag that affects query planning, `true` or `false` | ❌ No |
@@ -142,7 +142,7 @@ the query can't be run without post-processing.
### Example
-Request with a query in the REST API format:
+Request with a query in the REST (JSON) API format:
```bash
curl \
@@ -247,9 +247,9 @@ Response:
Takes an API query in the specified input format and converts it to the specified
output format. Currently, only conversion from [SQL API](/reference/core-data-apis/sql-api) queries to
-[REST API](/reference/core-data-apis/rest-api) queries is supported.
+[REST (JSON) API](/reference/core-data-apis/rest-api) queries is supported.
-This endpoint is useful for translating SQL API queries into equivalent REST API
+This endpoint is useful for translating SQL API queries into equivalent REST (JSON) API
queries that can be used with the [`/v1/load`](#base_path%2Fv1%2Fload) endpoint.
Request parameters (JSON body):
@@ -257,7 +257,7 @@ Request parameters (JSON body):
| Parameter, type | Description | Required |
| --- | --- | --- |
| `input`, `string` | Input query format. Use `sql` for [SQL API](/reference/core-data-apis/sql-api) queries | ✅ Yes |
-| `output`, `string` | Output query format. Use `rest` for [REST API](/reference/core-data-apis/rest-api) queries | ✅ Yes |
+| `output`, `string` | Output query format. Use `rest` for [REST (JSON) API](/reference/core-data-apis/rest-api) queries | ✅ Yes |
| `query`, `string` | Input query in the specified format | ✅ Yes |
The response will contain a JSON object with the following properties:
@@ -265,12 +265,12 @@ The response will contain a JSON object with the following properties:
| Property, type | Description |
| --- | --- |
| `status`, `string` | Query conversion status, `ok` or `error` |
-| `query`, `object` | Converted query in the [REST API query format](/reference/core-data-apis/rest-api/query-format) (only present when `status` is `ok`) |
+| `query`, `object` | Converted query in the [REST (JSON) API query format](/reference/core-data-apis/rest-api/query-format) (only present when `status` is `ok`) |
| `error`, `string` | Error message (only present when `status` is `error`) |
An error will be returned if the input query can't be converted to the specified
output format, e.g., if the SQL API query requires post-processing on top of
-REST API capabilities or if the SQL API query results in multiple REST API queries.
+REST (JSON) API capabilities or if the SQL API query results in multiple REST (JSON) API queries.
### Example
diff --git a/docs-mintlify/reference/core-data-apis/sql-api/index.mdx b/docs-mintlify/reference/core-data-apis/sql-api/index.mdx
index 83a60c55cf85b..897c489f59213 100644
--- a/docs-mintlify/reference/core-data-apis/sql-api/index.mdx
+++ b/docs-mintlify/reference/core-data-apis/sql-api/index.mdx
@@ -21,7 +21,7 @@ The SQL API supports the following transports:
| Transport | Description | When to use |
| --- | --- | --- |
| Postgres | Same protocol that is used by the `psql` utility and other Postgres clients | Use by default |
-| HTTP | JSON-based protocol that is also used by the [REST API][ref-rest-api] | Use when you need to run a SQL API query from an embedded analytics application and REST API is not an option |
+| HTTP | JSON-based protocol that is also used by the [REST (JSON) API][ref-rest-api] | Use when you need to run a SQL API query from an embedded analytics application and REST (JSON) API is not an option |
### Postgres protocol
@@ -225,7 +225,7 @@ limit.
You can use the `cube_cache` session variable with the [`SET` command][ref-set-command]
to control [in-memory cache][ref-caching] behavior.
-It works the same way as [cache control in the REST API][ref-rest-cache-control].
+It works the same way as [cache control in the REST (JSON) API][ref-rest-cache-control].
Example:
diff --git a/docs-mintlify/reference/core-data-apis/sql-api/joins.mdx b/docs-mintlify/reference/core-data-apis/sql-api/joins.mdx
index 0b25778f14b3a..042c0e575dc10 100644
--- a/docs-mintlify/reference/core-data-apis/sql-api/joins.mdx
+++ b/docs-mintlify/reference/core-data-apis/sql-api/joins.mdx
@@ -85,7 +85,7 @@ in a data model while using provided cubes as [join hints][ref-join-hints].
For example, the following query joins the `orders` and `products` tables under
the hood on `orders.product_id = products.id`, exactly the same way as the
-REST API query does:
+REST (JSON) API query does:
```sql
cube=> SELECT p.name, SUM(o.count) FROM orders o LEFT JOIN products p ON o.__cubeJoinField = p.__cubeJoinField GROUP BY 1 LIMIT 5;
@@ -114,7 +114,7 @@ cube=> SELECT p.name, sum(o.count) FROM orders o CROSS JOIN products p GROUP BY
```
In the resulting query plan, you won't see any joins as you can't see those for
-REST API queries either:
+REST (JSON) API queries either:
```sql
cube=> EXPLAIN SELECT p.name, sum(o.count) FROM orders o LEFT JOIN products p ON o.__cubeJoinField = p.__cubeJoinField GROUP BY 1 LIMIT 5;
diff --git a/docs-mintlify/reference/core-data-apis/sql-api/query-format.mdx b/docs-mintlify/reference/core-data-apis/sql-api/query-format.mdx
index 6dc2a5ab976c2..15b8381ccf58b 100644
--- a/docs-mintlify/reference/core-data-apis/sql-api/query-format.mdx
+++ b/docs-mintlify/reference/core-data-apis/sql-api/query-format.mdx
@@ -110,7 +110,7 @@ GROUP BY 1
```
For this query, the SQL API would transform `SELECT` query fragments into a [regular
-query][ref-regular-queries]. It can be represented as follows in the REST API query
+query][ref-regular-queries]. It can be represented as follows in the REST (JSON) API query
format:
```json
@@ -327,7 +327,7 @@ Automatic use of `GROUP BY` is disabled by default.
Whenever query pushdown is enabled, such query would run as ungrouped query.
-As with REST API such queries do not use `GROUP BY` and render measures as if those would be grouped by primary key of a cube.
+As with REST (JSON) API such queries do not use `GROUP BY` and render measures as if those would be grouped by primary key of a cube.
diff --git a/docs-mintlify/reference/data-modeling/data-access-policies.mdx b/docs-mintlify/reference/data-modeling/data-access-policies.mdx
index fd19c8e1825ef..5698a33e556a5 100644
--- a/docs-mintlify/reference/data-modeling/data-access-policies.mdx
+++ b/docs-mintlify/reference/data-modeling/data-access-policies.mdx
@@ -447,7 +447,7 @@ cube(`orders`, {
For convenience, row filters are configured using the same format as [filters in
-REST API][ref-rest-query-filters] queries, allowing to use the same set of
+REST (JSON) API][ref-rest-query-filters] queries, allowing to use the same set of
[filter operators][ref-rest-query-ops], e.g., `equals`, `contains`, `gte`, etc.
You can also use `and` and `or` parameters to combine multiple filters into
[boolean logical operators][ref-rest-boolean-ops].
diff --git a/docs-mintlify/reference/data-modeling/pre-aggregations.mdx b/docs-mintlify/reference/data-modeling/pre-aggregations.mdx
index 31989793c0794..04eded6b6d99d 100644
--- a/docs-mintlify/reference/data-modeling/pre-aggregations.mdx
+++ b/docs-mintlify/reference/data-modeling/pre-aggregations.mdx
@@ -102,7 +102,7 @@ multiple cubes. In case of multiple cubes being involved, the join query will be
built according to the standard rules of cubes joining.
Rollups are selected for querying based on properties found in queries made to
-the Cube REST API. A thorough explanation can be found under [Getting Started
+the Cube REST (JSON) API. A thorough explanation can be found under [Getting Started
with Pre-Aggregations][ref-caching-preaggs-target].
diff --git a/docs-mintlify/reference/javascript-sdk/angular.mdx b/docs-mintlify/reference/javascript-sdk/angular.mdx
index 3877c108c3114..6933513ba6c65 100644
--- a/docs-mintlify/reference/javascript-sdk/angular.mdx
+++ b/docs-mintlify/reference/javascript-sdk/angular.mdx
@@ -4,7 +4,7 @@ description: Cube is visualization-agnostic, so you can build any user interface
---
You can directly query Cube using the
-JSON [query format](/reference/rest-api/query-format) via the [REST API](/reference/rest-api/reference)
+JSON [query format](/reference/rest-api/query-format) via the [REST (JSON) API](/reference/rest-api/reference)
or
[WebSockets](/reference/recipes/real-time-data-fetch#web-sockets)
and visualize analytical data with tools of your choice. However, it’s much
diff --git a/docs-mintlify/reference/javascript-sdk/index.mdx b/docs-mintlify/reference/javascript-sdk/index.mdx
index e43688b881061..a03f5137f7d89 100644
--- a/docs-mintlify/reference/javascript-sdk/index.mdx
+++ b/docs-mintlify/reference/javascript-sdk/index.mdx
@@ -9,7 +9,7 @@ Cube is visualization-agnostic, so you can build any user interface for your
application.
You can directly query Cube using the
-JSON [query format](/reference/rest-api/query-format) via the [REST API](/reference/rest-api/reference)
+JSON [query format](/reference/rest-api/query-format) via the [REST (JSON) API](/reference/rest-api/reference)
or
[WebSockets](/reference/recipes/real-time-data-fetch#web-sockets)
and visualize analytical data with tools of your choice. However, it's much
@@ -97,7 +97,7 @@ Now you can build your application from scratch or connect to one of our
## Data format
-The [REST API][ref-rest-api] uses JSON to serialize and transfer result sets.
+The [REST (JSON) API][ref-rest-api] uses JSON to serialize and transfer result sets.
Numbers, e.g., values of numeric measures, are represented as strings.
By default, JavaScript SDK also returns numbers as strings because an automatic
diff --git a/docs-mintlify/reference/javascript-sdk/react.mdx b/docs-mintlify/reference/javascript-sdk/react.mdx
index 9b7e1aef1c8d1..5e1466ff906b5 100644
--- a/docs-mintlify/reference/javascript-sdk/react.mdx
+++ b/docs-mintlify/reference/javascript-sdk/react.mdx
@@ -4,7 +4,7 @@ description: Cube is visualization-agnostic, so you can build any user interface
---
You can directly query Cube using the
-JSON [query format](/reference/rest-api/query-format) via the [REST API](/reference/rest-api/reference)
+JSON [query format](/reference/rest-api/query-format) via the [REST (JSON) API](/reference/rest-api/reference)
or
[WebSockets](/reference/recipes/real-time-data-fetch#web-sockets)
and visualize analytical data with tools of your choice. However, it's much
diff --git a/docs-mintlify/reference/javascript-sdk/vue.mdx b/docs-mintlify/reference/javascript-sdk/vue.mdx
index 821de9f9216a8..1f3fd8e149d89 100644
--- a/docs-mintlify/reference/javascript-sdk/vue.mdx
+++ b/docs-mintlify/reference/javascript-sdk/vue.mdx
@@ -4,7 +4,7 @@ description: Cube is visualization-agnostic, so you can build any user interface
---
You can directly query Cube using the
-JSON [query format](/reference/rest-api/query-format) via the [REST API](/reference/rest-api/reference)
+JSON [query format](/reference/rest-api/query-format) via the [REST (JSON) API](/reference/rest-api/reference)
or
[WebSockets](/reference/recipes/real-time-data-fetch#web-sockets)
and visualize analytical data with tools of your choice. However, it's much
diff --git a/docs-mintlify/reference/orchestration-api/airflow.mdx b/docs-mintlify/reference/orchestration-api/airflow.mdx
index dc6ba2887cece..15335a27c0e66 100644
--- a/docs-mintlify/reference/orchestration-api/airflow.mdx
+++ b/docs-mintlify/reference/orchestration-api/airflow.mdx
@@ -26,7 +26,7 @@ the following operators.
### CubeQueryOperator
`CubeQueryOperator` is used to query Cube via the
-[`/v1/load`][ref-load-endpoint] endpoint of the [REST API][ref-rest-api].
+[`/v1/load`][ref-load-endpoint] endpoint of the [REST (JSON) API][ref-rest-api].
It supports the following options:
diff --git a/docs-mintlify/reference/orchestration-api/dagster.mdx b/docs-mintlify/reference/orchestration-api/dagster.mdx
index ebef559adffed..f71bd45bf25e6 100644
--- a/docs-mintlify/reference/orchestration-api/dagster.mdx
+++ b/docs-mintlify/reference/orchestration-api/dagster.mdx
@@ -32,7 +32,7 @@ Cube and Dagster integration package was originally contributed by
The package provides the `CubeResource` class:
- For querying Cube via the [`/v1/load`][ref-load-endpoint] endpoint of the
- [REST API][ref-rest-api].
+ [REST (JSON) API][ref-rest-api].
- For triggering pre-aggregation builds via the
[`/v1/pre-aggregations/jobs`][ref-ref-jobs-endpoint] endpoint of the
[Orchestration API][ref-orchestration-api].
diff --git a/docs-mintlify/reference/orchestration-api/index.mdx b/docs-mintlify/reference/orchestration-api/index.mdx
index ece7a745c0286..9a0fc9a1f7a50 100644
--- a/docs-mintlify/reference/orchestration-api/index.mdx
+++ b/docs-mintlify/reference/orchestration-api/index.mdx
@@ -21,8 +21,8 @@ implementing [real-time analytics][cube-rta], consider pulling data from
upstream data sources with [lambda pre-aggregations][ref-lambda-pre-aggs].
Under the hood, the Orchestration API is exposed via the
-[`/v1/pre-aggregations/jobs`][ref-ref-jobs-endpoint] endpoint of the [REST
-API][ref-rest-api].
+[`/v1/pre-aggregations/jobs`][ref-ref-jobs-endpoint] endpoint of the
+[REST (JSON) API][ref-rest-api].
## Supported tools
diff --git a/docs-mintlify/reference/orchestration-api/prefect.mdx b/docs-mintlify/reference/orchestration-api/prefect.mdx
index 40c0442952949..01852f1d4071e 100644
--- a/docs-mintlify/reference/orchestration-api/prefect.mdx
+++ b/docs-mintlify/reference/orchestration-api/prefect.mdx
@@ -36,7 +36,7 @@ we're very grateful.
The package provides the following tasks:
- `run_query` for querying Cube via the [`/v1/load`][ref-load-endpoint] endpoint
- of the [REST API][ref-rest-api].
+ of the [REST (JSON) API][ref-rest-api].
- `build_pre_aggregations` for triggering pre-aggregation builds via the
[`/v1/pre-aggregations/jobs`][ref-ref-jobs-endpoint] endpoint of the
[Orchestration API][ref-orchestration-api].
diff --git a/docs/content/product/embedding/creator-mode.mdx b/docs/content/product/embedding/creator-mode.mdx
index febd17ad47d6c..be7d9dd119386 100644
--- a/docs/content/product/embedding/creator-mode.mdx
+++ b/docs/content/product/embedding/creator-mode.mdx
@@ -17,33 +17,32 @@ In creator mode, you embed the full Cube application instead of individual dashb
- Access all workbook and dashboard functionality
- Build custom analytics experiences
-To enable creator mode, you need to pass `creatorMode: true`, `tenantId`, and `tenantName` to the [Generate Session API][ref-generate-session] when generating an embed session. The tenant ID is used to scope all content that the user creates to a specific tenant, while the tenant name is a human-readable friendly name displayed in the user interface.
+To enable creator mode, pass `creatorMode: true` to the [Generate Session API][ref-generate-session] when generating an embed session. Optionally, pass `embedTenantName` to scope content to a specific embed tenant — by default, creator mode uses the current tenant's name.
-## Tenant ID and Name
+## Embed tenant name
-When using creator mode, you must provide both `tenantId` and `tenantName` parameters when generating a session:
+`embedTenantName` is an optional parameter on the Generate Session API used to scope all content (dashboards, workbooks, etc.) that users create within the embedded application to a specific embed tenant. This ensures proper data isolation in multi-tenant scenarios.
-- **`tenantId`** – Used to scope all content (dashboards, workbooks, etc.) that users create within the embedded application to a specific tenant. This ensures proper data isolation in multi-tenant scenarios.
-- **`tenantName`** – A human-readable friendly name for the tenant that will be displayed in the user interface.
+When `embedTenantName` is omitted in creator mode, the session defaults to the current tenant, so most setups don't need to set it.
+
+The value must be lowercase, start with a letter, end with a letter or number, and only contain letters, numbers, or hyphens (length 5–36).
## Using creator mode
To use creator mode and embed an app:
1. **Set the embed type to "App"** in the form
-2. **Fill in Deployment ID**, **Tenant ID**, **Tenant Name**, and either **External ID** or **Internal ID** (email)
+2. **Fill in Deployment ID** and either **External ID** or **Internal ID** (email). Optionally provide an **Embed Tenant Name** to scope content to a specific embed tenant
3. **Click "Generate Session & Embed"** — the request automatically includes `creatorMode: true` for app embeddings
4. The app is embedded at `/embed/d/{deploymentId}/app?session={sessionId}` and displayed in the iframe
-Creator mode is enabled automatically when the embed type is "app"; no additional configuration is needed. The tenant ID is required to scope all dashboards and content created by the user to the specific tenant, and the tenant name will be displayed in the user interface.
+Creator mode is enabled automatically when the embed type is "app"; no additional configuration is needed.
### Example
```javascript
const API_KEY = "YOUR_API_KEY";
const DEPLOYMENT_ID = 32;
-const TENANT_ID = "tenant-123";
-const TENANT_NAME = "Acme Corporation";
const session = await fetch(
"https://your-account.cubecloud.dev/api/v1/embed/generate-session",
@@ -57,8 +56,8 @@ const session = await fetch(
deploymentId: DEPLOYMENT_ID,
externalId: "user@example.com",
creatorMode: true,
- tenantId: TENANT_ID,
- tenantName: TENANT_NAME,
+ // Optional — defaults to the current tenant when omitted:
+ // embedTenantName: "acme-corp",
}),
},
);
@@ -88,7 +87,7 @@ For a complete working example of embedding, including creator mode, check out t
- A full working example of iframe embedding
- Implementation of signed iframe embedding with session generation
-- Support for creator mode with tenant ID and tenant name
+- Support for creator mode with an optional embed tenant name
- A React-based UI for testing embedding functionality
- Backend server that securely handles API key authentication