Devin Desktop supporta un’API per l’analytics personalizzata. Consente di recuperare dati da completamento automatico, chat e comandi, con una varietà di filtri, raggruppamenti e aggregazioni.
Forniamo tutti gli esempi in curl; possono poi essere convertiti in richieste HTTP in altri linguaggi.
L’API di Analytics è disponibile per i piani Enterprise
Specifica dell’API di analisi dei dati utente
I dati della tabella Users nella pagina Teams possono essere ottenuti con il seguente comando:
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: La chiave di servizio: un utente amministratore può crearne una dalla sezione relativa alla chiave di servizio nella pagina Settings. Il ruolo della chiave di servizio deve disporre delle autorizzazioni “Teams sola lettura”.
GROUP_NAME: Il nome di un gruppo su cui filtrare. Questo campo è facoltativo.
START_TIMESTAMP/END_TIMESTAMP: Timestamp nel formato RFC 3339, quindi ad es. 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"
}
]
}
Specifica dell’API di Cascade Analytics
I dati specifici di Cascade visibili nella pagina analytics possono essere recuperati tramite API.
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: La chiave di servizio - un utente amministratore può crearne una nuova da Settings del team
GROUP_NAME: Il nome di un gruppo in base a cui filtrare. Questo campo è facoltativo. Non può essere impostato se è impostato il campo emails.
START_TIMESTAMP/END_TIMESTAMP: Timestamp in formato RFC 3339, quindi ad es. 2023-01-01T00:00:00Z
EMAILS: Un elenco di indirizzi email in base a cui filtrare. Questo campo è facoltativo. Non può essere impostato se è impostato il campo group_name.
IDE_TYPES: Un elenco di tipi di IDE in base a cui filtrare. Questo campo è facoltativo. I valori possibili sono descritti di seguito.
QUERY_REQUESTS: Un elenco di richieste di interrogazione da effettuare. Questo campo è obbligatorio. I valori possibili di CASCADE_DATA_SOURCE sono descritti di seguito.
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
Suddividiamo i dati di cascade in categorie in base al tipo di IDE. Se il campo ide_types non è incluso nella query, vengono restituiti i dati per tutti i tipi di IDE. Se desideri recuperare i dati di un solo IDE, puoi usare una delle seguenti opzioni:
- “editor” per Devin Desktop Editor
- “jetbrains” per il plugin JetBrains
- “cli” per Devin CLI
Quando filtri per Devin CLI ("cli"), solo cascade_runs restituisce dati. Le origini dati cascade_lines e cascade_tool_usage non sono supportate per Devin CLI e restituiranno risultati vuoti.
Origini dei dati di Cascade
Esistono tre possibili valori per CASCADE_DATA_SOURCE
Usa cascade_lines per recuperare i dati relativi alle linee cascade suggerite e accettate ogni giorno.
Output di esempio:
{
"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: Il numero di righe suggerite nel giorno indicato.
linesAccepted: Il numero di righe accettate nel giorno indicato.
Usa cascade_runs per recuperare i dati sull’utilizzo del modello, sul consumo di crediti e sulla modalità.
Output di esempio:
{
"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: La data del run.
model: Il modello utilizzato per il messaggio.
mode: La modalità del run. Una tra CONVERSATIONAL_PLANNER_MODE_DEFAULT (per la modalità di scrittura), CONVERSATIONAL_PLANNER_MODE_READ_ONLY (per la modalità di sola lettura), CONVERSATIONAL_PLANNER_MODE_NO_TOOL (per la modalità legacy) oppure UNKNOWN.
messagesSent: Il numero di messaggi inviati.
cascadeId: L’ID del run. Questo ID può essere usato per capire quante conversazioni distinte sono state avviate (anziché quante volte l’utente invia un messaggio).
promptsUsed: Il numero di crediti utilizzati. Questo valore viene restituito in centesimi. Ad esempio, 0.25 crediti viene restituito come 25 e 1 credito come 100.
I dati restituiti dall’API sono in formato grezzo, il che può spiegare eventuali valori “UNKNOWN”. Se utilizzi questa origine dati per le tue metriche, è consigliabile aggregare in base alle metriche specifiche che ti interessano (ad esempio, sommando il campo promptsUsed per comprendere i modelli di utilizzo degli utenti, messagesSent per comprendere il coinvolgimento degli utenti, ecc.), poiché è possibile che i dati relativi a modalità e prompt siano distribuiti tra più voci.
Usa cascade_tool_usage per recuperare dati sull’utilizzo degli strumenti. Tieni presente che restituisce un conteggio aggregato degli utilizzi degli strumenti nel periodo specificato.
Esempio di output:
{
"queryResults": [
{
"cascadeToolUsage": {
"cascadeToolUsage": [
{
"tool": "CODE_ACTION",
"count": "15"
},
{
"tool": "LIST_DIRECTORY",
"count": "20"
},
{
"tool": "MCP_TOOL",
"count": "12"
},
{
"tool": "MEMORY",
"count": "4"
}
]
}
}
]
}
tool: Lo strumento usato per il messaggio.
count: Il numero di volte in cui lo strumento è stato usato.
Ecco una mappa degli enum restituiti e del nome leggibile associato, così come viene visualizzato nella UI:
- CODE_ACTION: ‘Modifica codice’
- VIEW_FILE: ‘Visualizza file’
- RUN_COMMAND: ‘Esegui comando’
- FIND: ‘Strumento di ricerca’
- GREP_SEARCH: ‘Ricerca Grep’
- VIEW_FILE_OUTLINE: ‘Struttura del file’
- MQUERY: ‘Riptide’
- LIST_DIRECTORY: ‘Elenca directory’
- MCP_TOOL: ‘Tool MCP’
- PROPOSE_CODE: ‘Proponi codice’
- SEARCH_WEB: ‘Cerca sul Web’
- MEMORY: ‘Memoria’
- PROXY_WEB_SERVER: ‘Anteprima nel Browser’
- DEPLOY_WEB_APP: ‘Distribuisci app web’
Specifica della Custom Analytics API
Alcune origini dati consentono query personalizzabili tramite la Custom Analytics API.
Gli schemi completi per selezioni, filtri, aggregazioni e ordinamenti sono riportati nella sezione seguente, in formato JSON. Alla fine del documento troverai esempi di query per ciascuna delle tre origini dati, insieme a suggerimenti per il debug delle query.
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: seleziona USER_DATA, CHAT_DATA, COMMAND_DATA, PCW_DATA oppure CASCADE_DATA, a seconda che tu stia cercando dati di completamento automatico, chat, Command, PCW o Cascade.
SERVICE_KEY: La chiave di servizio: un utente admin può crearne una nuova da Settings del team. Il ruolo della chiave di servizio deve disporre dell’autorizzazione “Analytics Read”.
GROUP_NAME: Il nome di un gruppo in base a cui filtrare. Questo campo è facoltativo.
Le selezioni sono obbligatorie. Ogni selezione corrisponde a un valore su cui eseguire la query.
{
"field": "<FIELD_NAME>",
"name": "<NAME>",
"aggregation_function": "QUERY_AGGREGATION_<AGGREGATION_FUNCTION>"
}
FIELD_NAME: il campo che desideri recuperare. Vedi la sezione Campi disponibili di seguito.
NAME: un alias per il campo. Se non specificato, sarà la versione in minuscolo di <AGGREGATION_FUNCTION>_<FIELD_NAME>, ad es. sum_num_acceptances. Deve essere distinto da tutti gli altri nomi di campi e aggregazioni.
AGGREGATION_FUNCTION: deve essere uno dei seguenti: UNSPECIFIED, COUNT, SUM, AVG, MAX, MIN. Se “aggregation_function” non è specificato, il valore predefinito è UNSPECIFIED.
I filtri servono a restringere i dati in modo da includere solo gli elementi che soddisfano determinati criteri. Sono facoltativi.
{
"name": "<NAME>",
"value": "<VALUE>",
"filter": "QUERY_FILTER_<FILTER>"
}
NAME: il nome del campo che desideri filtrare. Se l’elemento filtrato coincide con una Selection/Aggregation, deve essere uguale al nome del campo/dell’aggregazione.
VALUE: il valore da confrontare.
FILTER: uno tra EQUAL, NOT_EQUAL, GREATER_THAN, LESS_THAN, GE (maggiore o uguale), LE (minore o uguale).
Le aggregazioni vengono utilizzate per suddividere i dati in gruppi in base a un criterio specifico. Sono facoltative.
{
"field": <FIELD_NAME>,
"name": <NAME>
}
FIELD_NAME: Il campo che desideri recuperare. Consulta la sezione Campi disponibili.
NAME: Un alias del campo. Deve essere distinto da tutti gli altri nomi di campi e aggregazioni.
Tutti i dati della fonte USER_DATA sono aggregati per utente e per ora.
Nota: PCW (percentuale di codice scritto) ora ha una tabella dedicata e non dipende dalla tabella user_data.
| Nome campo | Descrizione | Aggregazioni valide |
|---|
| api_key | Un hash della API key dell’utente. | UNSPECIFIED, COUNT |
| date | La data UTC del completamento automatico o dei completamenti automatici. | UNSPECIFIED, COUNT |
| date UTC-x | La data del completamento automatico, con uno scostamento di fuso orario. Per esempio, PST sarebbe “date UTC-8”. | UNSPECIFIED, COUNT |
| hour | L’ora UTC del completamento automatico o dei completamenti automatici. | UNSPECIFIED, COUNT |
| language | Il linguaggio di programmazione utilizzato. | UNSPECIFIED, COUNT |
| ide | L’IDE utilizzato. | UNSPECIFIED, COUNT |
| version | La versione di Devin Desktop utilizzata. | UNSPECIFIED, COUNT |
| num_acceptances | Il numero di volte in cui l’utente ha accettato un completamento automatico. Questo accade quando l’utente scrive del codice, vede del testo grigio e preme tab. | SUM, MAX, MIN, AVG |
| num_lines_accepted | Righe di codice accettate dal completamento automatico. | SUM, MAX, MIN, AVG |
| num_bytes_accepted | Byte accettati dal completamento automatico. | SUM, MAX, MIN, AVG |
| distinct_users | Utenti distinti. | UNSPECIFIED, COUNT |
| distinct_developer_days | Tuple distinte (utente, giorno). | UNSPECIFIED, COUNT |
| distinct_developer_hours | Tuple distinte (utente, ora del giorno). | UNSPECIFIED, COUNT |
Si noti che tutti i dati forniti nell’API dei dati della chat si riferiscono alle risposte del modello di chat, non alle domande degli utenti.
| Nome del campo | Descrizione | Aggregazioni valide |
|---|
| api_key | Un hash della API key dell’utente | UNSPECIFIED, COUNT |
| model_id | L’ID del modello di chat, impostato al momento della distribuzione. | UNSPECIFIED, COUNT |
| date | La data UTC della risposta della chat. | UNSPECIFIED, COUNT |
| date UTC-x | La data della risposta della chat, con un offset del fuso orario. Per esempio, PST sarebbe “date UTC-8”. | UNSPECIFIED, COUNT |
| ide | L’IDE in uso | UNSPECIFIED, COUNT |
| version | La versione di Devin Desktop utilizzata | UNSPECIFIED, COUNT |
| latest_intent_type | Indica se la risposta del modello viene generata da una code lens o da una chat normale. Le chat normali corrispondono a:
CHAT_INTENT_GENERIC
mentre le code lens corrispondono a uno dei seguenti valori:
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 | Numero di messaggi di chat inviati da Devin Desktop all’utente. | SUM, MAX, MIN, AVG |
| chat_accepted | Vero se un blocco di codice è stato inviato nella risposta della chat di Devin Desktop e si fa clic sul pulsante Thumbs up. | SUM, COUNT |
| chat_inserted_at_cursor | Vero se un blocco di codice è stato inviato nella risposta della chat di Devin Desktop e si fa clic sul pulsante “Insert”. | SUM, COUNT |
| chat_applied | Vero se un blocco di codice è stato inviato nella risposta della chat di Devin Desktop e si fa clic sul pulsante “Apply Diff”. | SUM, COUNT |
| chat_loc_used | Righe di codice utilizzate, se un blocco di codice è stato inviato nella chat di Devin Desktop e viene premuto uno dei pulsanti “Insert”, “Copy” o “Apply Diff”. | SUM, MAX, MIN, AVG |
Nota che l’origine dati dati del comando contiene tutti i comandi, inclusi quelli rifiutati. Il campo “accepted” può essere usato per filtrare solo i comandi accettati.
| Nome del campo | Descrizione | Aggregazioni valide |
|---|
| api_key | Un hash dell’API key dell’utente. | UNSPECIFIED, COUNT |
| date | La data UTC del comando. | UNSPECIFIED, COUNT |
| timestamp | Il timestamp UTC del comando. | UNSPECIFIED, COUNT |
| language | Il linguaggio di programmazione utilizzato. | UNSPECIFIED, COUNT |
| ide | L’IDE utilizzato. | UNSPECIFIED, COUNT |
| version | La versione di Devin Desktop utilizzata. | UNSPECIFIED, COUNT |
| command_source | Il motivo per cui il comando è stato attivato. I valori validi sono:
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 corrisponde al normale utilizzo dei comandi. | UNSPECIFIED, COUNT |
| provider_source | Determina se il comando è stato attivato in modalità generazione o modifica. I valori validi sono: PROVIDER_SOURCE_COMMAND_GENERATE PROVIDER_SOURCE_COMMAND_EDIT | UNSPECIFIED, COUNT |
| lines_added | Numero di righe di codice aggiunte dal comando. | SUM, MAX, MIN, AVG |
| lines_removed | Numero di righe di codice rimosse dal comando. | SUM, MAX, MIN, AVG |
| bytes_added | Numero di byte aggiunti dal comando. | SUM, MAX, MIN, AVG |
| bytes_removed | Numero di byte rimossi dal comando. | SUM, MAX, MIN, AVG |
| selection_lines | Numero di righe di codice selezionate dal comando. Per le generazioni, dovrebbe essere sempre zero. | SUM, MAX, MIN, AVG |
| selection_bytes | Numero di byte selezionati dal comando. Per le generazioni, dovrebbe essere sempre zero. | SUM, MAX, MIN, AVG |
| accepted | Indica se il comando è stato accettato. | SUM, COUNT |
| Nome campo | Descrizione | Aggregazioni valide |
|---|
| percent_code_written | Percentuale di codice scritto. Calcolata come (numero di byte Codeium generati) / (numero di byte Codeium generati + numero di byte generati dall’utente). Questa metrica può presentare un’elevata variabilità nell’arco della stessa giornata o tra utenti diversi, quindi consigliamo di aggregarla su base settimanale. | UNSPECIFIED |
| codeium_bytes | numero totale di byte Codeium, pari a codeium_bytes_by_autocomplete + codeium_bytes_by_command | UNSPECIFIED |
| user_bytes | numero totale di byte generati dall’utente | UNSPECIFIED |
| total_bytes | codeium_bytes + user_bytes | UNSPECIFIED |
| codeium_bytes_by_autocomplete | numero totale di byte Codeium generati dal completamento automatico | UNSPECIFIED |
| codeium_bytes_by_command | numero totale di byte Codeium generati dal comando | UNSPECIFIED |
L’origine dati Cascade contiene una voce per ogni messaggio inviato a Cascade.
Per accedere a tutti i campi elencati di seguito, assicurati di utilizzare la versione 1.11.2 o successiva.
| Nome campo | Descrizione | Aggregazioni valide |
|---|
| api_key | L’hash dell’API key dell’utente. | UNSPECIFIED, COUNT |
| date | La data UTC del comando. | UNSPECIFIED, COUNT |
| prompts_used | Il numero di crediti prompt utilizzati nel prompt inviato a Cascade, restituito in centesimi. Per esempio, 0,25 crediti viene restituito come 25 e 1 credito viene restituito come 100. | UNSPECIFIED, SUM, AVG, MIN, MAX |
| flex_credits_used | Il numero di crediti aggiuntivi/condivisi utilizzati, sul totale di prompts_used, in un prompt inviato a Cascade, restituito in centesimi. Per esempio, 0,25 crediti viene restituito come 25 e 1 credito viene restituito come 100. | UNSPECIFIED, SUM, AVG, MIN, MAX |
| model | Il modello utilizzato per il messaggio inviato a Cascade. | UNSPECIFIED, COUNT |
| metadata | Un oggetto contenente metadati relativi all’ambiente di sviluppo. I campi attualmente valorizzati includono: ideVersion | UNSPECIFIED, COUNT |
| | |
|---|
| Nome campo | Descrizione | Alcuni esempi |
| api_key | L’hash della API key dell’utente. | |
| language | Il linguaggio di programmazione utilizzato. | KOTLIN, GO, JAVA |
| ide | L’IDE utilizzato. | jetbrains, vscode |
| version | La versione di Devin Desktop utilizzata | 1.28.0, 130.0 |
Per filtrare per data, usa start_timestamp e end_timestamp, che devono essere nel formato RFC 3339 (ad es. 2023-01-01T00:00:00Z, come nell’esempio seguente).
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
Questa query calcola la percentuale complessiva di codice scritto nel mese di gennaio 2024. Risposta di esempio (JSON formattato per migliorarne la leggibilità):
{
"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
Questa query mostra il numero di righe di codice accettate tramite la code lens “Generate Docstring” dall’inizio, raggruppate per IDE.
Risposta di esempio:
{
"queryResults": [
{
"responseItems": [
{
"item": {
"chat_loc_used": "74",
"ide": "jetbrains"
},
},
{
"item": {
"chat_loc_used":"41",
"ide":"vscode"
},
}
]
}
]
}
Dati del comando
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
Questa query recupera, per linguaggio di programmazione, il numero di righe aggiunte e rimosse dai comandi “edit”.
Risposta di esempio:
{
"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
Questa query recupera i dati PCW (percentuale di codice scritto), insieme ai byte filtrati per il linguaggio Go.
Esempio di risposta:
{
"queryResults": [
{
"responseItems": [
{
"item": {
"codeium_bytes": "6018",
"codeium_bytes_by_autocomplete": "4593",
"codeium_bytes_by_command": "1425",
"percent_code_written": "0.61",
"total_bytes": "9900"
}
}
]
}
]
}
A partire dalla versione 1.10.0, le query non valide restituiscono un messaggio di errore. Questa sezione raccoglie alcuni messaggi di errore comuni, il loro significato e come eseguire il debug delle query corrispondenti.
| Messaggio di errore | Spiegazione |
|---|
| at least one field or aggregation is required | Non è stata rilevata alcuna selezione o aggregazione: assicurati che la richiesta della query ne includa almeno una. |
| invalid aggregation function for string type field ide: QUERY_AGGREGATION_SUM | Una delle selezioni usa una funzione di aggregazione non valida. In questo caso, è stato usato SUM sul campo “ide”, ma questo campo supporta solo COUNT e UNSPECIFIED. |
| invalid query table: QUERY_DATA_SOURCE_UNSPECIFIED | Probabilmente c’è un errore di battitura nel campo data_source; verificane l’ortografia. |
| all selection fields should have an aggregation function, or none of them should | Se sono presenti più campi di selezione, tutti devono contenere un aggregation_function oppure nessuno deve contenerlo. Per esempio, questa selezione non è valida perché num_acceptances viene sommato, mentre num_lines_accepted no:"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"
}
]
Nota: PCW è sempre considerato aggregato. Se non viene scelto esplicitamente alcun aggregation_function, viene considerato non specificato. Se vuoi ottenere informazioni su entrambi questi campi, usa due query separate. |
| invalid aggregation function for string type field ide: QUERY_AGGREGATION_SUM | Non tutti i campi supportano tutte le funzioni di aggregazione; consulta la sezione dei campi disponibili per vedere le corrispondenze. In questo caso, la query usa la funzione di aggregazione QUERY_AGGREGATION_SUM con il campo “ide”, il che non è valido. |
| tried to aggregate on a distinct field: distinct_developer_days. Consider aggregating on the non-distinct fields instead: [api_key date] | I campi con il pattern “distinct_*” non possono comparire nella sezione aggregations; il messaggio di errore suggerisce invece uno o più campi alternativi su cui aggregare. Quindi, invece di:"aggregations": [
{
"field": "distinct_developer_days",
"name": "distinct_developer_days"
}
]
Prova:"aggregations": [
{
"field": "api_key",
"name": "api_key"
},
{
"field": "date",
"name": "date"
}
]
|
| duplicate field alias for selection/aggregation: num_acceptances | Tutte le selezioni e le aggregazioni devono avere un nome diverso. Tieni presente che, se il nome non è specificato, per default viene impostato su <AGGREGATION_FUNCTION>_<FIELD_NAME>. |
| invalid group name: GroupName | Il group con il nome specificato non è stato trovato; verificane l’ortografia. |