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

# Analytics API (Enterprise SaaS)

> Rufen Sie Devin Desktop-Analysedaten per API ab, einschließlich Metriken zu Autovervollständigung, Chat, Befehlen, Cascade und PCW. Unterstützt benutzerdefinierte Filter, Aggregationen und Gruppierungen.

<div id="overview">
  ## Überblick
</div>

Devin Desktop unterstützt eine API für benutzerdefinierte Analysen. Damit lassen sich Daten aus Autovervollständigung, Chat und Befehlen mit einer Vielzahl von Filtern, Gruppierungen und Aggregationen abfragen.

Wir stellen alle Beispiele in curl bereit; sie können anschließend in HTTP-Anfragen in anderen Sprachen übertragen werden.

<Note>Die Analytics API ist in Enterprise-Plänen verfügbar</Note>

<div id="user-data-analytics-api-specification">
  ## Spezifikation der Analytics API für Nutzerdaten
</div>

Daten aus der Tabelle „Nutzer“ auf der Teams-Seite können mit dem folgenden Befehl abgerufen werden:

```sh theme={null}
curl -X POST --header "Content-Type: application/json" \
--data '{
  "service_key": "<SERVICE_KEY>",
  "group_name": "<GROUP_NAME>",
  "start_timestamp": "<START_TIMESTAMP>",
  "end_timestamp": "<END_TIMESTAMP>"
}' \
https://server.codeium.com/api/v1/UserPageAnalytics
```

**SERVICE\_KEY**: Der Service-Schlüssel – ein Admin kann ihn im Service-Schlüssel-Bereich der Settings-Seite erstellen. Die Rolle des Service-Schlüssels muss über die Berechtigung "Teams Read-only" verfügen.

**GROUP\_NAME**: Der Name einer Gruppe, nach der gefiltert werden soll. Dieses Feld ist optional.

**START\_TIMESTAMP/END\_TIMESTAMP**: Zeitstempel im RFC-3339-Format, also z. B. 2023-01-01T00:00:00Z

<div id="example-output">
  #### **Beispielausgabe**
</div>

```json theme={null}
{
  "userTableStats": [
    {
      "name": "Alice",
      "email": "alice@cognition.ai",
      "lastUpdateTime": "2024-10-10T22:56:10.771591Z",
      "apiKey": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
      "activeDays": 178,
      "teamStatus": "USER_TEAM_STATUS_APPROVED"
    },
    {
      "name": "Bob",
      "email": "bob@cognition.ai",
      "lastUpdateTime": "2024-10-10T18:11:23.980237Z",
      "apiKey": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
      "activeDays": 462,
      "teamStatus": "USER_TEAM_STATUS_APPROVED"
    },
    {
      "name": "Charlie",
      "email": "charlie@cognition.ai",
      "lastUpdateTime": "2024-10-10T16:43:46.117870Z",
      "apiKey": "cccccccc-cccc-cccc-cccc-cccccccccccc",
      "activeDays": 237,
      "teamStatus": "USER_TEAM_STATUS_PENDING"
    }
  ]
}
```

<div id="cascade-analytics-api-specification">
  ## Spezifikation der Cascade Analytics API
</div>

Die auf der [Analytics-Seite](https://windsurf.com/team/analytics) angezeigten spezifischen Cascade-Daten können per API abgefragt werden.

```sh theme={null}
curl -X POST --header "Content-Type: application/json" \
--data '{
  "service_key": "<SERVICE_KEY>",
  "group_name": "<GROUP_NAME>",
  "start_timestamp": "<START_TIMESTAMP>",
  "end_timestamp": "<END_TIMESTAMP>",
  "emails": ["<EMAIL>","<EMAIL>,..."],
  "ide_types": ["<IDE_TYPE>","<IDE_TYPE>,..."],
  "query_requests": [
   {
    "<CASCADE_DATA_SOURCE>": {}
   }
  ]
}' \
https://server.codeium.com/api/v1/CascadeAnalytics
```

**SERVICE\_KEY**: Der Service-Schlüssel – ein Admin kann in den [Team Settings](https://windsurf.com/team/settings) einen neuen erstellen

**GROUP\_NAME**: Der Name einer Gruppe, nach der gefiltert werden soll. Dieses Feld ist optional. Kann nicht gesetzt werden, wenn `emails` gesetzt ist.

**START\_TIMESTAMP/END\_TIMESTAMP**: Zeitstempel im RFC-3339-Format, z. B. 2023-01-01T00:00:00Z

**EMAILS**: Eine Liste von E-Mail-Adressen, nach denen gefiltert werden soll. Dieses Feld ist optional. Kann nicht gesetzt werden, wenn `group&#95;name` gesetzt ist.

**IDE\_TYPES**: Eine Liste von IDE-Typen, nach denen gefiltert werden soll. Dieses Feld ist optional. Die möglichen Werte sind unten beschrieben.

**QUERY\_REQUESTS**: Eine Liste von Query-Anfragen, die ausgeführt werden sollen. Dieses Feld ist erforderlich. Die möglichen Werte von CASCADE\_DATA\_SOURCE sind unten beschrieben.

<div id="example-query">
  #### Beispielabfrage
</div>

```sh theme={null}
curl -X POST --header "Content-Type: application/json" \
--data '{
  "service_key": "my_random_test_key",
  "group_name": "my_group_name",
  "start_timestamp": "2025-01-01T00:00:00Z",
  "end_timestamp": "2025-01-02T00:00:00Z",
  "emails": ["my_email@cognition.ai", "my_email2@cognition.ai"],
  "ide_types": ["editor"],
  "query_requests": [
   {
    "cascade_lines": {}
   },
   {
    "cascade_runs": {}
   }
  ]
}' \
https://server.codeium.com/api/v1/CascadeAnalytics
```

<div id="ide-types">
  ### IDE-Typen
</div>

Wir unterteilen Cascade-Daten nach IDE-Typen in Kategorien. Wenn Sie das Feld `ide_types` in der Abfrage weglassen, werden Daten für alle IDE-Typen zurückgegeben. Wenn Sie Daten nur für eine bestimmte IDE abfragen möchten, können Sie eine der folgenden Optionen verwenden:

* "editor" für den Devin Desktop Editor
* "jetbrains" für das JetBrains-Plugin
* "cli" für Devin CLI

<Note>Beim Filtern nach Devin CLI (`"cli"`) liefert nur `cascade_runs` Daten. Die Datenquellen `cascade_lines` und `cascade_tool_usage` werden für Devin CLI nicht unterstützt und geben leere Ergebnisse zurück.</Note>

<div id="cascade-data-sources">
  ### Cascade-Datenquellen
</div>

Für CASCADE\_DATA\_SOURCE gibt es drei mögliche Werte

<div id="source-cascade_lines">
  #### Quelle: cascade\_lines
</div>

Verwenden Sie cascade\_lines, um Daten dazu abzufragen, wie viele Cascade-Zeilen pro Tag vorgeschlagen und akzeptiert wurden.

Beispielausgabe:

```json theme={null}
{
  "queryResults": [
    {
      "cascadeLines": {
        "cascadeLines": [
          {
            "day": "2025-05-01T00:00:00Z",
            "linesSuggested": "206",
            "linesAccepted": "157"
          },
          {
            "day": "2025-05-02T00:00:00Z",
            "linesSuggested": "16"
          },
          {
            "day": "2025-05-03T00:00:00Z",
            "linesSuggested": "169",
            "linesAccepted": "168"
          }
        ]
      }
    }
  ]
}
```

**linesSuggested**: Die Anzahl der für den jeweiligen Tag vorgeschlagenen Zeilen.
**linesAccepted**: Die Anzahl der für den jeweiligen Tag akzeptierten Zeilen.

<div id="source-cascade_runs">
  #### Quelle: cascade\_runs
</div>

Verwenden Sie cascade\_runs, um Daten zur Modellnutzung, zum Verbrauch von Credits und zum Modus abzufragen.

Beispielausgabe:

```json theme={null}
{
  "queryResults": [
    {
      "cascadeRuns": {
        "cascadeRuns": [
          {
            "day": "2025-05-01T00:00:00Z",
            "model": "Claude 3.7 Sonnet (Thinking)",
            "mode": "CONVERSATIONAL_PLANNER_MODE_DEFAULT",
            "messagesSent": "1",
            "cascadeId": "0d35c1f7-0a85-41d0-ac96-a04cd2d64444"
          },
          {
            "day": "2025-05-01T00:00:00Z",
            "model": "SWE-1",
            "mode": "UNKNOWN",
            "promptsUsed": "125",
            "cascadeId": "0d35c1f7-0a85-41d0-ac96-a04cd2d64444"
          },
          {
            "day": "2025-05-01T00:00:00Z",
            "model": "GPT-4.1 (promo)",
            "mode": "CONVERSATIONAL_PLANNER_MODE_DEFAULT",
            "messagesSent": "5",
            "cascadeId": "1f450ba3-06aa-4ba5-9e12-d3b98c2d33d3"
          },
        ]
      }
    }
  ]
}
```

**day**: Das Datum der Ausführung.

**model**: Das für die Nachricht verwendete Modell.

**mode**: Der Modus der Ausführung. Einer von CONVERSATIONAL\_PLANNER\_MODE\_DEFAULT (für den Schreibmodus), CONVERSATIONAL\_PLANNER\_MODE\_READ\_ONLY (für den Lesemodus), CONVERSATIONAL\_PLANNER\_MODE\_NO\_TOOL (für den Legacy-Modus) oder UNKNOWN.

**messagesSent**: Die Anzahl der gesendeten Nachrichten.

**cascadeId**: Die ID der Ausführung. Anhand dieser ID lässt sich nachvollziehen, wie viele unterschiedliche Unterhaltungen gestartet wurden (im Gegensatz dazu, wie oft der Nutzer eine Nachricht sendet).

**promptsUsed**: Die Anzahl der verwendeten Credits. Dieser Wert wird in Cent zurückgegeben. Zum Beispiel werden 0,25 Credits als 25 zurückgegeben und 1 Credit als 100.

Die von der API zurückgegebenen Daten liegen in einem Rohformat vor, was etwaige "UNKNOWN"-Werte erklären kann. Wenn Sie diese Datenquelle für Ihre eigenen Metriken verwenden, empfiehlt es sich, nach den für Sie relevanten spezifischen Metriken zu aggregieren (z. B. das Feld promptsUsed zu summieren, um Nutzungsmuster der Nutzer zu verstehen, oder messagesSent, um das Nutzerengagement zu verstehen), da Modus- und Prompt-Daten auf mehrere Einträge verteilt sein können.

<div id="source-cascade_tool_usage">
  #### Quelle: cascade\_tool\_usage
</div>

Verwenden Sie cascade\_tool\_usage, um Daten zur Tool-Nutzung abzufragen. Hinweis: Dies gibt die aggregierte Anzahl von Tools im angegebenen Zeitraum zurück.

Beispielausgabe:

```json theme={null}
{
  "queryResults": [
    {
      "cascadeToolUsage": {
        "cascadeToolUsage": [
          {
            "tool": "CODE_ACTION",
            "count": "15"
          },
          {
            "tool": "LIST_DIRECTORY",
            "count": "20"
          },
          {
            "tool": "MCP_TOOL",
            "count": "12"
          },
          {
            "tool": "MEMORY",
            "count": "4"
          }
        ]
      }
    }
  ]
}
```

**tool**: Das Tool, das für die Nachricht verwendet wurde.

**count**: Die Anzahl der Verwendungen des Tools.

Hier ist eine Zuordnung der zurückgegebenen Enums zu den menschenlesbaren Namen, wie sie in der UI angezeigt werden:

* CODE\_ACTION: 'Code bearbeiten'
* VIEW\_FILE: 'Datei anzeigen'
* RUN\_COMMAND: 'Befehl ausführen'
* FIND: 'Such-Tool'
* GREP\_SEARCH: 'Grep-Suche'
* VIEW\_FILE\_OUTLINE: 'Dateiübersicht anzeigen'
* MQUERY: 'Riptide'
* LIST\_DIRECTORY: 'Verzeichnis auflisten'
* MCP\_TOOL: 'MCP-Tool'
* PROPOSE\_CODE: 'Code vorschlagen'
* SEARCH\_WEB: 'Web durchsuchen'
* MEMORY: 'Memory'
* PROXY\_WEB\_SERVER: 'Browser-Vorschau'
* DEPLOY\_WEB\_APP: 'Web-App bereitstellen'

<div id="custom-analytics-api-specification">
  ## Spezifikation der Custom Analytics API
</div>

Bestimmte Datenquellen unterstützen anpassbare Abfragen über die Custom Analytics API.

**Die vollständigen Schemas für Selektionen, Filter, Aggregationen und Sortierungen finden Sie im folgenden Abschnitt im JSON-Format. Beispielabfragen für jede der drei Datenquellen sowie Tipps zum Debuggen von Abfragen finden Sie am Ende des Dokuments.**

```sh theme={null}
curl -X POST --header "Content-Type: application/json" \
--data '{
  "service_key": "<SERVICE_KEY>",
  "group_name": "<GROUP_NAME>",
  "query_requests": [
    {
      "data_source": "QUERY_DATA_SOURCE_<DATA_SOURCE>",
      "selections": [
        <LIST OF SELECTIONS>
      ],
      "filters": [
        <LIST OF FILTERS>
      ],
      "aggregations": [
        <LIST OF AGGREGATIONS>
      ],
    }
  ]
}' \
https://server.codeium.com/api/v1/Analytics
```

**DATA\_SOURCE**: Wählen Sie je nach Anwendungsfall USER\_DATA, CHAT\_DATA, COMMAND\_DATA, PCW\_DATA oder CASCADE\_DATA aus – je nachdem, ob Sie nach Daten zu Autovervollständigung, Chat, Command, PCW oder Cascade suchen.

**SERVICE\_KEY**: Der Service-Schlüssel – ein Admin-Nutzer kann in den [Team Settings](https://windsurf.com/team/settings) einen neuen erstellen. Die Rolle des Service-Schlüssels muss über die Berechtigung "Analytics Read" verfügen.

**GROUP\_NAME**: Der Name einer Gruppe, nach der gefiltert werden soll. Dieses Feld ist optional.

<div id="schemas">
  ## Schemata
</div>

<div id="selections">
  ### Auswahlmöglichkeiten
</div>

Auswahlmöglichkeiten sind **erforderlich**. Jede Auswahlmöglichkeit entspricht einem Wert, der abgefragt werden soll.

```json theme={null}
{
  "field": "<FIELD_NAME>",
  "name": "<NAME>",
  "aggregation_function": "QUERY_AGGREGATION_<AGGREGATION_FUNCTION>"
}
```

**FIELD\_NAME**: Das Feld, das Sie abfragen möchten. Siehe unten den Abschnitt „Verfügbare Felder“.

**NAME**: Ein Alias für das Feld. Wenn kein Wert angegeben ist, wird die kleingeschriebene Form von \<AGGREGATION\_FUNCTION>\_\<FIELD\_NAME> verwendet, z. B. sum\_num\_acceptances. Der Name muss sich von allen anderen Feld- und Aggregationsnamen unterscheiden.

**AGGREGATION\_FUNCTION**: Sollte einer der folgenden Werte sein: UNSPECIFIED, COUNT, SUM, AVG, MAX, MIN. Wenn "aggregation\_function" nicht angegeben ist, wird standardmäßig UNSPECIFIED verwendet.

<div id="filters">
  ### Filter
</div>

Filter werden verwendet, um Daten so einzugrenzen, dass sie nur Elemente enthalten, die bestimmte Kriterien erfüllen. Sie sind optional.

```json theme={null}
{
  "name": "<NAME>",
  "value": "<VALUE>",
  "filter": "QUERY_FILTER_<FILTER>"
}
```

**NAME**: Der Name des Felds, nach dem Sie filtern möchten. Wenn das gefilterte Element mit einer Selection/Aggregation identisch ist, muss er dem Namen des Felds/der Aggregation entsprechen.

**VALUE**: der Wert, der verglichen wird.

**FILTER**: Einer der folgenden Werte: EQUAL, NOT\_EQUAL, GREATER\_THAN, LESS\_THAN, GE (größer als oder gleich), LE (kleiner als oder gleich).

<div id="aggregations">
  ### Aggregationen
</div>

Mit Aggregationen lassen sich die Daten anhand eines angegebenen Kriteriums in Gruppen aufteilen. Sie sind optional.

```json theme={null}
{
  "field": <FIELD_NAME>,
  "name": <NAME>
}
```

FIELD\_NAME: Das Feld, das Sie abfragen möchten. Siehe den Abschnitt „Verfügbare Felder“.

NAME: Ein Alias für das Feld. Muss sich von allen anderen Feld- und Aggregationsnamen unterscheiden.

<div id="available-fields">
  ## Verfügbare Felder
</div>

<div id="user-data">
  ### Nutzerdaten
</div>

Alle Daten aus der Quelle USER\_DATA werden pro Nutzer und pro Stunde aggregiert.

Hinweis: PCW (percent code written) hat jetzt eine eigene Tabelle und ist nicht mehr von der Tabelle user\_data abhängig.

| **Field Name**             | **Description**                                                                                                                                                      | **Valid Aggregations** |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- |
| api\_key                   | Ein Hash des API key des Nutzers.                                                                                                                                    | UNSPECIFIED, COUNT     |
| date                       | Das UTC-Datum der Autovervollständigung(en).                                                                                                                         | UNSPECIFIED, COUNT     |
| date UTC-x                 | Das Datum der Autovervollständigung mit Zeitzonen-Offset. Zum Beispiel wäre PST „date UTC-8“.                                                                        | UNSPECIFIED, COUNT     |
| hour                       | Die UTC-Stunde der Autovervollständigung(en).                                                                                                                        | UNSPECIFIED, COUNT     |
| language                   | Die verwendete Programmiersprache.                                                                                                                                   | UNSPECIFIED, COUNT     |
| ide                        | Die verwendete IDE.                                                                                                                                                  | UNSPECIFIED, COUNT     |
| version                    | Erweiterungs-/Plugin- (Language Server-)Version, z. B. `1.48.x`                                                                                                      | UNSPECIFIED, COUNT     |
| num\_acceptances           | Die Anzahl, wie oft der Nutzer eine Autovervollständigung akzeptiert hat. Dies geschieht, wenn der Nutzer Code schreibt, grauen Text sieht und die Tab-Taste drückt. | SUM, MAX, MIN, AVG     |
| num\_lines\_accepted       | Aus der Autovervollständigung übernommene Codezeilen.                                                                                                                | SUM, MAX, MIN, AVG     |
| num\_bytes\_accepted       | Aus der Autovervollständigung übernommene Bytes.                                                                                                                     | SUM, MAX, MIN, AVG     |
| distinct\_users            | Eindeutige Nutzer.                                                                                                                                                   | UNSPECIFIED, COUNT     |
| distinct\_developer\_days  | Eindeutige Tupel aus (Nutzer, Tag).                                                                                                                                  | UNSPECIFIED, COUNT     |
| distinct\_developer\_hours | Eindeutige Tupel aus (Nutzer, Tagesstunde).                                                                                                                          | UNSPECIFIED, COUNT     |

<div id="chat-data">
  ### Chat-Daten
</div>

Hinweis: Alle in der Chat-Daten-API bereitgestellten Daten beziehen sich auf die Antworten des Chat-Modells, nicht auf die Fragen der Nutzer.

| **Feldname**               | **Beschreibung**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | **Gültige Aggregationen** |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- |
| api\_key                   | Ein Hash des API key des Nutzers                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | UNSPECIFIED, COUNT        |
| model\_id                  | Die ID des Chat-Modells, die bei der Bereitstellung festgelegt wird.                                                                                                                                                                                                                                                                                                                                                                                                                                           | UNSPECIFIED, COUNT        |
| date                       | Das UTC-Datum der Chat-Antwort.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | UNSPECIFIED, COUNT        |
| date UTC-x                 | Das Datum der Chat-Antwort mit einem Zeitzonenversatz. Zum Beispiel wäre PST „date UTC-8“.                                                                                                                                                                                                                                                                                                                                                                                                                     | UNSPECIFIED, COUNT        |
| ide                        | Die verwendete IDE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | UNSPECIFIED, COUNT        |
| version                    | Erweiterungs-/Plugin-Version (Language Server), z. B. `1.48.x`                                                                                                                                                                                                                                                                                                                                                                                                                                                 | UNSPECIFIED, COUNT        |
| latest\_intent\_type       | Gibt an, ob die Modellantwort aus einer CodeLens oder einem normalen Chat generiert wird. Normale Chats entsprechen:<br /><br />CHAT\_INTENT\_GENERIC<br /><br />CodeLens entsprechen dagegen einem der folgenden Werte:<br /><br />CHAT\_INTENT\_FUNCTION\_EXPLAIN<br />CHAT\_INTENT\_FUNCTION\_DOCSTRING<br />CHAT\_INTENT\_FUNCTION\_REFACTOR<br />CHAT\_INTENT\_CODE\_BLOCK\_EXPLAIN<br />CHAT\_INTENT\_CODE\_BLOCK\_REFACTOR<br />CHAT\_INTENT\_PROBLEM\_EXPLAIN<br />CHAT\_INTENT\_FUNCTION\_UNIT\_TESTS | UNSPECIFIED, COUNT        |
| num\_chats\_received       | Anzahl der Chat-Nachrichten, die von Devin Desktop an den Nutzer gesendet wurden.                                                                                                                                                                                                                                                                                                                                                                                                                              | SUM, MAX, MIN, AVG        |
| chat\_accepted             | True, wenn ein Codeblock in der Chat-Antwort von Devin Desktop gesendet wurde und auf die Schaltfläche „Daumen hoch“ geklickt wird.                                                                                                                                                                                                                                                                                                                                                                            | SUM, COUNT                |
| chat\_inserted\_at\_cursor | True, wenn ein Codeblock in der Chat-Antwort von Devin Desktop gesendet wurde und auf die Schaltfläche „Insert“ geklickt wird.                                                                                                                                                                                                                                                                                                                                                                                 | SUM, COUNT                |
| chat\_applied              | True, wenn ein Codeblock in der Chat-Antwort von Devin Desktop gesendet wurde und auf die Schaltfläche „Apply Diff“ geklickt wird.                                                                                                                                                                                                                                                                                                                                                                             | SUM, COUNT                |
| chat\_loc\_used            | Anzahl der verwendeten Codezeilen, wenn ein Codeblock im Chat von Devin Desktop gesendet wurde und eine der Schaltflächen „Insert“, „Copy“ oder „Apply Diff“ gedrückt wird.                                                                                                                                                                                                                                                                                                                                    | SUM, MAX, MIN, AVG        |

<div id="command-data">
  ### Befehlsdaten
</div>

Beachten Sie, dass die Datenquelle „Befehlsdaten“ **alle** Befehle enthält, auch die, die abgelehnt wurden. Mit dem Feld „accepted“ können Sie auf nur akzeptierte Befehle filtern.

| **Feldname**     | **Beschreibung**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | **Gültige Aggregationen** |
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- |
| api\_key         | Ein Hash des API key des Nutzers.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | UNSPECIFIED, COUNT        |
| date             | Das UTC-Datum des Befehls.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | UNSPECIFIED, COUNT        |
| timestamp        | Der UTC-Zeitstempel des Befehls.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | UNSPECIFIED, COUNT        |
| language         | Die verwendete Programmiersprache.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | UNSPECIFIED, COUNT        |
| ide              | Die verwendete IDE.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | UNSPECIFIED, COUNT        |
| version          | Version der Erweiterung/des Plugins (Language Server), z. B. `1.48.x`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | UNSPECIFIED, COUNT        |
| command\_source  | Der Grund, aus dem der Befehl ausgelöst wurde. Gültige Werte sind:<br /><br />COMMAND\_REQUEST\_SOURCE\_LINE\_HINT\_CODE\_LENS<br />COMMAND\_REQUEST\_SOURCE\_DEFAULT<br />COMMAND\_REQUEST\_SOURCE\_RIGHT\_CLICK\_REFACTOR<br />COMMAND\_REQUEST\_SOURCE\_FUNCTION\_CODE\_LENS<br />COMMAND\_REQUEST\_SOURCE\_FOLLOWUP<br />COMMAND\_REQUEST\_SOURCE\_CLASS\_CODE\_LENS<br />COMMAND\_REQUEST\_SOURCE\_PLAN<br />COMMAND\_REQUEST\_SOURCE\_SELECTION\_HINT\_CODE\_LENS<br /><br />COMMAND\_REQUEST\_SOURCE\_DEFAULT entspricht der typischen Befehlsverwendung. | UNSPECIFIED, COUNT        |
| provider\_source | Gibt an, ob der Befehl im Generierungs- oder Bearbeitungsmodus ausgelöst wurde. Gültige Werte sind: PROVIDER\_SOURCE\_COMMAND\_GENERATE PROVIDER\_SOURCE\_COMMAND\_EDIT                                                                                                                                                                                                                                                                                                                                                                                          | UNSPECIFIED, COUNT        |
| lines\_added     | Anzahl der Codezeilen, die durch den Befehl hinzugefügt wurden.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | SUM, MAX, MIN, AVG        |
| lines\_removed   | Anzahl der Codezeilen, die durch den Befehl entfernt wurden.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | SUM, MAX, MIN, AVG        |
| bytes\_added     | Anzahl der Bytes, die durch den Befehl hinzugefügt wurden.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | SUM, MAX, MIN, AVG        |
| bytes\_removed   | Anzahl der Bytes, die durch den Befehl entfernt wurden.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | SUM, MAX, MIN, AVG        |
| selection\_lines | Anzahl der Codezeilen, die durch den Befehl ausgewählt wurden. Bei Generierungen sollte dieser Wert immer null sein.                                                                                                                                                                                                                                                                                                                                                                                                                                             | SUM, MAX, MIN, AVG        |
| selection\_bytes | Anzahl der Bytes, die durch den Befehl ausgewählt wurden. Bei Generierungen sollte dieser Wert immer null sein.                                                                                                                                                                                                                                                                                                                                                                                                                                                  | SUM, MAX, MIN, AVG        |
| accepted         | Ob der Befehl akzeptiert wurde.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | SUM, COUNT                |

<div id="pcw-data">
  ### PCW-Daten
</div>

<div id="valid-selections">
  #### Gültige Auswahlmöglichkeiten
</div>

| **Feldname**                     | **Beschreibung**                                                                                                                                                                                                                                                                                                                         | **Gültige Aggregationen** |
| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- |
| percent\_code\_written           | Prozentualer Anteil des geschriebenen Codes. Berechnet als (Anzahl der generierten Codeium-Bytes) / (Anzahl der generierten Codeium-Bytes + Anzahl der vom Nutzer generierten Bytes). Diese Metrik kann an einzelnen Tagen oder zwischen einzelnen Nutzern stark schwanken; wir empfehlen daher, sie über mehrere Wochen zu aggregieren. | UNSPECIFIED               |
| codeium\_bytes                   | Gesamtzahl der Codeium-Bytes; entspricht codeium\_bytes\_by\_autocomplete + codeium\_bytes\_by\_command                                                                                                                                                                                                                                  | UNSPECIFIED               |
| user\_bytes                      | Gesamtzahl der vom Nutzer generierten Bytes                                                                                                                                                                                                                                                                                              | UNSPECIFIED               |
| total\_bytes                     | codeium\_bytes + user\_bytes                                                                                                                                                                                                                                                                                                             | UNSPECIFIED               |
| codeium\_bytes\_by\_autocomplete | Gesamtzahl der durch Autocomplete generierten Codeium-Bytes                                                                                                                                                                                                                                                                              | UNSPECIFIED               |
| codeium\_bytes\_by\_command      | Gesamtzahl der durch Befehle generierten Codeium-Bytes                                                                                                                                                                                                                                                                                   | UNSPECIFIED               |

<div id="cascade-data">
  ### Cascade Data
</div>

Die Datenquelle Cascade Data enthält für jede an Cascade gesendete Nachricht einen Eintrag.

<Note>Um auf alle unten aufgeführten Felder zuzugreifen, stellen Sie bitte sicher, dass Sie Version 1.11.2 oder höher verwenden.</Note>

| **Feldname**        | **Beschreibung**                                                                                                                                                                                                            | **Gültige Aggregationen**       |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- |
| api\_key            | Ein Hash des API key des Nutzers.                                                                                                                                                                                           | UNSPECIFIED, COUNT              |
| date                | Das UTC-Datum des Befehls.                                                                                                                                                                                                  | UNSPECIFIED, COUNT              |
| prompts\_used       | Die Anzahl der im Prompt an Cascade verwendeten Prompt-Credits, angegeben in Cent. Zum Beispiel werden 0,25 Credits als 25 zurückgegeben und 1 Credit als 100.                                                              | UNSPECIFIED, SUM, AVG, MIN, MAX |
| flex\_credits\_used | Die Anzahl der Zusatz- bzw. Pool-Credits aus dem Gesamtwert `prompts_used`, die in einem Prompt an Cascade verwendet werden, angegeben in Cent. Zum Beispiel werden 0,25 Credits als 25 zurückgegeben und 1 Credit als 100. | UNSPECIFIED, SUM, AVG, MIN, MAX |
| model               | Das Modell, das für die an Cascade gesendete Nachricht verwendet wurde.                                                                                                                                                     | UNSPECIFIED, COUNT              |
| metadata            | Ein Objekt, das Metadaten zur Entwicklungsumgebung enthält. Derzeit befüllte Felder sind: ideVersion                                                                                                                        | UNSPECIFIED, COUNT              |

<div id="valid-filters">
  #### Gültige Filter
</div>

|              |                                                                       |                      |
| ------------ | --------------------------------------------------------------------- | -------------------- |
| **Feldname** | **Beschreibung**                                                      | **Einige Beispiele** |
| api\_key     | Ein Hash des API key des Nutzers.                                     |                      |
| language     | Die verwendete Programmiersprache.                                    | KOTLIN, GO, JAVA     |
| ide          | Die verwendete IDE.                                                   | jetbrains, vscode    |
| version      | Version der Erweiterung/des Plugins (Language Server), z. B. `1.48.x` | 1.28.0, 130.0        |

Um nach Datum zu filtern, verwenden Sie start\_timestamp und end\_timestamp. Diese sollten im RFC 3339-Format vorliegen (z. B. 2023-01-01T00:00:00Z; siehe Beispiel unten).

<div id="examples">
  ## Beispiele
</div>

<div id="user-data">
  ### Nutzerdaten
</div>

```sh theme={null}
curl -X POST --header "Content-Type: application/json" \
--data '{
  "service_key": SERVICE_KEY,
  "query_requests": [
    {
      "data_source": "QUERY_DATA_SOURCE_USER_DATA",
      "selections": [
       {
          "field": "num_acceptances",
          "name": "num_acceptances",
          "aggregation_function": "QUERY_AGGREGATION_SUM"
        }
      ],
      "filters": [
        {
          "name": "hour",
          "filter": "QUERY_FILTER_GE",
          "value": "2024-01-01"
        },
        {
          "name": "hour",
          "filter": "QUERY_FILTER_LE",
          "value": "2024-02-01"
        }
      ]
    }
  ]
}' \
https://server.codeium.com/api/v1/Analytics
```

Diese Abfrage berechnet den Gesamtwert von „Percent Code Written“ für Januar 2024. Beispielantwort (zur besseren Lesbarkeit als JSON formatiert):

```json theme={null}
{
  "queryResults": [
    {
      "responseItems": [
        {
          "item": {
            "num_acceptances": "125",
            "num_lines_accepted": "863"
          }
        }
      ]
    }
  ]
}
```

<div id="chat-data">
  ### Chat-Daten
</div>

```sh theme={null}
curl -X POST --header "Content-Type: application/json" \
--data '{
  "service_key": SERVICE_KEY,
  "query_requests": [
    {
      "data_source": "QUERY_DATA_SOURCE_CHAT_DATA",
      "selections": [
        {
          "field": "chat_loc_used",
          "name": "chat_loc_used",
          "aggregation_function": "QUERY_AGGREGATION_SUM"
        }
      ],
      "filters": [
        {
          "name": "latest_intent_type",
          "filter": "QUERY_FILTER_EQUAL",
          "value": "CHAT_INTENT_FUNCTION_DOCSTRING"
        }
      ],
      "aggregations": [
        {
          "field": "ide",
          "name": "ide"
        }
      ]
    }
  ]
}' \
https://server.codeium.com/api/v1/Analytics
```

Diese Abfrage zeigt die Anzahl der aus der CodeLens „Generate Docstring“ akzeptierten Codezeilen für den gesamten Zeitraum, gruppiert nach IDE.

Beispielantwort:

```json theme={null}
{
  "queryResults": [
    {
      "responseItems": [
        {
          "item": {
            "chat_loc_used": "74",
            "ide": "jetbrains"
          },
        },
        {
          "item": {
            "chat_loc_used":"41",
            "ide":"vscode"
          },
        }
      ]
    }
  ]
}
```

<div id="command-data">
  ### Befehlsdaten
</div>

```sh theme={null}
curl -X POST --header "Content-Type: application/json" \
--data '{
 "service_key": SERVICE_KEY,
  "query_requests": [
    {
      "data_source": "QUERY_DATA_SOURCE_COMMAND_DATA",
     "selections": [
        {
          "field": "lines_added",
          "name": "lines_added",
          "aggregation_function": "QUERY_AGGREGATION_SUM"
        },
        {
          "field": "lines_removed",
          "name": "lines_removed",
          "aggregation_function": "QUERY_AGGREGATION_SUM"
        }
      ],
      "filters": [
        {
          "name": "provider_source",
          "filter": "QUERY_FILTER_EQUAL",
          "value": "PROVIDER_SOURCE_COMMAND_EDIT"
        },
        {
          "name": "accepted",
          "filter": "QUERY_FILTER_EQUAL",
          "value": "true"
        }
      ],
      "aggregations": [
        {
          "field": "language",
          "name": "language"
        }
      ]
    }
  ]
}' \
https://server.codeium.com/api/v1/Analytics
```

Diese Abfrage ermittelt die Anzahl der durch „edit“-Befehle hinzugefügten und entfernten Zeilen, aufgeschlüsselt nach Programmiersprache.

Beispielantwort:

```json theme={null}
{
  "queryResults": [
    {
      "responseItems": [
        {
          "item": {
            "language": "SHELL",
            "lines_added": "5",
            "lines_removed": "3"
          }
        },
        {
          "item": {
            "language": "GO",
            "lines_added": "31",
            "lines_removed": "27"
          }
        },
        {
          "item": {
            "language": "PYTHON",
            "lines_added": "21",
            "lines_removed": "5"
          }
        },
        {
          "item": {
            "language": "UNSPECIFIED",
            "lines_added": "91",
            "lines_removed": "71"
          }
        },
        {
          "item": {
            "language": "STARLARK",
            "lines_added": "13",
            "lines_removed": "1"
          }
        }
      ]
    }
  ]
}
```

<div id="pcw-data">
  ### PCW-Daten
</div>

```sh theme={null}
curl -X POST --header "Content-Type: application/json" \
--data '{
    "service_key": SERVICE_KEY,
    "start_timestamp": "2024-01-01T00:00:00Z",
    "end_timestamp": "2024-12-22T00:00:00Z"
    "query_requests": [
    {
       "data_source": "QUERY_DATA_SOURCE_PCW_DATA",
       "selections": [
          {
             "field": "percent_code_written",
             "name": "percent_code_written"
          },
          {
             "field": "codeium_bytes",
             "name": "codeium_bytes"
          },
          {
             "field": "total_bytes",
             "name": "total_bytes"
          },
          {
             "field": "codeium_bytes_by_autocomplete",
            "name": "codeium_bytes_by_autocomplete"
          },
          {
             "field": "codeium_bytes_by_command",
             "name": "codeium_bytes_by_command"
          }
       ],
     "filters": [
         {
            "filter": "QUERY_FILTER_EQUAL",
            "name": "language",
            "value": "GO"
         }
      ]
    }
  ],
}' \
https: //server.codeium.com/api/v1/Analytics
```

Diese Abfrage ruft die PCW-Daten (Percent Code Written) sowie die nach der Programmiersprache `go` gefilterten Bytes ab.

Beispielantwort:

```json theme={null}
{
  "queryResults": [
    {
      "responseItems": [
         {
            "item": {
               "codeium_bytes": "6018",
               "codeium_bytes_by_autocomplete": "4593",
               "codeium_bytes_by_command": "1425",
               "percent_code_written": "0.61",
               "total_bytes": "9900"
             }
         }
     ]
   }
  ]
}
```

<div id="query-debugging">
  ## Fehlerbehebung bei Abfragen
</div>

Ab Version 1.10.0 geben ungültige Abfragen eine Fehlermeldung zurück. Dieser Abschnitt enthält einige häufige Fehlermeldungen, ihre Bedeutung und Hinweise zur Fehlerbehebung bei den entsprechenden Abfragen.

<table>
  <thead>
    <tr>
      <th>Fehlermeldung</th>
      <th>Erklärung</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>at least one field or aggregation is required</td>
      <td>Es wurden keine Auswahlen oder Aggregationen erkannt. Stelle sicher, dass die Anfrage mindestens eine davon enthält.</td>
    </tr>

    <tr>
      <td>invalid aggregation function for string type field ide: QUERY\_AGGREGATION\_SUM</td>
      <td>Eine der Auswahlen verwendet eine ungültige Aggregationsfunktion. In diesem Fall wurde versucht, SUM für das Feld „ide“ zu verwenden, aber dieses unterstützt nur COUNT und UNSPECIFIED.</td>
    </tr>

    <tr>
      <td>invalid query table: QUERY\_DATA\_SOURCE\_UNSPECIFIED</td>
      <td>Wahrscheinlich gibt es einen Tippfehler im Feld data\_source. Überprüfe die Schreibweise noch einmal.</td>
    </tr>

    <tr>
      <td>all selection fields should have an aggregation function, or none of them should</td>

      <td>
        Wenn es mehrere Auswahlfelder gibt, sollten entweder alle eine aggregation\_function enthalten oder keines davon. Zum Beispiel ist diese Auswahl ungültig, weil num\_acceptances summiert wird, num\_lines\_accepted aber nicht:

        ```json theme={null}
        "selections": [
          {
            "field": "num_acceptances",
            "name": "total_acceptances",
            "aggregation_function": "QUERY_AGGREGATION_SUM"
          },
          {
            "field": "num_lines_accepted",
            "name": "total_lines_accepted",
            "aggregation_function": "QUERY_AGGREGATION_UNSPECIFIED"
          }
        ]
        ```

        Hinweis: PCW gilt immer als aggregiert. Wenn keine aggregation\_function explizit ausgewählt wird, gilt sie als unspecified. Wenn du Informationen zu beiden Feldern erhalten möchtest, verwende zwei separate Abfragen.
      </td>
    </tr>

    <tr>
      <td>invalid aggregation function for string type field ide: QUERY\_AGGREGATION\_SUM</td>
      <td>Nicht jedes Feld unterstützt jede Aggregationsfunktion. Welche Kombinationen möglich sind, findest du im Abschnitt zu den verfügbaren Feldern. In diesem Fall verwendet die Abfrage die Aggregationsfunktion QUERY\_AGGREGATION\_SUM mit dem Feld „ide“, was ungültig ist.</td>
    </tr>

    <tr>
      <td>tried to aggregate on a distinct field: distinct\_developer\_days. Consider aggregating on the non-distinct fields instead: \[api\_key date]</td>

      <td>
        Felder mit dem Muster „distinct\_\*“ können nicht im Abschnitt aggregations verwendet werden. Die Fehlermeldung schlägt stattdessen alternative Felder zum Aggregieren vor. Also statt:

        ```json theme={null}
        "aggregations": [
          {
            "field": "distinct_developer_days",
            "name": "distinct_developer_days"
          }
        ]
        ```

        Verwende:

        ```json theme={null}
        "aggregations": [
          {
            "field": "api_key",
            "name": "api_key"
          },
          {
            "field": "date",
            "name": "date"
          }
        ]
        ```
      </td>
    </tr>

    <tr>
      <td>duplicate field alias for selection/aggregation: num\_acceptances</td>
      <td>Alle Auswahlen und Aggregationen müssen unterschiedliche Namen haben. Beachte, dass der Name standardmäßig auf \<AGGREGATION\_FUNCTION>\_\<FIELD\_NAME> gesetzt wird, wenn er nicht angegeben ist.</td>
    </tr>

    <tr>
      <td>invalid group name: GroupName</td>
      <td>Die group mit dem angegebenen Namen wurde nicht gefunden. Überprüfe die Schreibweise noch einmal.</td>
    </tr>
  </tbody>
</table>
