List metrics
GET /metrics. Parameters, permissions, request and response schemas.
GET /metrics
List metrics. Requires the REST read token ability. The bearer token selects the Team; a supplied team_id cannot switch tenants. Additional role, entity-policy and plan requirements vary by operation.
Authentication
Use a team API key as Authorization: Bearer YOUR_API_KEY. The token ability and the user’s role must both allow this operation. See authentication.
{
"ability": "read",
"team": "Token-bound Team",
"authorization": "Additional role, entity-policy and plan requirements vary by operation."
}Parameters
| Name | Location | Required | Description |
|---|---|---|---|
page[number] | query | No | Page number, starting at 1. |
page[size] | query | No | Results per page. Values above the configured maximum are capped. |
sort | query | No | Comma-separated sort fields; prefix a field with - for descending order. Allowed: id, name, winning_direction, type, project_id. |
filter[id] | query | No | Filter by id. Values use the endpoint’s configured matching; comma-separated values are supported by standard exact filters. |
filter[project_id] | query | No | Filter by project_id. Values use the endpoint’s configured matching; comma-separated values are supported by standard exact filters. |
filter[name] | query | No | Filter by name. Values use the endpoint’s configured matching; comma-separated values are supported by standard exact filters. |
filter[winning_direction] | query | No | Filter by winning_direction. Values use the endpoint’s configured matching; comma-separated values are supported by standard exact filters. |
filter[type] | query | No | Filter by type. Values use the endpoint’s configured matching; comma-separated values are supported by standard exact filters. |
page[number]
{
"type": "integer",
"minimum": 1,
"default": 1
}page[size]
{
"type": "integer",
"minimum": 1,
"maximum": 30,
"default": 30
}sort
{
"type": "string"
}filter[id]
{
"type": "string"
}filter[project_id]
{
"type": "string"
}filter[name]
{
"type": "string"
}filter[winning_direction]
{
"type": "string"
}filter[type]
{
"type": "string"
}Example request
curl --request GET 'https://api.example.test/api/metrics' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Accept: application/json'Examples use fictional data. Replace resource IDs and the API host with your environment’s values.
Responses
200
Array of MetricResource
Content type: application/json.
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"import_source": {
"type": [
"string",
"null"
]
},
"import_source_ref": {
"type": [
"string",
"null"
]
},
"import_source_id": {
"type": [
"string",
"null"
]
},
"data_import_id": {
"type": [
"integer",
"null"
]
},
"imported_at": {
"type": [
"string",
"null"
]
},
"project_id": {
"type": [
"integer",
"null"
]
},
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"type": {
"anyOf": [
{
"type": "string",
"enum": [
"average-per-user",
"rate-per-user",
"average-per-session",
"rate-per-session"
],
"title": "MetricType"
},
{
"type": "null"
}
]
},
"winning_direction": {
"anyOf": [
{
"type": "string",
"enum": [
"increasing",
"decreasing"
],
"title": "MetricWinningDirection"
},
{
"type": "null"
}
]
},
"external_id": {
"type": [
"string",
"null"
]
},
"external_platform": {
"type": [
"string",
"null"
]
},
"external_synced_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"external_metadata": {
"description": "JSON object or array. Object keys depend on the provider, form question, or configuration being stored.",
"anyOf": [
{
"type": "object",
"additionalProperties": {
"description": "An arbitrary JSON value retained by a metadata/settings field.",
"oneOf": [
{
"type": "null"
},
{
"type": "boolean"
},
{
"type": "number"
},
{
"type": "string"
},
{
"type": "array",
"items": {
"$ref": "#/components/schemas/JsonValue"
}
},
{
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/JsonValue"
}
}
]
}
},
{
"type": "array",
"items": {
"description": "An arbitrary JSON value retained by a metadata/settings field.",
"oneOf": [
{
"type": "null"
},
{
"type": "boolean"
},
{
"type": "number"
},
{
"type": "string"
},
{
"type": "array",
"items": {
"$ref": "#/components/schemas/JsonValue"
}
},
{
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/JsonValue"
}
}
]
}
},
{
"type": "null"
}
]
},
"created_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"updated_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"deleted_at": {
"type": [
"string",
"null"
],
"format": "date-time"
}
},
"required": [
"id",
"import_source",
"import_source_ref",
"import_source_id",
"data_import_id",
"imported_at",
"project_id",
"name",
"description",
"type",
"winning_direction",
"external_id",
"external_platform",
"external_synced_at",
"external_metadata",
"created_at",
"updated_at",
"deleted_at"
],
"title": "MetricResource"
}
},
"links": {
"type": "object",
"properties": {
"first": {
"type": [
"string",
"null"
]
},
"last": {
"type": [
"string",
"null"
]
},
"prev": {
"type": [
"string",
"null"
]
},
"next": {
"type": [
"string",
"null"
]
}
},
"required": [
"first",
"last",
"prev",
"next"
]
},
"meta": {
"type": "object",
"properties": {
"current_page": {
"type": "integer",
"minimum": 1
},
"from": {
"type": [
"integer",
"null"
],
"minimum": 1
},
"last_page": {
"type": "integer",
"minimum": 1
},
"links": {
"type": "array",
"description": "Generated paginator links.",
"items": {
"type": "object",
"properties": {
"url": {
"type": [
"string",
"null"
]
},
"label": {
"type": "string"
},
"active": {
"type": "boolean"
}
},
"required": [
"url",
"label",
"active"
]
}
},
"path": {
"type": [
"string",
"null"
],
"description": "Base path for paginator generated URLs."
},
"per_page": {
"type": "integer",
"description": "Number of items shown per page.",
"minimum": 0
},
"to": {
"type": [
"integer",
"null"
],
"description": "Number of the last item in the slice.",
"minimum": 1
},
"total": {
"type": "integer",
"description": "Total number of items being paginated.",
"minimum": 0
}
},
"required": [
"current_page",
"from",
"last_page",
"links",
"path",
"per_page",
"to",
"total"
]
}
},
"required": [
"data",
"links",
"meta"
]
}{
"data": [
{
"id": 101,
"import_source": null,
"import_source_ref": null,
"import_source_id": null,
"data_import_id": null,
"imported_at": null,
"project_id": null,
"name": "Checkout delivery estimate",
"description": null,
"type": null,
"winning_direction": null,
"external_id": null,
"external_platform": null,
"external_synced_at": null,
"external_metadata": null,
"created_at": null,
"updated_at": null,
"deleted_at": null
}
],
"links": {
"first": null,
"last": null,
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": null,
"last_page": 1,
"links": [
{
"url": null,
"label": "example",
"active": true
}
],
"path": null,
"per_page": 1,
"to": null,
"total": 1
}
}400
Unsupported filter, sort, or include.
Content type: application/json.
{
"type": "object",
"properties": {
"message": {
"type": "string",
"example": "Requested query option is not allowed."
}
},
"required": [
"message"
]
}{
"message": "Requested query option is not allowed."
}401
Unauthenticated
Content type: application/json.
{
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "Error overview."
}
},
"required": [
"message"
]
}{
"message": "The request could not be completed."
}403
Authorization error
Content type: application/json.
{
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "Error overview."
}
},
"required": [
"message"
]
}{
"message": "The request could not be completed."
}422
Validation error
Content type: application/json.
{
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "Errors overview."
},
"errors": {
"type": "object",
"description": "A detailed description of each field that failed validation.",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"required": [
"message",
"errors"
]
}{
"message": "The request could not be completed.",
"errors": {
"name": [
"The name field is required."
]
}
}429
Rate limit exceeded. Honor Retry-After before retrying.
Response headers:
{
"Retry-After": {
"description": "Seconds before retrying.",
"schema": {
"type": "integer"
}
}
}Content type: application/json.
{
"type": "object",
"properties": {
"message": {
"type": "string",
"example": "Too Many Attempts."
}
},
"required": [
"message"
]
}{
"message": "Too Many Attempts."
}See API conventions for error handling, rate limits, pagination, and uploads.