Skip to main content

Überblick

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.
Die Analytics API ist in Enterprise-Plänen verfügbar

Spezifikation der Analytics API für Nutzerdaten

Daten aus der Tabelle „Nutzer“ auf der Teams-Seite können mit dem folgenden Befehl abgerufen werden:
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

Beispielausgabe

{
  "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"
    }
  ]
}

Spezifikation der Cascade Analytics API

Die auf der Analytics-Seite angezeigten spezifischen Cascade-Daten können per API abgefragt werden.
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 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.

Beispielabfrage

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

IDE-Typen

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
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.

Cascade-Datenquellen

Für CASCADE_DATA_SOURCE gibt es drei mögliche Werte

Quelle: cascade_lines

Verwenden Sie cascade_lines, um Daten dazu abzufragen, wie viele Cascade-Zeilen pro Tag vorgeschlagen und akzeptiert wurden. Beispielausgabe:
{
  "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.

Quelle: cascade_runs

Verwenden Sie cascade_runs, um Daten zur Modellnutzung, zum Verbrauch von Credits und zum Modus abzufragen. Beispielausgabe:
{
  "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.

Quelle: cascade_tool_usage

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:
{
  "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’

Spezifikation der Custom Analytics API

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.
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 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.

Schemata

Auswahlmöglichkeiten

Auswahlmöglichkeiten sind erforderlich. Jede Auswahlmöglichkeit entspricht einem Wert, der abgefragt werden soll.
{
  "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.

Filter

Filter werden verwendet, um Daten so einzugrenzen, dass sie nur Elemente enthalten, die bestimmte Kriterien erfüllen. Sie sind optional.
{
  "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).

Aggregationen

Mit Aggregationen lassen sich die Daten anhand eines angegebenen Kriteriums in Gruppen aufteilen. Sie sind optional.
{
  "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.

Verfügbare Felder

Nutzerdaten

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 NameDescriptionValid Aggregations
api_keyEin Hash des API key des Nutzers.UNSPECIFIED, COUNT
dateDas UTC-Datum der Autovervollständigung(en).UNSPECIFIED, COUNT
date UTC-xDas Datum der Autovervollständigung mit Zeitzonen-Offset. Zum Beispiel wäre PST „date UTC-8“.UNSPECIFIED, COUNT
hourDie UTC-Stunde der Autovervollständigung(en).UNSPECIFIED, COUNT
languageDie verwendete Programmiersprache.UNSPECIFIED, COUNT
ideDie verwendete IDE.UNSPECIFIED, COUNT
versionDie verwendete Version von Devin DesktopUNSPECIFIED, COUNT
num_acceptancesDie 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_acceptedAus der Autovervollständigung übernommene Codezeilen.SUM, MAX, MIN, AVG
num_bytes_acceptedAus der Autovervollständigung übernommene Bytes.SUM, MAX, MIN, AVG
distinct_usersEindeutige Nutzer.UNSPECIFIED, COUNT
distinct_developer_daysEindeutige Tupel aus (Nutzer, Tag).UNSPECIFIED, COUNT
distinct_developer_hoursEindeutige Tupel aus (Nutzer, Tagesstunde).UNSPECIFIED, COUNT

Chat-Daten

Hinweis: Alle in der Chat-Daten-API bereitgestellten Daten beziehen sich auf die Antworten des Chat-Modells, nicht auf die Fragen der Nutzer.
FeldnameBeschreibungGültige Aggregationen
api_keyEin Hash des API key des NutzersUNSPECIFIED, COUNT
model_idDie ID des Chat-Modells, die bei der Bereitstellung festgelegt wird.UNSPECIFIED, COUNT
dateDas UTC-Datum der Chat-Antwort.UNSPECIFIED, COUNT
date UTC-xDas Datum der Chat-Antwort mit einem Zeitzonenversatz. Zum Beispiel wäre PST „date UTC-8“.UNSPECIFIED, COUNT
ideDie verwendete IDEUNSPECIFIED, COUNT
versionDie verwendete Devin Desktop-VersionUNSPECIFIED, COUNT
latest_intent_typeGibt an, ob die Modellantwort aus einer Code Lens oder einem normalen Chat generiert wird. Normale Chats entsprechen:

CHAT_INTENT_GENERIC

Code Lenses entsprechen dagegen einem der folgenden Werte:

CHAT_INTENT_FUNCTION_EXPLAIN
CHAT_INTENT_FUNCTION_DOCSTRING
CHAT_INTENT_FUNCTION_REFACTOR
CHAT_INTENT_CODE_BLOCK_EXPLAIN
CHAT_INTENT_CODE_BLOCK_REFACTOR
CHAT_INTENT_PROBLEM_EXPLAIN
CHAT_INTENT_FUNCTION_UNIT_TESTS
UNSPECIFIED, COUNT
num_chats_receivedAnzahl der Chat-Nachrichten, die von Devin Desktop an den Nutzer gesendet wurden.SUM, MAX, MIN, AVG
chat_acceptedTrue, 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_cursorTrue, wenn ein Codeblock in der Chat-Antwort von Devin Desktop gesendet wurde und auf die Schaltfläche „Insert“ geklickt wird.SUM, COUNT
chat_appliedTrue, 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_usedAnzahl 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

Befehlsdaten

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.
FeldnameBeschreibungGültige Aggregationen
api_keyEin Hash des API key des Nutzers.UNSPECIFIED, COUNT
dateDas UTC-Datum des Befehls.UNSPECIFIED, COUNT
timestampDer UTC-Zeitstempel des Befehls.UNSPECIFIED, COUNT
languageDie verwendete Programmiersprache.UNSPECIFIED, COUNT
ideDie verwendete IDE.UNSPECIFIED, COUNT
versionDie verwendete Devin Desktop-VersionUNSPECIFIED, COUNT
command_sourceDer Grund, aus dem der Befehl ausgelöst wurde. Gültige Werte sind:

COMMAND_REQUEST_SOURCE_LINE_HINT_CODE_LENS
COMMAND_REQUEST_SOURCE_DEFAULT
COMMAND_REQUEST_SOURCE_RIGHT_CLICK_REFACTOR
COMMAND_REQUEST_SOURCE_FUNCTION_CODE_LENS
COMMAND_REQUEST_SOURCE_FOLLOWUP
COMMAND_REQUEST_SOURCE_CLASS_CODE_LENS
COMMAND_REQUEST_SOURCE_PLAN
COMMAND_REQUEST_SOURCE_SELECTION_HINT_CODE_LENS

COMMAND_REQUEST_SOURCE_DEFAULT entspricht der typischen Befehlsverwendung.
UNSPECIFIED, COUNT
provider_sourceGibt an, ob der Befehl im Generierungs- oder Bearbeitungsmodus ausgelöst wurde. Gültige Werte sind: PROVIDER_SOURCE_COMMAND_GENERATE PROVIDER_SOURCE_COMMAND_EDITUNSPECIFIED, COUNT
lines_addedAnzahl der Codezeilen, die durch den Befehl hinzugefügt wurden.SUM, MAX, MIN, AVG
lines_removedAnzahl der Codezeilen, die durch den Befehl entfernt wurden.SUM, MAX, MIN, AVG
bytes_addedAnzahl der Bytes, die durch den Befehl hinzugefügt wurden.SUM, MAX, MIN, AVG
bytes_removedAnzahl der Bytes, die durch den Befehl entfernt wurden.SUM, MAX, MIN, AVG
selection_linesAnzahl der Codezeilen, die durch den Befehl ausgewählt wurden. Bei Generierungen sollte dieser Wert immer null sein.SUM, MAX, MIN, AVG
selection_bytesAnzahl der Bytes, die durch den Befehl ausgewählt wurden. Bei Generierungen sollte dieser Wert immer null sein.SUM, MAX, MIN, AVG
acceptedOb der Befehl akzeptiert wurde.SUM, COUNT

PCW-Daten

Gültige Auswahlmöglichkeiten

FeldnameBeschreibungGültige Aggregationen
percent_code_writtenProzentualer 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_bytesGesamtzahl der Codeium-Bytes; entspricht codeium_bytes_by_autocomplete + codeium_bytes_by_commandUNSPECIFIED
user_bytesGesamtzahl der vom Nutzer generierten BytesUNSPECIFIED
total_bytescodeium_bytes + user_bytesUNSPECIFIED
codeium_bytes_by_autocompleteGesamtzahl der durch Autocomplete generierten Codeium-BytesUNSPECIFIED
codeium_bytes_by_commandGesamtzahl der durch Befehle generierten Codeium-BytesUNSPECIFIED

Cascade Data

Die Datenquelle Cascade Data enthält für jede an Cascade gesendete Nachricht einen Eintrag.
Um auf alle unten aufgeführten Felder zuzugreifen, stellen Sie bitte sicher, dass Sie Version 1.11.2 oder höher verwenden.
FeldnameBeschreibungGültige Aggregationen
api_keyEin Hash des API key des Nutzers.UNSPECIFIED, COUNT
dateDas UTC-Datum des Befehls.UNSPECIFIED, COUNT
prompts_usedDie 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_usedDie 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
modelDas Modell, das für die an Cascade gesendete Nachricht verwendet wurde.UNSPECIFIED, COUNT
metadataEin Objekt, das Metadaten zur Entwicklungsumgebung enthält. Derzeit befüllte Felder sind: ideVersionUNSPECIFIED, COUNT

Gültige Filter

FeldnameBeschreibungEinige Beispiele
api_keyEin Hash des API key des Nutzers.
languageDie verwendete Programmiersprache.KOTLIN, GO, JAVA
ideDie verwendete IDE.jetbrains, vscode
versionDie verwendete Devin Desktop-Version1.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).

Beispiele

Nutzerdaten

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):
{
  "queryResults": [
    {
      "responseItems": [
        {
          "item": {
            "num_acceptances": "125",
            "num_lines_accepted": "863"
          }
        }
      ]
    }
  ]
}

Chat-Daten

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:
{
  "queryResults": [
    {
      "responseItems": [
        {
          "item": {
            "chat_loc_used": "74",
            "ide": "jetbrains"
          },
        },
        {
          "item": {
            "chat_loc_used":"41",
            "ide":"vscode"
          },
        }
      ]
    }
  ]
}

Befehlsdaten

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:
{
  "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"
          }
        }
      ]
    }
  ]
}

PCW-Daten

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:
{
  "queryResults": [
    {
      "responseItems": [
         {
            "item": {
               "codeium_bytes": "6018",
               "codeium_bytes_by_autocomplete": "4593",
               "codeium_bytes_by_command": "1425",
               "percent_code_written": "0.61",
               "total_bytes": "9900"
             }
         }
     ]
   }
  ]
}

Fehlerbehebung bei Abfragen

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.
FehlermeldungErklärung
at least one field or aggregation is requiredEs wurden keine Auswahlen oder Aggregationen erkannt. Stelle sicher, dass die Anfrage mindestens eine davon enthält.
invalid aggregation function for string type field ide: QUERY_AGGREGATION_SUMEine 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.
invalid query table: QUERY_DATA_SOURCE_UNSPECIFIEDWahrscheinlich gibt es einen Tippfehler im Feld data_source. Überprüfe die Schreibweise noch einmal.
all selection fields should have an aggregation function, or none of them shouldWenn 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:
"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.
invalid aggregation function for string type field ide: QUERY_AGGREGATION_SUMNicht 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.
tried to aggregate on a distinct field: distinct_developer_days. Consider aggregating on the non-distinct fields instead: [api_key date]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:
"aggregations": [
  {
    "field": "distinct_developer_days",
    "name": "distinct_developer_days"
  }
]
Verwende:
"aggregations": [
  {
    "field": "api_key",
    "name": "api_key"
  },
  {
    "field": "date",
    "name": "date"
  }
]
duplicate field alias for selection/aggregation: num_acceptancesAlle 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.
invalid group name: GroupNameDie group mit dem angegebenen Namen wurde nicht gefunden. Überprüfe die Schreibweise noch einmal.