Consulta personalizada de analíticas
curl --request POST \
--url https://server.codeium.com/api/v1/Analytics \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"service_key": "<string>",
"group_name": "<string>",
"query_requests": [
{
"data_source": "<string>",
"selections": [
{
"field": "<string>",
"name": "<string>",
"aggregation_function": "<string>"
}
],
"filters": [
{
"name": "<string>",
"filter": "<string>",
"value": "<string>"
}
],
"aggregations": [
{
"field": "<string>",
"name": "<string>"
}
]
}
]
}
'import requests
url = "https://server.codeium.com/api/v1/Analytics"
payload = {
"service_key": "<string>",
"group_name": "<string>",
"query_requests": [
{
"data_source": "<string>",
"selections": [
{
"field": "<string>",
"name": "<string>",
"aggregation_function": "<string>"
}
],
"filters": [
{
"name": "<string>",
"filter": "<string>",
"value": "<string>"
}
],
"aggregations": [
{
"field": "<string>",
"name": "<string>"
}
]
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
service_key: '<string>',
group_name: '<string>',
query_requests: [
{
data_source: '<string>',
selections: [{field: '<string>', name: '<string>', aggregation_function: '<string>'}],
filters: [{name: '<string>', filter: '<string>', value: '<string>'}],
aggregations: [{field: '<string>', name: '<string>'}]
}
]
})
};
fetch('https://server.codeium.com/api/v1/Analytics', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://server.codeium.com/api/v1/Analytics",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'service_key' => '<string>',
'group_name' => '<string>',
'query_requests' => [
[
'data_source' => '<string>',
'selections' => [
[
'field' => '<string>',
'name' => '<string>',
'aggregation_function' => '<string>'
]
],
'filters' => [
[
'name' => '<string>',
'filter' => '<string>',
'value' => '<string>'
]
],
'aggregations' => [
[
'field' => '<string>',
'name' => '<string>'
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://server.codeium.com/api/v1/Analytics"
payload := strings.NewReader("{\n \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"query_requests\": [\n {\n \"data_source\": \"<string>\",\n \"selections\": [\n {\n \"field\": \"<string>\",\n \"name\": \"<string>\",\n \"aggregation_function\": \"<string>\"\n }\n ],\n \"filters\": [\n {\n \"name\": \"<string>\",\n \"filter\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"aggregations\": [\n {\n \"field\": \"<string>\",\n \"name\": \"<string>\"\n }\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://server.codeium.com/api/v1/Analytics")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"query_requests\": [\n {\n \"data_source\": \"<string>\",\n \"selections\": [\n {\n \"field\": \"<string>\",\n \"name\": \"<string>\",\n \"aggregation_function\": \"<string>\"\n }\n ],\n \"filters\": [\n {\n \"name\": \"<string>\",\n \"filter\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"aggregations\": [\n {\n \"field\": \"<string>\",\n \"name\": \"<string>\"\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.codeium.com/api/v1/Analytics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"query_requests\": [\n {\n \"data_source\": \"<string>\",\n \"selections\": [\n {\n \"field\": \"<string>\",\n \"name\": \"<string>\",\n \"aggregation_function\": \"<string>\"\n }\n ],\n \"filters\": [\n {\n \"name\": \"<string>\",\n \"filter\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"aggregations\": [\n {\n \"field\": \"<string>\",\n \"name\": \"<string>\"\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"queryResults": [
{
"responseItems": [
{
"item": {}
}
]
}
]
}API de analítica
Consulta personalizada de analíticas
Consultas flexibles de analíticas con selecciones, filtros y agregaciones personalizadas para datos de autocompletado, chat, Command y PCW.
POST
/
api
/
v1
/
Analytics
Consulta personalizada de analíticas
curl --request POST \
--url https://server.codeium.com/api/v1/Analytics \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"service_key": "<string>",
"group_name": "<string>",
"query_requests": [
{
"data_source": "<string>",
"selections": [
{
"field": "<string>",
"name": "<string>",
"aggregation_function": "<string>"
}
],
"filters": [
{
"name": "<string>",
"filter": "<string>",
"value": "<string>"
}
],
"aggregations": [
{
"field": "<string>",
"name": "<string>"
}
]
}
]
}
'import requests
url = "https://server.codeium.com/api/v1/Analytics"
payload = {
"service_key": "<string>",
"group_name": "<string>",
"query_requests": [
{
"data_source": "<string>",
"selections": [
{
"field": "<string>",
"name": "<string>",
"aggregation_function": "<string>"
}
],
"filters": [
{
"name": "<string>",
"filter": "<string>",
"value": "<string>"
}
],
"aggregations": [
{
"field": "<string>",
"name": "<string>"
}
]
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
service_key: '<string>',
group_name: '<string>',
query_requests: [
{
data_source: '<string>',
selections: [{field: '<string>', name: '<string>', aggregation_function: '<string>'}],
filters: [{name: '<string>', filter: '<string>', value: '<string>'}],
aggregations: [{field: '<string>', name: '<string>'}]
}
]
})
};
fetch('https://server.codeium.com/api/v1/Analytics', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://server.codeium.com/api/v1/Analytics",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'service_key' => '<string>',
'group_name' => '<string>',
'query_requests' => [
[
'data_source' => '<string>',
'selections' => [
[
'field' => '<string>',
'name' => '<string>',
'aggregation_function' => '<string>'
]
],
'filters' => [
[
'name' => '<string>',
'filter' => '<string>',
'value' => '<string>'
]
],
'aggregations' => [
[
'field' => '<string>',
'name' => '<string>'
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://server.codeium.com/api/v1/Analytics"
payload := strings.NewReader("{\n \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"query_requests\": [\n {\n \"data_source\": \"<string>\",\n \"selections\": [\n {\n \"field\": \"<string>\",\n \"name\": \"<string>\",\n \"aggregation_function\": \"<string>\"\n }\n ],\n \"filters\": [\n {\n \"name\": \"<string>\",\n \"filter\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"aggregations\": [\n {\n \"field\": \"<string>\",\n \"name\": \"<string>\"\n }\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://server.codeium.com/api/v1/Analytics")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"query_requests\": [\n {\n \"data_source\": \"<string>\",\n \"selections\": [\n {\n \"field\": \"<string>\",\n \"name\": \"<string>\",\n \"aggregation_function\": \"<string>\"\n }\n ],\n \"filters\": [\n {\n \"name\": \"<string>\",\n \"filter\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"aggregations\": [\n {\n \"field\": \"<string>\",\n \"name\": \"<string>\"\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.codeium.com/api/v1/Analytics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"query_requests\": [\n {\n \"data_source\": \"<string>\",\n \"selections\": [\n {\n \"field\": \"<string>\",\n \"name\": \"<string>\",\n \"aggregation_function\": \"<string>\"\n }\n ],\n \"filters\": [\n {\n \"name\": \"<string>\",\n \"filter\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"aggregations\": [\n {\n \"field\": \"<string>\",\n \"name\": \"<string>\"\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"queryResults": [
{
"responseItems": [
{
"item": {}
}
]
}
]
}Descripción general
Solicitud
string
requerido
Tu clave de servicio con permisos de “Analytics Read”
string
Filtra los resultados para mostrar solo los usuarios de un grupo específico (opcional)
array
requerido
Array de objetos de solicitud de consulta que definen los datos que se van a recuperar
Mostrar Objeto de solicitud de consulta
Mostrar Objeto de solicitud de consulta
string
requerido
Origen de datos que se va a consultar. Opciones:
QUERY_DATA_SOURCE_USER_DATA- Datos de autocompletadoQUERY_DATA_SOURCE_CHAT_DATA- Datos de chatQUERY_DATA_SOURCE_COMMAND_DATA- Datos de CommandQUERY_DATA_SOURCE_PCW_DATA- Datos de porcentaje de código escrito
array
requerido
Array de selecciones de campos que se van a recuperar
Mostrar Objeto de selección
Mostrar Objeto de selección
string
requerido
Nombre del campo que se va a seleccionar (consulta la sección Campos disponibles)
string
Alias del campo. Si no se especifica, el valor predeterminado es
{aggregation_function}_{field_name} (en minúsculas)string
Función de agregación que se va a aplicar:
QUERY_AGGREGATION_UNSPECIFIED(predeterminado)QUERY_AGGREGATION_COUNTQUERY_AGGREGATION_SUMQUERY_AGGREGATION_AVGQUERY_AGGREGATION_MAXQUERY_AGGREGATION_MIN
array
Array de filtros que se van a aplicar
Mostrar Objeto de filtro
Mostrar Objeto de filtro
string
requerido
Nombre del campo por el que se va a filtrar
string
requerido
Operación de filtro:
QUERY_FILTER_EQUALQUERY_FILTER_NOT_EQUALQUERY_FILTER_GREATER_THANQUERY_FILTER_LESS_THANQUERY_FILTER_GE(mayor o igual que)QUERY_FILTER_LE(menor o igual que)
string
requerido
Valor con el que se va a comparar
Estructura de la solicitud de consulta
- data_source (obligatorio): fuente de datos que se va a consultar
- selections (obligatorio): array de selecciones de campos que se van a recuperar
- filters (opcional): array de filtros que se van a aplicar
- aggregations (opcional): array de agregaciones para agrupar por
Selecciones
- field (obligatorio): Nombre del campo que se va a seleccionar
- name (opcional): Alias del campo
- aggregation_function (opcional): Función de agregación que se va a aplicar
Ejemplo de selección
{
"field": "num_acceptances",
"name": "total_acceptances",
"aggregation_function": "QUERY_AGGREGATION_SUM"
}
Filtros
- name (obligatorio): Nombre del campo por el que filtrar
- filter (obligatorio): Operación de filtro
- value (obligatorio): Valor con el que comparar
Ejemplo de filtro
{
"name": "language",
"filter": "QUERY_FILTER_EQUAL",
"value": "PYTHON"
}
Agregaciones
- field (obligatorio): Nombre del campo por el que se agrupan los datos
- name (obligatorio): Alias del campo de agregación
Ejemplo de agregación
{
"field": "ide",
"name": "ide_type"
}
Campos disponibles
Datos del usuario
| Nombre del campo | Descripción | Agregaciones válidas |
|---|---|---|
api_key | Hash de la clave de API del usuario | UNSPECIFIED, COUNT |
date | Fecha UTC del autocompletado | UNSPECIFIED, COUNT |
date UTC-x | Fecha con desplazamiento de zona horaria (p. ej., “date UTC-8” para PST) | UNSPECIFIED, COUNT |
hour | Hora UTC del autocompletado | UNSPECIFIED, COUNT |
language | Lenguaje de programación | UNSPECIFIED, COUNT |
ide | IDE en uso | UNSPECIFIED, COUNT |
version | Versión de la extensión/plugin (language-server), p. ej. 1.48.x | UNSPECIFIED, COUNT |
num_acceptances | Número de aceptaciones de autocompletado | SUM, MAX, MIN, AVG |
num_lines_accepted | Líneas de código aceptadas | SUM, MAX, MIN, AVG |
num_bytes_accepted | Bytes aceptados | SUM, MAX, MIN, AVG |
distinct_users | Usuarios distintos | UNSPECIFIED, COUNT |
distinct_developer_days | Tuplas distintas de (usuario, día) | UNSPECIFIED, COUNT |
distinct_developer_hours | Tuplas distintas de (usuario, hora) | UNSPECIFIED, COUNT |
Datos del chat
Los datos del chat están separados de los datos de Cascade y representan el uso de nuestros plugins heredados no basados en agentes
| Nombre del campo | Descripción | Agregaciones válidas |
|---|---|---|
api_key | Hash de la clave de API del usuario | UNSPECIFIED, COUNT |
model_id | ID del modelo de chat | UNSPECIFIED, COUNT |
date | Fecha UTC de la respuesta del chat | UNSPECIFIED, COUNT |
date UTC-x | Fecha con desfase de zona horaria | UNSPECIFIED, COUNT |
ide | IDE en uso | UNSPECIFIED, COUNT |
version | Versión de la extensión/plugin (language-server), p. ej. 1.48.x | UNSPECIFIED, COUNT |
latest_intent_type | Tipo de intención del chat (consulta los tipos de intención a continuación) | UNSPECIFIED, COUNT |
num_chats_received | Número de mensajes de chat recibidos | SUM, MAX, MIN, AVG |
chat_accepted | Si el chat fue aceptado (pulgar arriba) | SUM, COUNT |
chat_inserted_at_cursor | Si se hizo clic en el botón “Insert” | SUM, COUNT |
chat_applied | Si se hizo clic en el botón “Apply Diff” | SUM, COUNT |
chat_loc_used | Líneas de código utilizadas del chat | SUM, MAX, MIN, AVG |
Tipos de intención del chat
CHAT_INTENT_GENERIC- Chat normalCHAT_INTENT_FUNCTION_EXPLAIN- code lens de explicación de la funciónCHAT_INTENT_FUNCTION_DOCSTRING- code lens del docstring de la funciónCHAT_INTENT_FUNCTION_REFACTOR- code lens de refactorización de la funciónCHAT_INTENT_CODE_BLOCK_EXPLAIN- code lens de explicación del bloque de códigoCHAT_INTENT_CODE_BLOCK_REFACTOR- code lens de refactorización del bloque de códigoCHAT_INTENT_PROBLEM_EXPLAIN- code lens de explicación del problemaCHAT_INTENT_FUNCTION_UNIT_TESTS- code lens de pruebas unitarias de la función
Datos de Command
accepted para filtrar únicamente los comandos aceptados.
| Nombre del campo | Descripción | Agregaciones válidas |
|---|---|---|
api_key | Hash de la clave de API del usuario | UNSPECIFIED, COUNT |
date | Fecha UTC del comando | UNSPECIFIED, COUNT |
timestamp | Marca de tiempo UTC del comando | UNSPECIFIED, COUNT |
language | Lenguaje de programación | UNSPECIFIED, COUNT |
ide | IDE en uso | UNSPECIFIED, COUNT |
version | Versión de la extensión/plugin (language-server), p. ej. 1.48.x | UNSPECIFIED, COUNT |
command_source | Origen de activación de Command (consulta Fuentes de Command más abajo) | UNSPECIFIED, COUNT |
provider_source | Modo de generación o edición | UNSPECIFIED, COUNT |
lines_added | Líneas de código agregadas | SUM, MAX, MIN, AVG |
lines_removed | Líneas de código eliminadas | SUM, MAX, MIN, AVG |
bytes_added | Bytes agregados | SUM, MAX, MIN, AVG |
bytes_removed | Bytes eliminados | SUM, MAX, MIN, AVG |
selection_lines | Líneas seleccionadas (cero para generaciones) | SUM, MAX, MIN, AVG |
selection_bytes | Bytes seleccionados (cero para generaciones) | SUM, MAX, MIN, AVG |
accepted | Indica si el comando fue aceptado | SUM, COUNT |
Fuentes de Command
COMMAND_REQUEST_SOURCE_LINE_HINT_CODE_LENSCOMMAND_REQUEST_SOURCE_DEFAULT- Uso típico de CommandCOMMAND_REQUEST_SOURCE_RIGHT_CLICK_REFACTORCOMMAND_REQUEST_SOURCE_FUNCTION_CODE_LENSCOMMAND_REQUEST_SOURCE_FOLLOWUPCOMMAND_REQUEST_SOURCE_CLASS_CODE_LENSCOMMAND_REQUEST_SOURCE_PLANCOMMAND_REQUEST_SOURCE_SELECTION_HINT_CODE_LENS
Fuentes del proveedor
PROVIDER_SOURCE_COMMAND_GENERATE- Modo de generaciónPROVIDER_SOURCE_COMMAND_EDIT- Modo de edición
Datos de PCW
| Nombre del campo | Descripción | Agregaciones válidas |
|---|---|---|
percent_code_written | Se calcula como codeium_bytes / (codeium_bytes + user_bytes) | UNSPECIFIED |
codeium_bytes | Total de bytes generados por Codeium | UNSPECIFIED |
user_bytes | Total de bytes escritos por el usuario | UNSPECIFIED |
total_bytes | codeium_bytes + user_bytes | UNSPECIFIED |
codeium_bytes_by_autocomplete | Bytes de Codeium procedentes del autocompletado | UNSPECIFIED |
codeium_bytes_by_command | Bytes de Codeium procedentes de Command | UNSPECIFIED |
Filtros de PCW
| Nombre del campo | Descripción | Ejemplos |
|---|---|---|
language | Lenguaje de programación | KOTLIN, GO, JAVA |
ide | IDE utilizado | jetbrains, vscode |
version | Versión de la extensión/plugin (language-server), p. ej. 1.48.x | 1.28.0, 130.0 |
start_timestamp y end_timestamp en el cuerpo principal de la solicitud.
Ejemplos de peticiones
Ejemplo de datos de usuario
curl -X POST --header "Content-Type: application/json" \
--data '{
"service_key": "your_service_key_here",
"query_requests": [
{
"data_source": "QUERY_DATA_SOURCE_USER_DATA",
"selections": [
{
"field": "num_acceptances",
"name": "total_acceptances",
"aggregation_function": "QUERY_AGGREGATION_SUM"
},
{
"field": "num_lines_accepted",
"name": "total_lines",
"aggregation_function": "QUERY_AGGREGATION_SUM"
}
],
"filters": [
{
"name": "date",
"filter": "QUERY_FILTER_GE",
"value": "2024-01-01"
},
{
"name": "date",
"filter": "QUERY_FILTER_LE",
"value": "2024-02-01"
}
]
}
]
}' \
https://server.codeium.com/api/v1/Analytics
Ejemplo de datos del chat
curl -X POST --header "Content-Type: application/json" \
--data '{
"service_key": "your_service_key_here",
"query_requests": [
{
"data_source": "QUERY_DATA_SOURCE_CHAT_DATA",
"selections": [
{
"field": "chat_loc_used",
"name": "lines_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_type"
}
]
}
]
}' \
https://server.codeium.com/api/v1/Analytics
Ejemplo de datos para Command
curl -X POST --header "Content-Type: application/json" \
--data '{
"service_key": "your_service_key_here",
"query_requests": [
{
"data_source": "QUERY_DATA_SOURCE_COMMAND_DATA",
"selections": [
{
"field": "lines_added",
"name": "total_lines_added",
"aggregation_function": "QUERY_AGGREGATION_SUM"
},
{
"field": "lines_removed",
"name": "total_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": "programming_language"
}
]
}
]
}' \
https://server.codeium.com/api/v1/Analytics
Ejemplo de datos de PCW
curl -X POST --header "Content-Type: application/json" \
--data '{
"service_key": "your_service_key_here",
"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": "pcw"
},
{
"field": "codeium_bytes",
"name": "ai_bytes"
},
{
"field": "total_bytes",
"name": "total"
},
{
"field": "codeium_bytes_by_autocomplete",
"name": "autocomplete_bytes"
},
{
"field": "codeium_bytes_by_command",
"name": "command_bytes"
}
],
"filters": [
{
"filter": "QUERY_FILTER_EQUAL",
"name": "language",
"value": "GO"
}
]
}
]
}' \
https://server.codeium.com/api/v1/Analytics
Respuesta
array
Ejemplos de respuesta
Respuesta de datos del usuario
{
"queryResults": [
{
"responseItems": [
{
"item": {
"total_acceptances": "125",
"total_lines": "863"
}
}
]
}
]
}
Respuesta de datos del chat
{
"queryResults": [
{
"responseItems": [
{
"item": {
"lines_used": "74",
"ide_type": "jetbrains"
}
},
{
"item": {
"lines_used": "41",
"ide_type": "vscode"
}
}
]
}
]
}
Respuesta de datos de Command
{
"queryResults": [
{
"responseItems": [
{
"item": {
"programming_language": "PYTHON",
"total_lines_added": "21",
"total_lines_removed": "5"
}
},
{
"item": {
"programming_language": "GO",
"total_lines_added": "31",
"total_lines_removed": "27"
}
}
]
}
]
}
Respuesta de datos PCW
{
"queryResults": [
{
"responseItems": [
{
"item": {
"ai_bytes": "6018",
"autocomplete_bytes": "4593",
"command_bytes": "1425",
"pcw": "0.61",
"total": "9900"
}
}
]
}
]
}
Notas importantes
- PCW (Percent Code Written) presenta una alta variabilidad en un mismo día o entre usuarios; agrupa los datos por semanas para obtener mejores resultados
- Todos los campos de selección deben tener funciones de agregación, o ninguno debe tenerlas (no se pueden mezclar)
- Los campos con el patrón “distinct_*” no se pueden usar en agregaciones
- Los alias de los campos deben ser únicos en todas las selecciones y agregaciones
- Si no se especifica ninguna función de agregación, el valor predeterminado es UNSPECIFIED

