Skip to main content

Panoramica

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

Esempio di output

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

Esempio di query

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

Tipi di IDE

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

Fonte: cascade_lines

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.

Fonte: cascade_runs

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.

Fonte: cascade_tool_usage

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.

Schemi

Selezioni

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.

Filtri

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

Aggregazioni

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.

Campi disponibili

Dati utente

Tutti i dati della sorgente 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 campoDescrizioneAggregazioni valide
api_keyUn hash della API key dell’utente.UNSPECIFIED, COUNT
dateLa data UTC del completamento automatico o dei completamenti automatici.UNSPECIFIED, COUNT
date UTC-xLa data del completamento automatico, con uno scostamento di fuso orario. Per esempio, PST sarebbe “date UTC-8”.UNSPECIFIED, COUNT
hourL’ora UTC del completamento automatico o dei completamenti automatici.UNSPECIFIED, COUNT
languageIl linguaggio di programmazione utilizzato.UNSPECIFIED, COUNT
ideL’IDE utilizzato.UNSPECIFIED, COUNT
versionVersione dell’estensione/plugin (language-server), ad es. 1.48.xUNSPECIFIED, COUNT
num_acceptancesIl 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_acceptedRighe di codice accettate dal completamento automatico.SUM, MAX, MIN, AVG
num_bytes_acceptedByte accettati dal completamento automatico.SUM, MAX, MIN, AVG
distinct_usersUtenti distinti.UNSPECIFIED, COUNT
distinct_developer_daysTuple distinte (utente, giorno).UNSPECIFIED, COUNT
distinct_developer_hoursTuple distinte (utente, ora del giorno).UNSPECIFIED, COUNT

Dati della chat

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 campoDescrizioneAggregazioni valide
api_keyUn hash della API key dell’utenteUNSPECIFIED, COUNT
model_idL’ID del modello di chat, impostato al momento della distribuzione.UNSPECIFIED, COUNT
dateLa data UTC della risposta della chat.UNSPECIFIED, COUNT
date UTC-xLa data della risposta della chat, con un offset del fuso orario. Per esempio, PST sarebbe “date UTC-8”.UNSPECIFIED, COUNT
ideL’IDE in usoUNSPECIFIED, COUNT
versionVersione dell’estensione/plugin (language-server), ad es. 1.48.xUNSPECIFIED, COUNT
latest_intent_typeIndica 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_receivedNumero di messaggi di chat inviati da Devin Desktop all’utente.SUM, MAX, MIN, AVG
chat_acceptedVero 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_cursorVero se un blocco di codice è stato inviato nella risposta della chat di Devin Desktop e si fa clic sul pulsante “Insert”.SUM, COUNT
chat_appliedVero 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_usedRighe 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

Dati del comando

Nota che la sorgente dati del comando contiene tutti i comandi, inclusi quelli rifiutati. Il campo “accepted” può essere usato per filtrare solo i comandi accettati.
Nome del campoDescrizioneAggregazioni valide
api_keyUn hash dell’API key dell’utente.UNSPECIFIED, COUNT
dateLa data UTC del comando.UNSPECIFIED, COUNT
timestampIl timestamp UTC del comando.UNSPECIFIED, COUNT
languageIl linguaggio di programmazione utilizzato.UNSPECIFIED, COUNT
ideL’IDE utilizzato.UNSPECIFIED, COUNT
versionVersione dell’estensione/plugin (language-server), ad es. 1.48.xUNSPECIFIED, COUNT
command_sourceIl 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_sourceDetermina se il comando è stato attivato in modalità generazione o modifica. I valori validi sono: PROVIDER_SOURCE_COMMAND_GENERATE PROVIDER_SOURCE_COMMAND_EDITUNSPECIFIED, COUNT
lines_addedNumero di righe di codice aggiunte dal comando.SUM, MAX, MIN, AVG
lines_removedNumero di righe di codice rimosse dal comando.SUM, MAX, MIN, AVG
bytes_addedNumero di byte aggiunti dal comando.SUM, MAX, MIN, AVG
bytes_removedNumero di byte rimossi dal comando.SUM, MAX, MIN, AVG
selection_linesNumero di righe di codice selezionate dal comando. Per le generazioni, dovrebbe essere sempre zero.SUM, MAX, MIN, AVG
selection_bytesNumero di byte selezionati dal comando. Per le generazioni, dovrebbe essere sempre zero.SUM, MAX, MIN, AVG
acceptedIndica se il comando è stato accettato.SUM, COUNT

Dati PCW

Selezioni valide

Nome campoDescrizioneAggregazioni valide
percent_code_writtenPercentuale 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_bytesnumero totale di byte Codeium, pari a codeium_bytes_by_autocomplete + codeium_bytes_by_commandUNSPECIFIED
user_bytesnumero totale di byte generati dall’utenteUNSPECIFIED
total_bytescodeium_bytes + user_bytesUNSPECIFIED
codeium_bytes_by_autocompletenumero totale di byte Codeium generati dal completamento automaticoUNSPECIFIED
codeium_bytes_by_commandnumero totale di byte Codeium generati dal comandoUNSPECIFIED

Dati di Cascade

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 campoDescrizioneAggregazioni valide
api_keyL’hash dell’API key dell’utente.UNSPECIFIED, COUNT
dateLa data UTC del comando.UNSPECIFIED, COUNT
prompts_usedIl 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_usedIl 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
modelIl modello utilizzato per il messaggio inviato a Cascade.UNSPECIFIED, COUNT
metadataUn oggetto contenente metadati relativi all’ambiente di sviluppo. I campi attualmente valorizzati includono: ideVersionUNSPECIFIED, COUNT

Filtri validi

Nome campoDescrizioneAlcuni esempi
api_keyL’hash della API key dell’utente.
languageIl linguaggio di programmazione utilizzato.KOTLIN, GO, JAVA
ideL’IDE utilizzato.jetbrains, vscode
versionVersione dell’estensione/plugin (language-server), ad es. 1.48.x1.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).

Esempi

Dati utente

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

Dati della chat

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

Dati PCW

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

Debug delle query

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 erroreSpiegazione
at least one field or aggregation is requiredNon è 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_SUMUna 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_UNSPECIFIEDProbabilmente c’è un errore di battitura nel campo data_source; verificane l’ortografia.
all selection fields should have an aggregation function, or none of them shouldSe 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_SUMNon 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_acceptancesTutte 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: GroupNameIl group con il nome specificato non è stato trovato; verificane l’ortografia.