Saltar al contenido principal
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>"
        }
      ]
    }
  ]
}
'
{
  "queryResults": [
    {
      "responseItems": [
        {
          "item": {}
        }
      ]
    }
  ]
}

Documentation Index

Fetch the complete documentation index at: https://docs.devin.ai/llms.txt

Use this file to discover all available pages before exploring further.

Descripción general

La API de analíticas personalizadas permite hacer consultas flexibles sobre datos de autocompletado, chat y Command, con selecciones, filtros, agregaciones y criterios de ordenación personalizables.

Solicitud

service_key
string
requerido
Tu clave de servicio con permisos de “Analytics Read”
group_name
string
Filtra los resultados para mostrar solo los usuarios de un grupo específico (opcional)
query_requests
array
requerido
Array de objetos de solicitud de consulta que definen los datos que se van a recuperar

Estructura de la solicitud de consulta

Cada objeto de solicitud de consulta contiene:
  • 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

Las selecciones definen qué campos obtener y cómo agregarlos.
  • 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

Los filtros permiten limitar los datos a los elementos que cumplen criterios específicos.
  • 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

Las agregaciones agrupan los datos según los criterios especificados.
  • 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

Todos los datos del usuario se agregan por usuario y por hora.
Nombre del campoDescripciónAgregaciones válidas
api_keyHash de la clave de API del usuarioUNSPECIFIED, COUNT
dateFecha UTC del autocompletadoUNSPECIFIED, COUNT
date UTC-xFecha con desplazamiento de zona horaria (p. ej., “date UTC-8” para PST)UNSPECIFIED, COUNT
hourHora UTC del autocompletadoUNSPECIFIED, COUNT
languageLenguaje de programaciónUNSPECIFIED, COUNT
ideIDE en usoUNSPECIFIED, COUNT
versionVersión de Devin DesktopUNSPECIFIED, COUNT
num_acceptancesNúmero de aceptaciones de autocompletadoSUM, MAX, MIN, AVG
num_lines_acceptedLíneas de código aceptadasSUM, MAX, MIN, AVG
num_bytes_acceptedBytes aceptadosSUM, MAX, MIN, AVG
distinct_usersUsuarios distintosUNSPECIFIED, COUNT
distinct_developer_daysTuplas distintas de (usuario, día)UNSPECIFIED, COUNT
distinct_developer_hoursTuplas 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
Todos los datos del chat representan respuestas del modelo de chat, no preguntas del usuario.
Nombre del campoDescripciónAgregaciones válidas
api_keyHash de la clave de API del usuarioUNSPECIFIED, COUNT
model_idID del modelo de chatUNSPECIFIED, COUNT
dateFecha UTC de la respuesta del chatUNSPECIFIED, COUNT
date UTC-xFecha con desfase de zona horariaUNSPECIFIED, COUNT
ideIDE en usoUNSPECIFIED, COUNT
versionVersión de Devin DesktopUNSPECIFIED, COUNT
latest_intent_typeTipo de intención del chat (consulta los tipos de intención a continuación)UNSPECIFIED, COUNT
num_chats_receivedNúmero de mensajes de chat recibidosSUM, MAX, MIN, AVG
chat_acceptedSi el chat fue aceptado (pulgar arriba)SUM, COUNT
chat_inserted_at_cursorSi se hizo clic en el botón “Insert”SUM, COUNT
chat_appliedSi se hizo clic en el botón “Apply Diff”SUM, COUNT
chat_loc_usedLíneas de código utilizadas del chatSUM, MAX, MIN, AVG

Tipos de intención del chat

  • CHAT_INTENT_GENERIC - Chat normal
  • CHAT_INTENT_FUNCTION_EXPLAIN - code lens de explicación de la función
  • CHAT_INTENT_FUNCTION_DOCSTRING - code lens del docstring de la función
  • CHAT_INTENT_FUNCTION_REFACTOR - code lens de refactorización de la función
  • CHAT_INTENT_CODE_BLOCK_EXPLAIN - code lens de explicación del bloque de código
  • CHAT_INTENT_CODE_BLOCK_REFACTOR - code lens de refactorización del bloque de código
  • CHAT_INTENT_PROBLEM_EXPLAIN - code lens de explicación del problema
  • CHAT_INTENT_FUNCTION_UNIT_TESTS - code lens de pruebas unitarias de la función

Datos de Command

Los datos de Command incluyen todos los comandos, incluidos los rechazados. Usa el campo accepted para filtrar únicamente los comandos aceptados.
Nombre del campoDescripciónAgregaciones válidas
api_keyHash de la clave de API del usuarioUNSPECIFIED, COUNT
dateFecha UTC del comandoUNSPECIFIED, COUNT
timestampMarca de tiempo UTC del comandoUNSPECIFIED, COUNT
languageLenguaje de programaciónUNSPECIFIED, COUNT
ideIDE en usoUNSPECIFIED, COUNT
versionVersión de Devin DesktopUNSPECIFIED, COUNT
command_sourceOrigen de activación de Command (consulta Command Sources más abajo)UNSPECIFIED, COUNT
provider_sourceModo de generación o ediciónUNSPECIFIED, COUNT
lines_addedLíneas de código agregadasSUM, MAX, MIN, AVG
lines_removedLíneas de código eliminadasSUM, MAX, MIN, AVG
bytes_addedBytes agregadosSUM, MAX, MIN, AVG
bytes_removedBytes eliminadosSUM, MAX, MIN, AVG
selection_linesLíneas seleccionadas (cero para generaciones)SUM, MAX, MIN, AVG
selection_bytesBytes seleccionados (cero para generaciones)SUM, MAX, MIN, AVG
acceptedIndica si el comando fue aceptadoSUM, COUNT

Fuentes de Command

  • COMMAND_REQUEST_SOURCE_LINE_HINT_CODE_LENS
  • COMMAND_REQUEST_SOURCE_DEFAULT - Uso típico de Command
  • 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

Fuentes del proveedor

  • PROVIDER_SOURCE_COMMAND_GENERATE - Modo de generación
  • PROVIDER_SOURCE_COMMAND_EDIT - Modo de edición

Datos de PCW

Datos del porcentaje de código escrito, con seguimiento independiente de las contribuciones de autocompletado y de Command.
Nombre del campoDescripciónAgregaciones válidas
percent_code_writtenSe calcula como codeium_bytes / (codeium_bytes + user_bytes)UNSPECIFIED
codeium_bytesTotal de bytes generados por CodeiumUNSPECIFIED
user_bytesTotal de bytes escritos por el usuarioUNSPECIFIED
total_bytescodeium_bytes + user_bytesUNSPECIFIED
codeium_bytes_by_autocompleteBytes de Codeium procedentes del autocompletadoUNSPECIFIED
codeium_bytes_by_commandBytes de Codeium procedentes de CommandUNSPECIFIED

Filtros de PCW

Nombre del campoDescripciónEjemplos
languageLenguaje de programaciónKOTLIN, GO, JAVA
ideIDE utilizadojetbrains, vscode
versionVersión de Devin Desktop1.28.0, 130.0
Para filtrar por fecha en las consultas de PCW, usa 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

queryResults
array
Array de resultados de consulta, uno por cada solicitud de consulta
responseItems
array
Array de elementos de resultado
item
object
Objeto que contiene los campos seleccionados y sus valores

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