Back to Gitlabhq

Product analytics API

doc/api/product_analytics.md

18.11.23.6 KB
Original Source

{{< details >}}

  • Tier: Ultimate
  • Offering: GitLab.com, GitLab Self-Managed
  • Status: Beta

{{< /details >}}

{{< history >}}

  • Introduced in GitLab 15.4 with a flag named cube_api_proxy. Disabled by default.
  • cube_api_proxy removed and replaced with product_analytics_internal_preview in GitLab 15.10.
  • product_analytics_internal_preview replaced with product_analytics_dashboards in GitLab 15.11.
  • product_analytics_dashboards enabled by default in GitLab 16.11.
  • Feature flag product_analytics_dashboards removed in GitLab 17.1.
  • Changed to beta in GitLab 17.5 with a flag named product_analytics_features.

{{< /history >}}

[!flag] The availability of this feature is controlled by a feature flag. For more information, see the history. This feature is not ready for production use.

Use this API to track user behavior and application usage.

[!note] Make sure to define the cube_api_base_url and cube_api_key application settings first using the API.

Create a Cube query request

Creates a query request to the Cube API and generates an access token.

plaintext
POST /projects/:id/product_analytics/request/load
POST /projects/:id/product_analytics/request/dry-run
AttributeTypeRequiredDescription
idintegeryesThe ID of a project that the current user has read access to.
include_tokenbooleannoWhether to include the access token in the response. (Only required for funnel generation.)

Request body

The body of the load request must be a valid Cube query.

[!note] When measuring TrackedEvents, you must use TrackedEvents.* for dimensions and timeDimensions. The same rule applies when measuring Sessions.

Tracked events example

json
{
  "query": {
    "measures": [
      "TrackedEvents.count"
    ],
    "timeDimensions": [
      {
        "dimension": "TrackedEvents.utcTime",
        "dateRange": "This week"
      }
    ],
    "order": [
      [
        "TrackedEvents.count",
        "desc"
      ],
      [
        "TrackedEvents.docPath",
        "desc"
      ],
      [
        "TrackedEvents.utcTime",
        "asc"
      ]
    ],
    "dimensions": [
      "TrackedEvents.docPath"
    ],
    "limit": 23
  },
  "queryType": "multi"
}

Sessions example

json
{
  "query": {
    "measures": [
      "Sessions.count"
    ],
    "timeDimensions": [
      {
        "dimension": "Sessions.startAt",
        "granularity": "day"
      }
    ],
    "order": {
      "Sessions.startAt": "asc"
    },
    "limit": 100
  },
  "queryType": "multi"
}

Retrieve Cube metadata

Retrieves Cube metadata for analytics data.

plaintext
GET /projects/:id/product_analytics/request/meta
AttributeTypeRequiredDescription
idintegeryesThe ID of a project that the current user has read access to.