---
title: "Read the organisation settings for the Analytics screen"
method: GET
path: "/analytics/v1/settings"
tags: ["analytics"]
---

# Read the organisation settings for the Analytics screen

`GET /analytics/v1/settings`

## Request

- Base URL: `https://api.qualityclouds.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.qualityclouds.ai/analytics/v1/settings`
- Auth: one of:
  - HTTP bearer
  - OpenID Connect (`https://account.qualityclouds.com//realms/ai-production/.well-known/openid-configuration`)

Any member of the organisation may read this: it describes what the organisation decided about them. An organisation that has never changed the setting has no row, and the defaults are returned. Also carries `activity`: whether the organisation has ever live-checked or ever committed, and when it last did either. Those two facts are unbounded by the period and by every filter, which is what lets the screen tell "nothing has been recorded here" apart from "nothing in this window" instead of showing the same dashes for both (QSA-1748).

## Response `200`

Successful Response

- AnalyticsSettingsWithActivityResponse: Body of GET /analytics/v1/settings — the settings plus the activity.
  - `analytics_team_view` boolean, required: When true, every member of the organisation sees all developer rows on the Analytics screen. When false, a non-admin sees only their own.
  - `coverage_warning_threshold` integer, required: Merge scans tables flag a row whose share checked before merge is below this percentage. Deployment configuration (ANALYTICS_COVERAGE_WARNING_THRESHOLD, default 30); read-only (QSA-1842).
  - `activity` AnalyticsActivity, required: Whether this organisation has ever produced analytics data at all. Unbounded by the period and by every filter, which is the whole point: it is what lets the screen say "Norma has not seen anything yet" and "there is data, just not in this window" instead of showing the same dashes for both.
    - `ever_live_checked` boolean, required: The organisation has at least one live check, at any date
    - `ever_committed` boolean, required: The organisation has at least one committed file, at any date
    - `awaiting_first_coverage` boolean: At least one repository has completed a full scan and still has no committed file. The first scan of a repository records nothing, so coverage begins at its second scan (functional spec §5.3.8) — which is why `ever_committed` can be false for an organisation that is correctly set up and simply has not been scanned twice yet. The screen uses it to explain the wait instead of asking for a setup step that is already done.
    - `last_activity_at` string, date-time, nullable: The more recent of the two, UTC; null when the organisation has neither. The screen names this date when the selected period is the reason a block is empty.
    - `by_repository` object: Repository id -> when that repository last produced anything, UTC and unbounded by the period. A repository that has never produced anything is absent from the map rather than null, because 'never' and 'not in this window' need different sentences on the screen. Sent whole rather than per selection: the period and the repository are the only two filters that can empty the coverage blocks, and an organisation has tens of repositories, so one map costs less than a request each time the reader changes the selection.

## Other responses

- `401`: Unauthorized
- `403`: Forbidden

---

[API](https://skmtc.dev/qualityclouds/apis/qai-orchestrator-api.md) · [All operations](https://skmtc.dev/qualityclouds/apis/qai-orchestrator-api/llms.txt) · [OpenAPI document](https://skmtc.dev/qualityclouds/apis/qai-orchestrator-api/revisions/250c849925af?raw)
