概览

Windsurf 支持用于自定义分析的 API。它允许查询来自自动补全、聊天和命令的数据,并支持多种过滤器、分组和聚合。

我们提供所有使用 curl 的示例;然后可以将其转换为其他语言的 HTTP 请求。

用户数据分析 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>"
}' \
https://server.codeium.com/api/v1/UserPageAnalytics

SERVICE_KEY: 服务密钥 - 管理员用户可以在设置页面的服务密钥部分创建一个。服务密钥的角色必须具有“只读团队”权限。

GROUP_NAME: 用于过滤的组的名称。此字段是可选的。

START_TIMESTAMP/END_TIMESTAMP: RFC 3339 格式的时间戳,例如 2023-01-01T00:00:00Z

示例输出

{
  "userTableStats": [
    {
      "name": "Alice",
      "email": "alice@windsurf.com",
      "lastUpdateTime": "2024-10-10T22:56:10.771591Z",
      "apiKey": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
      "activeDays": 178
    },
    {
      "name": "Bob",
      "email": "bob@windsurf.com",
      "lastUpdateTime": "2024-10-10T18:11:23.980237Z",
      "apiKey": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
      "activeDays": 462
    },
    {
      "name": "Charlie",
      "email": "charlie@windsurf.com",
      "lastUpdateTime": "2024-10-10T16:43:46.117870Z",
      "apiKey": "cccccccc-cccc-cccc-cccc-cccccccccccc",
      "activeDays": 237
    }
  ]
}

Cascade 分析 API 规范

在以下页面上看到的 Cascade 特定数据分析页面可以通过 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: 服务密钥 - 管理员用户可以从 https://windsurf.com/team/team_settings 创建一个新的:

GROUP_NAME: 用于过滤的组的名称。此字段是可选的。如果设置了 emails,则不能设置此字段。

START_TIMESTAMP/END_TIMESTAMP: RFC 3339 格式的时间戳,例如 2023-01-01T00:00:00Z

EMAILS: 用于过滤的电子邮件列表。此字段是可选的。如果设置了 group_name,则不能设置此字段。

IDE_TYPES: 用于过滤的 IDE 类型列表。此字段是可选的。可能的值如下所述。

QUERY_REQUESTS: 要进行的查询请求列表。此字段是必需的。CASCADE_DATA_SOURCE 的可能值如下所述。

示例查询

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@windsurf.com", "my_email2@windsurf.com"],
  "ide_types": ["editor"],
  "query_requests": [
   {
    "cascade_lines": {}
   },
   {
    "cascade_runs": {}
   }
  ]
}' \
https://server.codeium.com/api/v1/CascadeAnalytics

IDE 类型

我们将 cascade 数据分为两类:编辑器和 JetBrains 插件。在查询中排除 ide_types 字段将返回两者的数据。如果您只想查询其中一种 IDE 的数据,可以使用以下两种选项之一:

  • Windsurf 编辑器的“editor”
  • JetBrains 插件的“jetbrains”

Cascade 数据源

CASCADE_DATA_SOURCE 有三个可能的值

源:cascade_lines

使用 cascade_lines 查询每天建议和接受的 cascade 行的数据。

示例输出

{
  "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: 给定日期建议的行数。 linesAccepted: 给定日期接受的行数。

源:cascade_runs

使用 cascade_runs 查询模型使用情况、积分消耗和模式的数据。

示例输出

{
  "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": "Cascade Base",
            "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: 运行的日期。

model: 用于消息的模型。

mode: 运行的模式。以下之一:CONVERSATIONAL_PLANNER_MODE_DEFAULT (写入模式)、CONVERSATIONAL_PLANNER_MODE_READ_ONLY (读取模式)、CONVERSATIONAL_PLANNER_MODE_NO_TOOL (传统模式) 或 UNKNOWN。

messagesSent: 发送的消息数量。

cascadeId: 运行的 ID。此 ID 可用于了解已开始了多少个不同的对话(与用户发送消息的次数不同)。

promptsUsed: 使用的积分数量。

API 返回的数据是原始格式,这可能解释任何“UNKNOWN”值。如果使用此数据源来获取您自己的指标,建议按您感兴趣的特定指标进行聚合(例如,汇总 promptsUsed 字段以了解用户使用模式,汇总 messagesSent 以了解用户参与度等),因为模式和提示数据可能会分散在不同的条目中。

源:cascade_tool_usage

使用 cascade_tool_usage 查询工具使用情况数据。请注意,这将返回给定时间段内工具的总使用次数。

示例输出

{
  "queryResults": [
    {
      "cascadeToolUsage": {
        "cascadeToolUsage": [
          {
            "tool": "CODE_ACTION",
            "count": "15"
          },
          {
            "tool": "LIST_DIRECTORY",
            "count": "20"
          },
          {
            "tool": "MCP_TOOL",
            "count": "12"
          },
          {
            "tool": "MEMORY",
            "count": "4"
          }
        ]
      }
    }
  ]
}

tool: 用于消息的工具。

count: 工具的使用次数。

这是返回的枚举及其在 UI 中显示的易于理解的名称对照表

  • CODE_ACTION: ‘代码编辑’
  • VIEW_FILE: ‘查看文件’
  • RUN_COMMAND: ‘运行命令’
  • FIND: ‘查找工具’
  • GREP_SEARCH: ‘Grep 搜索’
  • VIEW_FILE_OUTLINE: ‘查看文件大纲’
  • MQUERY: ‘Riptide’
  • LIST_DIRECTORY: ‘列出目录’
  • MCP_TOOL: ‘MCP 工具’
  • PROPOSE_CODE: ‘建议代码’
  • SEARCH_WEB: ‘搜索网页’
  • MEMORY: ‘记忆’
  • PROXY_WEB_SERVER: ‘浏览器预览’
  • DEPLOY_WEB_APP: ‘部署 Web 应用’

自定义分析 API 规范

某些数据源允许通过自定义分析 API 进行可定制的查询。

选择、过滤器、聚合和排序的完整模式在以下部分中,为 JSON 格式。每种数据源的示例查询以及查询调试技巧将在文档末尾。

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: 选择 USER_DATA、CHAT_DATA 或 COMMAND_DATA,具体取决于您要查找的是自动补全、聊天还是命令数据。

SERVICE_KEY: 服务密钥 - 管理员用户可以从 https://windsurf.com/team/team_settings 创建一个新的:

GROUP_NAME: 用于过滤的组的名称。此字段是可选的。

模式

选择

选择是必需的

{
  "field": "<FIELD_NAME>",
  "name": "<NAME>",
  "aggregation_function": "QUERY_AGGREGATION_<AGGREGATION_FUNCTION>"
}

每个选择对应一个要查询的值。

FIELD_NAME: 您希望查询的字段。请参阅下面的“可用字段”部分。

NAME: 字段的别名。如果未指定,将是 <AGGREGATION_FUNCTION>_<FIELD_NAME> 的小写版本,例如 sum_num_acceptances。必须与其他所有字段和聚合名称不同。

AGGREGATION_FUNCTION: 应为 UNSPECIFIED、COUNT、SUM、AVG、MAX、MIN 中的一个。如果未提供“aggregation_function”,则默认为 UNSPECIFIED。

过滤器

{
  "name": "<NAME>",
  "value": "<VALUE>",
  "filter": "QUERY_FILTER_<FILTER>"
}

过滤器用于将数据缩小到仅包含符合特定条件的元素。它们是可选的。

NAME: 您希望过滤的字段的名称。如果被过滤的项目与选择/聚合相同,则此名称必须等于字段/聚合的名称。

VALUE: 正在比较的值。

FILTER: 以下之一:EQUAL、NOT_EQUAL、GREATER_THAN、LESS_THAN、GE (大于或等于)、LE (小于或等于)。

聚合

{
  "field": <FIELD_NAME>,
  "name": <NAME>
}

聚合用于根据指定条件将数据分组。它们是可选的。

FIELD_NAME: 您希望查询的字段。请参阅“可用字段”部分。

NAME: 字段的别名。必须与其他所有字段和聚合名称不同。

可用字段

用户数据

来自 USER_DATA 源的所有数据按用户、按小时聚合。

注意:PCW(代码编写百分比)现在有自己的表,不再依赖于 user_data 表。字段名称描述
有效聚合api_key用户 API 密钥的哈希值。
UNSPECIFIED, COUNTdate用户 API 密钥的哈希值。
自动补全的 UTC 日期。date UTC-x用户 API 密钥的哈希值。
自动补全的日期,带有有时区偏移量。例如,PST 将是“date UTC-8”。hour用户 API 密钥的哈希值。
自动补全的 UTC 小时。language用户 API 密钥的哈希值。
正在使用的编程语言。ide用户 API 密钥的哈希值。
正在使用的 IDE。version用户 API 密钥的哈希值。
使用的 Windsurf 版本。num_acceptances用户接受自动补全的次数。这发生在用户编写一些代码,看到灰色文本,然后按下 tab 键时。
SUM, MAX, MIN, AVGnum_lines_accepted用户接受自动补全的次数。这发生在用户编写一些代码,看到灰色文本,然后按下 tab 键时。
从自动补全接受的代码行数。num_bytes_accepted用户接受自动补全的次数。这发生在用户编写一些代码,看到灰色文本,然后按下 tab 键时。
从自动补全接受的字节数。distinct_users用户 API 密钥的哈希值。
独立用户数。distinct_developer_days用户 API 密钥的哈希值。
独立 (用户, 天) 元组。distinct_developer_hours用户 API 密钥的哈希值。

独立 (用户, 小时) 元组。

聊天数据

注意:PCW(代码编写百分比)现在有自己的表,不再依赖于 user_data 表。字段名称描述
有效聚合请注意,聊天数据 API 中提供的所有数据均针对聊天模型的响应,而非用户提问。用户 API 密钥的哈希值。
用户 API 密钥的哈希值model_id用户 API 密钥的哈希值。
UNSPECIFIED, COUNT聊天模型的 ID,在部署时设置。用户 API 密钥的哈希值。
自动补全的 UTC 日期。聊天响应的 UTC 日期。用户 API 密钥的哈希值。
正在使用的编程语言。聊天响应的日期,带有有时区偏移量。例如,PST 将是“date UTC-8”。用户 API 密钥的哈希值。
正在使用的 IDE。version用户 API 密钥的哈希值。
正在使用的 IDElatest_intent_type

模型响应是来自代码透镜还是常规聊天。常规聊天对应于

CHAT_INTENT_GENERIC

而代码透镜对应于以下之一:
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
用户 API 密钥的哈希值。
CHAT_INTENT_FUNCTION_UNIT_TESTSnum_chats_received用户接受自动补全的次数。这发生在用户编写一些代码,看到灰色文本,然后按下 tab 键时。
从 Windsurf 发送给用户的聊天消息数量。chat_accepted如果 Windsurf 的聊天响应中发送了代码块,并且点击了“点赞”按钮,则为 True。
SUM, COUNTchat_inserted_at_cursor如果 Windsurf 的聊天响应中发送了代码块,并且点击了“点赞”按钮,则为 True。
如果 Windsurf 的聊天响应中发送了代码块,并且点击了“插入”按钮,则为 True。chat_applied如果 Windsurf 的聊天响应中发送了代码块,并且点击了“点赞”按钮,则为 True。
如果 Windsurf 的聊天响应中发送了代码块,并且点击了“应用差异”按钮,则为 True。chat_loc_used用户接受自动补全的次数。这发生在用户编写一些代码,看到灰色文本,然后按下 tab 键时。

如果 Windsurf 的聊天中发送了代码块,并且点击了“插入”、“复制”或“应用差异”按钮中的任何一个,则为使用的代码行数。

命令数据

注意:PCW(代码编写百分比)现在有自己的表,不再依赖于 user_data 表。字段名称描述
有效聚合api_key用户 API 密钥的哈希值。
UNSPECIFIED, COUNT请注意,“命令数据”源包含**所有**命令,包括已拒绝的命令。“accepted”字段可用于仅过滤已接受的命令。用户 API 密钥的哈希值。
命令的 UTC 日期。timestamp用户 API 密钥的哈希值。
自动补全的 UTC 小时。language用户 API 密钥的哈希值。
正在使用的编程语言。ide用户 API 密钥的哈希值。
正在使用的 IDE。version用户 API 密钥的哈希值。
命令的 UTC 时间戳。command_source

触发命令的原因。有效值包括:
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
用户 API 密钥的哈希值。
COMMAND_REQUEST_SOURCE_DEFAULT 对应于典型的命令使用情况。provider_source用户 API 密钥的哈希值。
确定命令是在生成模式还是编辑模式下触发的。有效值包括:PROVIDER_SOURCE_COMMAND_GENERATE PROVIDER_SOURCE_COMMAND_EDITlines_added用户接受自动补全的次数。这发生在用户编写一些代码,看到灰色文本,然后按下 tab 键时。
命令添加的代码行数。lines_removed用户接受自动补全的次数。这发生在用户编写一些代码,看到灰色文本,然后按下 tab 键时。
命令删除的代码行数。bytes_added用户接受自动补全的次数。这发生在用户编写一些代码,看到灰色文本,然后按下 tab 键时。
命令添加的字节数。bytes_removed用户接受自动补全的次数。这发生在用户编写一些代码,看到灰色文本,然后按下 tab 键时。
命令删除的字节数。selection_lines用户接受自动补全的次数。这发生在用户编写一些代码,看到灰色文本,然后按下 tab 键时。
命令选择的代码行数。对于生成,应始终为零。selection_bytes用户接受自动补全的次数。这发生在用户编写一些代码,看到灰色文本,然后按下 tab 键时。
命令选择的字节数。对于生成,应始终为零。accepted如果 Windsurf 的聊天响应中发送了代码块,并且点击了“点赞”按钮,则为 True。

命令是否被接受。

PCW 数据

注意:PCW(代码编写百分比)现在有自己的表,不再依赖于 user_data 表。字段名称描述
有效选择percent_code_written代码编写百分比。计算公式为 (Windsurf 生成的字节数) / (Windsurf 生成的字节数 + 用户生成的字节数)。此指标在单天或单个用户内部可能有较高的方差,因此我们建议按周进行聚合。
UNSPECIFIEDwindsurf_bytes代码编写百分比。计算公式为 (Windsurf 生成的字节数) / (Windsurf 生成的字节数 + 用户生成的字节数)。此指标在单天或单个用户内部可能有较高的方差,因此我们建议按周进行聚合。
Windsurf 总字节数,等于 windsurf_bytes_by_autocomplete + windsurf_bytes_by_commanduser_bytes代码编写百分比。计算公式为 (Windsurf 生成的字节数) / (Windsurf 生成的字节数 + 用户生成的字节数)。此指标在单天或单个用户内部可能有较高的方差,因此我们建议按周进行聚合。
用户总字节数total_bytes代码编写百分比。计算公式为 (Windsurf 生成的字节数) / (Windsurf 生成的字节数 + 用户生成的字节数)。此指标在单天或单个用户内部可能有较高的方差,因此我们建议按周进行聚合。
windsurf_bytes + user_byteswindsurf_bytes_by_autocomplete代码编写百分比。计算公式为 (Windsurf 生成的字节数) / (Windsurf 生成的字节数 + 用户生成的字节数)。此指标在单天或单个用户内部可能有较高的方差,因此我们建议按周进行聚合。
从自动补全生成的 Windsurf 总字节数windsurf_bytes_by_command代码编写百分比。计算公式为 (Windsurf 生成的字节数) / (Windsurf 生成的字节数 + 用户生成的字节数)。此指标在单天或单个用户内部可能有较高的方差,因此我们建议按周进行聚合。

从命令生成的 Windsurf 总字节数

注意:PCW(代码编写百分比)现在有自己的表,不再依赖于 user_data 表。字段名称有效过滤器
有效聚合api_key
自动补全的 UTC 小时。language一些示例
正在使用的编程语言。ideKOTLIN, GO, JAVA
正在使用的 IDE。version1.28.0, 130.0

jetbrains, vscode

要按日期过滤,请使用 start_timestamp 和 end_timestamp,它们应采用 RFC 3339 格式(例如 2023-01-01T00:00:00Z,参见下方示例)。

可用字段

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

示例

{
  "queryResults": [
    {
      "responseItems": [
        {
          "item": {
            "num_acceptances": "125",
            "num_lines_accepted": "863"
          }
        }
      ]
    }
  ]
}

独立 (用户, 小时) 元组。

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

此查询计算 2024 年 1 月整个月份的代码编写百分比。示例响应(为提高可读性而格式化为 JSON)

此查询显示从“生成文档字符串”代码透镜接受的代码行数,统计所有时间,按 IDE 分组。

{
  "queryResults": [
    {
      "responseItems": [
        {
          "item": {
            "chat_loc_used": "74",
            "ide": "jetbrains"
          },
        },
        {
          "item": {
            "chat_loc_used":"41",
            "ide":"vscode"
          },
        }
      ]
    }
  ]
}

如果 Windsurf 的聊天中发送了代码块,并且点击了“插入”、“复制”或“应用差异”按钮中的任何一个,则为使用的代码行数。

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

示例响应

此查询显示从“生成文档字符串”代码透镜接受的代码行数,统计所有时间,按 IDE 分组。

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

命令是否被接受。

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

此查询获取“编辑”命令添加和删除的代码行数,按编程语言分组。

此查询显示从“生成文档字符串”代码透镜接受的代码行数,统计所有时间,按 IDE 分组。

{
  "queryResults": [
    {
      "responseItems": [
         {
            "item": {
               "codeium_bytes": "6018",
               "codeium_bytes_by_autocomplete": "4593",
               "codeium_bytes_by_command": "1425",
               "percent_code_written": "0.61",
               "total_bytes": "9900"
             }
         }
     ]
   }
  ]
}

此查询获取 PCW(代码编写百分比)数据以及按 Go 语言过滤的字节数。

查询调试

从 1.10.0 版本及更高版本开始,无效查询将返回错误消息。本节包含一些常见的错误消息、它们的含义以及如何调试相应的查询。错误消息
解释至少需要一个字段或聚合
未检测到任何选择或聚合 - 请确保查询请求至少包含一个。字符串类型字段 ide 的聚合函数无效:QUERY_AGGREGATION_SUM
其中一个选择使用了无效的聚合函数。在这种情况下,我们尝试对“ide”字段使用 SUM,但它仅支持 COUNT 和 UNSPECIFIED。无效的查询表:QUERY_DATA_SOURCE_UNSPECIFIED
data_source 字段可能存在拼写错误,请仔细检查拼写。

所有选择字段应具有聚合函数,或者它们都不应具有

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

如果存在多个选择字段,则它们要么全部包含 aggregation_function,要么都不包含。例如,此选择无效,因为对 num_acceptances 进行了求和,但未对 num_lines_accepted 进行求和。

未检测到任何选择或聚合 - 请确保查询请求至少包含一个。注意:PCW 始终被视为已聚合。如果未明确选择 aggregation_function,则视为未指定。如果您想获取这两个字段的信息,请使用两个独立的查询。
并非每个字段都支持每种聚合函数;请参阅可用字段部分了解匹配项。在这种情况下,查询对“ide”字段使用了 QUERY_AGGREGATION_SUM 聚合函数,这是无效的。

尝试对独立字段进行聚合:distinct_developer_days。请考虑对非独立字段进行聚合,例如:[api_key date]

"aggregations": [
  {
    "field": "distinct_developer_days",
    "name": "distinct_developer_days"
  }
]

模式为“distinct_*”的字段不能出现在 aggregations 部分;错误建议改为在替代字段上进行聚合。所以,代替

"aggregations": [
  {
    "field": "api_key",
    "name": "api_key"
  },
  {
    "field": "date",
    "name": "date"
  }
]
尝试选择/聚合的字段别名重复:num_acceptances
所有选择和聚合必须具有不同的名称。请记住,如果未指定名称,则默认设置为 <AGGREGATION_FUNCTION>_<FIELD_NAME>。无效的组名称:GroupName