> ## Documentation Index
> Fetch the complete documentation index at: https://docs.activeviam.com/llms.txt
> Use this file to discover all available pages before exploring further.

# REST APIs

## Atoti & Database

The [Atoti REST API](/engine/rest/6.1.20/query-rest-api-v10/queries-the-cube-using-an-mdx-query-either-select-or-drillthrough) allows you to run queries against the cube. To prepare
these queries and understand the structure of the cube, the [Discovery REST API](/engine/rest/6.1.20/discovery-rest-api/get-discovery-information) provides descriptions of the cube hierarchies and
measures. You can also add new MDX members and measures using the [Configuration REST API](/engine/rest/6.1.20/configuration-rest-api/gets-all-defined-editable-calculated-members-defined-in-a-given-activepivot).

When exposed, the [Database REST API](/engine/rest/6.1.20/database-rest-api/create-a-new-branch) is accessible for querying and
even editing, using Mongo-like requests.
Branches are supported and can be manipulated from the API.

## Content Service

The Content Service offers a [REST API](/engine/rest/6.1.20/content-server-rest-api/retrieves-the-entry-found-at-the-given-path) that allows you to manipulate the folders and
files stored in it. Additionally, you can import and export a given folder of documents.

## DataExport

The [Data Export](/engine/rest/6.1.20/data-export/post-activeviampivotrestv10cubedataexportdownload) service allows you to download the result of MDX queries
to a stream or directly export them to files in the server or in the cloud. The exports can be customized.

## Diagnostics

The Diagnostics REST API provides a way to investigate measure lineage (various measures implemented, and dependencies between them)
for the cubes available within your project.

## GAQ (Experimental)

The [GAQ REST API](gaq_rest_api) ([OpenAPI](/engine/rest/6.1.20/gaq-query-rest-api-experimental/executes-a-gaq-and-returns-the-result-as-an-arrow-stream)) provides a request-response API for executing GetAggregatesQuery operations against Atoti cubes. Results are returned in Apache Arrow format. This is an experimental API suitable for one-time queries and testing scenarios.

## Continuous GAQ (Experimental)

The [Continuous GAQ REST API](continuous_gaq_rest_api) ([OpenAPI](/engine/rest/6.1.20/continuous-gaq-query-rest-api-experimental/create-gaq-publisher)) enables programmatic execution of OLAP queries with continuous streaming updates. Results are delivered in Apache Arrow format for efficient data transfer, making it ideal for real-time analytics and data processing applications.

<Warning>
  Both the GAQ and Continuous GAQ REST APIs are experimental and may change in future versions without notice.
</Warning>

## Query History (Experimental)

The [Query History REST API](/engine/rest/6.1.20/query-history-rest-api-experimental/retrieve-multiple-queries-with-optional-filtering) allows you to browse, filter, cancel, and delete recorded query executions. See the [Query History Starter](../starters/atoti_query_history_starter) for setup instructions.

<Warning>
  The Query History REST API is experimental and may change in future versions without notice.
</Warning>

## XMLA Endpoint

The [XMLA Endpoint](/engine/rest/6.1.20/xmla-api/execute-xmla-request) provides an XML for Analysis (XMLA) interface for executing MDX queries and performing OLAP discovery operations. This endpoint enables connectivity from OLAP clients like Microsoft Excel.

The XMLA endpoint supports:

* **MDX query execution**: Submit MDX queries and retrieve results
* **OLAP discovery**: Discover cube metadata, dimensions, hierarchies, and measures
* **Session management**: Create and manage XMLA sessions for stateful operations

For more details, see the [XMLA endpoint documentation](/engine/rest/6.1.20/xmla-api/execute-xmla-request).

## JWT Endpoint

The [JWT Endpoint](/engine/rest/6.1.20/jwt-api/get-jwt-token) provides an endpoint for retrieving JSON Web Tokens (JWT) for authenticated users.

For more details, see the [JWT endpoint documentation](/engine/rest/6.1.20/jwt-api/get-jwt-token).

## API versioning and discovery

### What are API versions and revisions

Atoti REST APIs use a two-level versioning system:

* **Versions** (for example, v10, v9): Major API versions that may introduce breaking changes. Different versions can coexist in the same deployment.
* **Revisions**: Fine-grained tracking within a version. Revisions track non-breaking changes such as new endpoints, optional parameters, or additional response fields.

The version API endpoint allows clients to discover which API versions and revisions are available in a deployment, enabling feature detection and graceful degradation.

### How to query API versions

The version API is available at `/versions/rest` and accepts an optional `includeRevision` query parameter:

```http theme={"languages":{"custom":["/engine/python-sdk/0.9/languages/pycon.tmLanguage.json"]}}
GET /versions/rest
```

This returns basic version information without revision numbers:

```json theme={"languages":{"custom":["/engine/python-sdk/0.9/languages/pycon.tmLanguage.json"]}}
{
  "version": 1,
  "serverVersion": "6.1.13",
  "apis": {
    "pivot": {
      "versions": [
        {"id": "v10", "restPath": "/activeviam/pivot/rest/v10"},
        {"id": "v9", "restPath": "/activeviam/pivot/rest/v9"}
      ]
    }
  }
}
```

To include revision information, add the `includeRevision=true` parameter:

```http theme={"languages":{"custom":["/engine/python-sdk/0.9/languages/pycon.tmLanguage.json"]}}
GET /versions/rest?includeRevision=true
```

This returns extended version information with revision numbers:

```json theme={"languages":{"custom":["/engine/python-sdk/0.9/languages/pycon.tmLanguage.json"]}}
{
  "version": 2,
  "serverVersion": "6.1.13",
  "apis": {
    "pivot": {
      "versions": [
        {"id": "v10", "restPath": "/activeviam/pivot/rest/v10", "revision": 2}
      ]
    }
  }
}
```

<Note>
  The response DTO version changes from 1 to 2 when revision information is included.
</Note>

### When revisions are incremented

Revisions are incremented when non-breaking changes are added to an API version:

* **New endpoints**: Adding a new REST endpoint to an existing version
* **Optional parameters**: Adding optional query parameters or request body fields
* **Response extensions**: Adding new optional fields to response objects

Revisions are **not** incremented for:

* **Breaking changes**: These require a new major version
* **Bug fixes**: Internal fixes that do not change the API contract
* **Documentation updates**: Changes to documentation without API changes

### Backward compatibility guarantee

The revision system maintains strict backward compatibility:

* **Lower revisions**: All features from lower revisions remain available in higher revisions
* **Optional inclusion**: The revision field only appears when explicitly requested with `includeRevision=true`
* **No breaking changes**: Incrementing a revision never breaks existing clients
* **Version independence**: Different versions maintain separate revision counters

Clients can safely ignore revision information if they do not need feature detection. The API continues to work without checking revisions.

## Miscellaneous

The [Version REST API](/engine/rest/6.1.20/version-rest-api/get-all-deployed-apis-and-their-versions) offers details about the exposed services, their versions and the URLs
of these services. For information about API versioning and revisions, see [API versioning and discovery](#api-versioning-and-discovery).
