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 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 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
versionLa versione di Devin Desktop utilizzata.UNSPECIFIED, 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
versionLa versione di Devin Desktop utilizzataUNSPECIFIED, 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 dei comandi

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 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
versionLa versione di Devin Desktop utilizzata.UNSPECIFIED, 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
versionLa versione di Devin Desktop utilizzata1.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.