Skip to main content

Visão geral

O Devin Desktop oferece suporte a uma API para análises personalizadas. Ela permite consultar dados de autocompletar, chat e comandos, com diversos filtros, agrupamentos e agregações. Fornecemos todos os exemplos em curl; depois, eles podem ser convertidos em requisições HTTP em outras linguagens.
A API de Análises está disponível nos planos Enterprise

Especificação da API de análises de dados de usuários

Os dados da tabela Users na página Teams podem ser obtidos com o seguinte 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: A chave de serviço — um usuário administrador pode criar uma na seção de chave de serviço da página de Configurações. A função da chave de serviço deve ter as permissões “Teams somente leitura”. GROUP_NAME: O nome de um grupo pelo qual filtrar. Este campo é opcional. START_TIMESTAMP/END_TIMESTAMP: Carimbos de data/hora no formato RFC 3339, por exemplo 2023-01-01T00:00:00Z

Exemplo de saída

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

Especificação da API de análises do Cascade

Os dados específicos do Cascade exibidos na página de análises podem ser consultados pela 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: A chave de serviço — um usuário administrador pode criar uma nova em Configurações da equipe GROUP_NAME: O nome de um grupo para filtrar. Este campo é opcional. Não pode ser definido se emails estiver definido. START_TIMESTAMP/END_TIMESTAMP: Timestamps no formato RFC 3339, por exemplo, 2023-01-01T00:00:00Z EMAILS: Uma lista de e-mails para filtrar. Este campo é opcional. Não pode ser definido se group_name estiver definido. IDE_TYPES: Uma lista de tipos de IDE para filtrar. Este campo é opcional. Os valores possíveis estão descritos abaixo. QUERY_REQUESTS: Uma lista de requisições de consulta a serem feitas. Este campo é obrigatório. Os valores possíveis de CASCADE_DATA_SOURCE estão descritos abaixo.

Exemplo de consulta

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

Tipos de IDE

Dividimos os dados do Cascade em categorias por tipo de IDE. Se o campo ide_types for omitido da query, serão retornados dados de todos os tipos. Se você quiser consultar dados de apenas um dos IDEs, pode usar qualquer uma das seguintes opções:
  • “editor” para o Devin Desktop Editor
  • “jetbrains” para o plugin do JetBrains
  • “cli” para o Devin CLI
Ao filtrar por Devin CLI ("cli"), apenas cascade_runs retorna dados. As fontes de dados cascade_lines e cascade_tool_usage não são compatíveis com o Devin CLI e retornarão resultados vazios.

Fontes de dados do Cascade

Há três valores possíveis para CASCADE_DATA_SOURCE

Fonte: cascade_lines

Use cascade&#95;lines para consultar dados sobre as linhas do Cascade sugeridas e aceitas por dia. Exemplo de saída:
{
  "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: O número de linhas sugeridas no dia especificado. linesAccepted: O número de linhas aceitas no dia especificado.

Fonte: cascade_runs

Use o cascade_runs para consultar dados sobre o uso do modelo, o consumo de créditos e o modo. Exemplo de saída:
{
  "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: A data da execução. model: O modelo usado na mensagem. mode: O modo da execução. Um entre CONVERSATIONAL_PLANNER_MODE_DEFAULT (no modo de escrita), CONVERSATIONAL_PLANNER_MODE_READ_ONLY (no modo somente leitura), CONVERSATIONAL_PLANNER_MODE_NO_TOOL (no modo legado) ou UNKNOWN. messagesSent: O número de mensagens enviadas. cascadeId: O ID da execução. Esse ID pode ser usado para entender quantas conversas distintas foram iniciadas (em vez de quantas vezes o usuário envia uma mensagem). promptsUsed: O número de créditos usados. Esse valor é retornado em centavos. Por exemplo, 0,25 crédito é retornado como 25, e 1 crédito é retornado como 100. Os dados retornados pela API estão em formato bruto, o que pode explicar eventuais valores “UNKNOWN”. Se você usar essa fonte de dados para suas próprias métricas, é recomendável agregar de acordo com as métricas específicas de seu interesse (por exemplo, somar o campo promptsUsed para entender os padrões de uso do usuário, messagesSent para entender o engajamento do usuário etc.), pois é possível que os dados de modo e prompts estejam divididos entre entradas.

Fonte: cascade_tool_usage

Use cascade_tool_usage para consultar dados de uso de ferramentas. Observe que isso retorna uma contagem agregada do uso de ferramentas no período informado. Exemplo de saída:
{
  "queryResults": [
    {
      "cascadeToolUsage": {
        "cascadeToolUsage": [
          {
            "tool": "CODE_ACTION",
            "count": "15"
          },
          {
            "tool": "LIST_DIRECTORY",
            "count": "20"
          },
          {
            "tool": "MCP_TOOL",
            "count": "12"
          },
          {
            "tool": "MEMORY",
            "count": "4"
          }
        ]
      }
    }
  ]
}
tool: A ferramenta usada na mensagem. count: O número de vezes que a ferramenta foi usada. Aqui está um mapa dos enums retornados e seus nomes legíveis, conforme exibidos na UI:
  • CODE_ACTION: ‘Editar código’
  • VIEW_FILE: ‘Visualizar arquivo’
  • RUN_COMMAND: ‘Executar comando’
  • FIND: ‘Ferramenta Find’
  • GREP_SEARCH: ‘Busca grep’
  • VIEW_FILE_OUTLINE: ‘Visualizar estrutura do arquivo’
  • MQUERY: ‘Riptide’
  • LIST_DIRECTORY: ‘Listar diretório’
  • MCP_TOOL: ‘Ferramenta MCP’
  • PROPOSE_CODE: ‘Propor código’
  • SEARCH_WEB: ‘Pesquisar na web’
  • MEMORY: ‘Memória’
  • PROXY_WEB_SERVER: ‘Pré-visualização no navegador’
  • DEPLOY_WEB_APP: ‘Implantar app web’

Especificação da API de Análises Personalizadas

Certas fontes de dados permitem consultas personalizadas por meio da API de Análises Personalizadas. Os esquemas completos de seleções, filtros, agregações e ordenações estão na seção a seguir, em formato JSON. Consultas de exemplo para cada uma das três fontes de dados, assim como dicas de depuração de consultas, estarão no final do documento.
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: selecione USER_DATA, CHAT_DATA, COMMAND_DATA, PCW_DATA ou CASCADE_DATA, dependendo de você estar buscando dados de preenchimento automático, chat, Command, PCW ou Cascade. SERVICE_KEY: A chave de serviço — um usuário administrador pode criar uma nova em Configurações da equipe. A função da chave de serviço deve ter a permissão “Analytics Read”. GROUP_NAME: O nome de um grupo para usar como filtro. Este campo é opcional.

Esquemas

Seleções

As seleções são obrigatórias. Cada seleção corresponde a um valor que será consultado.
{
  "field": "<FIELD_NAME>",
  "name": "<NAME>",
  "aggregation_function": "QUERY_AGGREGATION_<AGGREGATION_FUNCTION>"
}
FIELD_NAME: O campo que você deseja consultar. Veja a seção Campos disponíveis abaixo. NAME: Um nome alternativo para o campo. Se não for especificado, será a versão em minúsculas de <AGGREGATION_FUNCTION>_<FIELD_NAME>, por exemplo sum_num_acceptances. Deve ser diferente de todos os outros nomes de campo e agregação. AGGREGATION_FUNCTION: deve ser um entre UNSPECIFIED, COUNT, SUM, AVG, MAX e MIN. Se “aggregation_function” não for informado, o valor padrão será UNSPECIFIED.

Filtros

Os filtros são usados para restringir os dados, de modo que contenham apenas elementos que atendam a determinados critérios. Eles são opcionais.
{
  "name": "<NAME>",
  "value": "<VALUE>",
  "filter": "QUERY_FILTER_<FILTER>"
}
NAME: O nome do campo que você deseja filtrar. Se o item filtrado for o mesmo que uma Seleção/Aggregação, ele deverá ser igual ao nome do campo/agregação. VALUE: o valor que está sendo comparado. FILTER: Um dos seguintes: EQUAL, NOT_EQUAL, GREATER_THAN, LESS_THAN, GE (maior que ou igual a), LE (menor que ou igual a).

Agregações

As agregações servem para dividir os dados em grupos com base em um critério especificado. Elas são opcionais.
{
  "field": <FIELD_NAME>,
  "name": <NAME>
}
FIELD_NAME: O campo que você deseja consultar. Consulte a seção Campos disponíveis. NAME: Um alias para o campo. Deve ser diferente de todos os outros nomes de campos e agregações.

Campos disponíveis

Dados do usuário

Todos os dados da fonte USER_DATA são agregados por usuário, por hora. Observação: PCW (percentual de código escrito) agora tem sua própria tabela e não depende da tabela user_data.
Nome do campoDescriçãoAgregações válidas
api_keyUm hash da chave de API do usuário.UNSPECIFIED, COUNT
dateA data em UTC das autocompletações.UNSPECIFIED, COUNT
date UTC-xA data da autocompletação, com um deslocamento de fuso horário. Por exemplo, PST seria “date UTC-8”.UNSPECIFIED, COUNT
hourA hora em UTC das autocompletações.UNSPECIFIED, COUNT
languageA linguagem de programação em uso.UNSPECIFIED, COUNT
ideA IDE em uso.UNSPECIFIED, COUNT
versionA versão do Devin Desktop usada.UNSPECIFIED, COUNT
num_acceptancesO número de vezes que o usuário aceitou uma autocompletação. Isso ocorre quando o usuário escreve algum código, vê um texto em cinza e pressiona a tecla Tab.SUM, MAX, MIN, AVG
num_lines_acceptedLinhas de código aceitas da autocompletação.SUM, MAX, MIN, AVG
num_bytes_acceptedBytes aceitos da autocompletação.SUM, MAX, MIN, AVG
distinct_usersUsuários distintos.UNSPECIFIED, COUNT
distinct_developer_daysTuplas distintas de (usuários, dia).UNSPECIFIED, COUNT
distinct_developer_hoursTuplas distintas de (usuários, hora do dia).UNSPECIFIED, COUNT

Dados do chat

Observe que todos os dados fornecidos na API de dados do chat se referem às respostas do modelo de chat, não às perguntas do usuário.
Nome do campoDescriçãoAgregações válidas
api_keyUm hash da Chave de API do usuárioUNSPECIFIED, COUNT
model_idO ID do modelo de chat, definido no momento da implantação.UNSPECIFIED, COUNT
dateA data UTC da resposta do chat.UNSPECIFIED, COUNT
date UTC-xA data da resposta do chat, com um deslocamento de fuso horário. Por exemplo, PST seria “date UTC-8”.UNSPECIFIED, COUNT
ideA IDE que estava em usoUNSPECIFIED, COUNT
versionA versão do Devin Desktop utilizadaUNSPECIFIED, COUNT
latest_intent_typeIndica se a resposta do modelo é gerada a partir de uma lente de código ou de um chat comum. Chats comuns corresponderão a:

CHAT_INTENT_GENERIC

enquanto lentes de código corresponderão a um dos seguintes:

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_receivedNúmero de mensagens de chat enviadas do Devin Desktop para o usuário.SUM, MAX, MIN, AVG
chat_acceptedTrue se um bloco de código foi enviado na resposta de chat do Devin Desktop e o botão de curtir foi clicado.SUM, COUNT
chat_inserted_at_cursorTrue se um bloco de código foi enviado na resposta de chat do Devin Desktop e o botão “Insert” foi clicado.SUM, COUNT
chat_appliedTrue se um bloco de código foi enviado na resposta de chat do Devin Desktop e o botão “Apply Diff” foi clicado.SUM, COUNT
chat_loc_usedLinhas de código usadas, se um bloco de código foi enviado no chat do Devin Desktop e qualquer um dos botões “Insert”, “Copy” ou “Apply Diff” tiver sido pressionado.SUM, MAX, MIN, AVG

Dados de Comando

Observe que a fonte Dados de Comando contém todos os comandos, inclusive os que foram recusados. O campo “accepted” pode ser usado para filtrar apenas os comandos aceitos.
Nome do CampoDescriçãoAgregações válidas
api_keyUm hash da Chave de API do usuário.UNSPECIFIED, COUNT
dateA data UTC do comando.UNSPECIFIED, COUNT
timestampO carimbo de data/hora UTC do comando.UNSPECIFIED, COUNT
languageA linguagem de programação em uso.UNSPECIFIED, COUNT
ideA IDE em uso.UNSPECIFIED, COUNT
versionA versão do Devin Desktop usada.UNSPECIFIED, COUNT
command_sourceO motivo pelo qual o comando foi acionado. Os valores válidos são:

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 corresponde ao uso típico do comando.
UNSPECIFIED, COUNT
provider_sourceDetermina se o comando foi acionado no modo de geração ou de edição. Os valores válidos são: PROVIDER_SOURCE_COMMAND_GENERATE PROVIDER_SOURCE_COMMAND_EDITUNSPECIFIED, COUNT
lines_addedNúmero de linhas de código adicionadas pelo comando.SUM, MAX, MIN, AVG
lines_removedNúmero de linhas de código removidas pelo comando.SUM, MAX, MIN, AVG
bytes_addedNúmero de bytes adicionados pelo comando.SUM, MAX, MIN, AVG
bytes_removedNúmero de bytes removidos pelo comando.SUM, MAX, MIN, AVG
selection_linesNúmero de linhas de código selecionadas pelo comando. Deve ser sempre zero para gerações.SUM, MAX, MIN, AVG
selection_bytesNúmero de bytes selecionados pelo comando. Deve ser sempre zero para gerações.SUM, MAX, MIN, AVG
acceptedIndica se o comando foi aceito.SUM, COUNT

Dados do PCW

Seleções válidas

Nome do campoDescriçãoAgregações válidas
percent_code_writtenPercentual de código escrito. Calculado como (número de bytes do codeium gerados) / (número de bytes do codeium gerados + número de bytes gerados pelo usuário). Essa métrica pode ter alta variabilidade em dias específicos ou entre usuários, por isso recomendamos agregá-la ao longo de semanas.UNSPECIFIED
codeium_bytesnúmero total de bytes do codeium, que é igual a codeium_bytes_by_autocomplete + codeium_bytes_by_commandUNSPECIFIED
user_bytesnúmero total de bytes gerados pelo usuárioUNSPECIFIED
total_bytescodeium_bytes + user_bytesUNSPECIFIED
codeium_bytes_by_autocompletenúmero total de bytes do codeium gerados por autocompletarUNSPECIFIED
codeium_bytes_by_commandnúmero total de bytes do codeium gerados por comandoUNSPECIFIED

Dados do Cascade

A fonte de dados do Cascade contém uma entrada para cada mensagem enviada ao Cascade.
Para acessar todos os campos listados abaixo, verifique se você está usando a versão 1.11.2 ou posterior.
Nome do campoDescriçãoAgregações válidas
api_keyUm hash da chave de API do usuário.UNSPECIFIED, COUNT
dateA data em UTC do comando.UNSPECIFIED, COUNT
prompts_usedO número de créditos de prompt usados no prompt enviado ao Cascade, retornado em centavos. Por exemplo, 0.25 crédito é retornado como 25, e 1 crédito é retornado como 100.UNSPECIFIED, SUM, AVG, MIN, MAX
flex_credits_usedO número de créditos adicionais/compartilhados usados do total de prompts_used em um prompt enviado ao Cascade, retornado em centavos. Por exemplo, 0.25 crédito é retornado como 25, e 1 crédito é retornado como 100.UNSPECIFIED, SUM, AVG, MIN, MAX
modelO modelo usado na mensagem enviada ao Cascade.UNSPECIFIED, COUNT
metadataUm objeto que contém metadados relacionados ao ambiente de desenvolvimento. Os campos preenchidos atualmente incluem: ideVersionUNSPECIFIED, COUNT

Filtros válidos

Nome do campoDescriçãoAlguns exemplos
api_keyUm hash da chave de API do usuário.
languageA linguagem de programação em uso.KOTLIN, GO, JAVA
ideA IDE em uso.jetbrains, vscode
versionA versão do Devin Desktop em uso1.28.0, 130.0
Para filtrar por data, use start_timestamp e end_timestamp, que devem estar no formato RFC 3339 (por exemplo, 2023-01-01T00:00:00Z; consulte o exemplo abaixo).

Exemplos

Dados do usuário

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
Esta consulta calcula o percentual geral de código escrito ao longo do mês de janeiro de 2024. Exemplo de resposta (JSON formatado para facilitar a leitura):
{
  "queryResults": [
    {
      "responseItems": [
        {
          "item": {
            "num_acceptances": "125",
            "num_lines_accepted": "863"
          }
        }
      ]
    }
  ]
}

Dados do 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
Esta consulta mostra o número de linhas de código aceitas a partir da lente de código “Generate Docstring” ao longo de todo o período, agrupadas por IDE. Resposta de exemplo:
{
  "queryResults": [
    {
      "responseItems": [
        {
          "item": {
            "chat_loc_used": "74",
            "ide": "jetbrains"
          },
        },
        {
          "item": {
            "chat_loc_used":"41",
            "ide":"vscode"
          },
        }
      ]
    }
  ]
}

Dados do 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
Esta consulta retorna o número de linhas adicionadas e removidas em comandos “edit”, agrupado por linguagem de programação. Resposta de exemplo:
{
  "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"
          }
        }
      ]
    }
  ]
}

Dados do 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
Esta consulta retorna os dados de PCW (percentual de código escrito), além dos bytes filtrados para a linguagem Go. Resposta de exemplo:
{
  "queryResults": [
    {
      "responseItems": [
         {
            "item": {
               "codeium_bytes": "6018",
               "codeium_bytes_by_autocomplete": "4593",
               "codeium_bytes_by_command": "1425",
               "percent_code_written": "0.61",
               "total_bytes": "9900"
             }
         }
     ]
   }
  ]
}

Depuração de consultas

A partir da versão 1.10.0, consultas inválidas retornam uma mensagem de erro. Esta seção apresenta algumas mensagens de erro comuns, o que elas significam e como depurar as consultas correspondentes.
Mensagem de erroExplicação
at least one field or aggregation is requiredNenhuma seleção ou agregação foi detectada — verifique se a requisição de consulta contém pelo menos uma.
invalid aggregation function for string type field ide: QUERY_AGGREGATION_SUMUma das seleções usou uma função de agregação inválida. Neste caso, tentamos usar SUM no campo “ide”, mas ele só oferece suporte a COUNT e UNSPECIFIED.
invalid query table: QUERY_DATA_SOURCE_UNSPECIFIEDProvavelmente há um erro de digitação no campo data_source; verifique a grafia.
all selection fields should have an aggregation function, or none of them shouldSe houver vários campos de seleção, todos deverão conter um aggregation_function, ou nenhum deles deverá conter. Por exemplo, esta seleção é inválida porque num_acceptances está sendo somado, mas num_lines_accepted não está:
"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 considerado agregado. Se nenhum aggregation_function for escolhido explicitamente, ele será considerado unspecified. Se você quiser informações sobre esses dois campos, use duas consultas separadas.
invalid aggregation function for string type field ide: QUERY_AGGREGATION_SUMNem todo campo oferece suporte a todas as funções de agregação; consulte a seção de campos disponíveis para ver quais combinações são válidas. Neste caso, a consulta usou a função de agregação QUERY_AGGREGATION_SUM com o campo “ide”, o que é inválido.
tried to aggregate on a distinct field: distinct_developer_days. Consider aggregating on the non-distinct fields instead: [api_key date]Campos com o padrão “distinct_*” não podem estar na seção aggregations; a mensagem de erro sugere campos alternativos para agregar no lugar. Então, em vez de:
"aggregations": [
  {
    "field": "distinct_developer_days",
    "name": "distinct_developer_days"
  }
]
Tente:
"aggregations": [
  {
    "field": "api_key",
    "name": "api_key"
  },
  {
    "field": "date",
    "name": "date"
  }
]
duplicate field alias for selection/aggregation: num_acceptancesTodas as seleções e agregações devem ter nomes diferentes. Lembre-se de que, se o nome não for especificado, por padrão ele será definido como <AGGREGATION_FUNCTION>_<FIELD_NAME>.
invalid group name: GroupNameO grupo com o nome especificado não foi encontrado; verifique a grafia.