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
{
"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_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.
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
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.
Für CASCADE_DATA_SOURCE gibt es drei mögliche Werte
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.
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.
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.
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 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).
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.
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 | Die verwendete Version von Devin Desktop | 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 |
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 | Die verwendete Devin Desktop-Version | UNSPECIFIED, COUNT |
| latest_intent_type | Gibt 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_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 |
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 | Die verwendete Devin Desktop-Version | UNSPECIFIED, COUNT |
| command_source | Der 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_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 |
Gültige Auswahlmöglichkeiten
| 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 |
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.
| 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 |
| | |
|---|
| 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 | Die verwendete Devin Desktop-Version | 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).
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"
}
}
]
}
]
}
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"
},
}
]
}
]
}
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"
}
}
]
}
]
}
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.
| Fehlermeldung | Erklärung |
|---|
| at least one field or aggregation is required | Es 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_SUM | 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. |
| invalid query table: QUERY_DATA_SOURCE_UNSPECIFIED | Wahrscheinlich 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 should | 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:"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_SUM | 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. |
| 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_acceptances | 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. |
| invalid group name: GroupName | Die group mit dem angegebenen Namen wurde nicht gefunden. Überprüfe die Schreibweise noch einmal. |