Obține Analytics pentru Cascade
curl --request POST \
--url https://server.codeium.com/api/v1/CascadeAnalytics \
--header 'Content-Type: application/json' \
--data '
{
"service_key": "<string>",
"group_name": "<string>",
"start_timestamp": "<string>",
"end_timestamp": "<string>",
"emails": [
{}
],
"ide_types": [
{}
],
"query_requests": [
{}
]
}
'import requests
url = "https://server.codeium.com/api/v1/CascadeAnalytics"
payload = {
"service_key": "<string>",
"group_name": "<string>",
"start_timestamp": "<string>",
"end_timestamp": "<string>",
"emails": [{}],
"ide_types": [{}],
"query_requests": [{}]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
service_key: '<string>',
group_name: '<string>',
start_timestamp: '<string>',
end_timestamp: '<string>',
emails: [{}],
ide_types: [{}],
query_requests: [{}]
})
};
fetch('https://server.codeium.com/api/v1/CascadeAnalytics', 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/CascadeAnalytics",
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>',
'start_timestamp' => '<string>',
'end_timestamp' => '<string>',
'emails' => [
[
]
],
'ide_types' => [
[
]
],
'query_requests' => [
[
]
]
]),
CURLOPT_HTTPHEADER => [
"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/CascadeAnalytics"
payload := strings.NewReader("{\n \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"start_timestamp\": \"<string>\",\n \"end_timestamp\": \"<string>\",\n \"emails\": [\n {}\n ],\n \"ide_types\": [\n {}\n ],\n \"query_requests\": [\n {}\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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/CascadeAnalytics")
.header("Content-Type", "application/json")
.body("{\n \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"start_timestamp\": \"<string>\",\n \"end_timestamp\": \"<string>\",\n \"emails\": [\n {}\n ],\n \"ide_types\": [\n {}\n ],\n \"query_requests\": [\n {}\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.codeium.com/api/v1/CascadeAnalytics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"start_timestamp\": \"<string>\",\n \"end_timestamp\": \"<string>\",\n \"emails\": [\n {}\n ],\n \"ide_types\": [\n {}\n ],\n \"query_requests\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_body{
"queryResults": [
{
"cascadeLines": {
"cascadeLines": [
{
"day": "<string>",
"linesSuggested": "<string>",
"linesAccepted": "<string>"
}
]
},
"cascadeRuns": {
"cascadeRuns": [
{
"day": "<string>",
"model": "<string>",
"mode": "<string>",
"messagesSent": "<string>",
"cascadeId": "<string>",
"promptsUsed": "<string>"
}
]
},
"cascadeToolUsage": {
"cascadeToolUsage": [
{
"tool": "<string>",
"count": "<string>"
}
]
}
}
]
}Analytics API
Obține Analytics pentru Cascade
Interoghează metrici și date de utilizare specifice Cascade, inclusiv linii sugerate/acceptate, utilizarea modelului AI, consumul de credite și statistici de utilizare a instrumentelor.
POST
/
api
/
v1
/
CascadeAnalytics
Obține Analytics pentru Cascade
curl --request POST \
--url https://server.codeium.com/api/v1/CascadeAnalytics \
--header 'Content-Type: application/json' \
--data '
{
"service_key": "<string>",
"group_name": "<string>",
"start_timestamp": "<string>",
"end_timestamp": "<string>",
"emails": [
{}
],
"ide_types": [
{}
],
"query_requests": [
{}
]
}
'import requests
url = "https://server.codeium.com/api/v1/CascadeAnalytics"
payload = {
"service_key": "<string>",
"group_name": "<string>",
"start_timestamp": "<string>",
"end_timestamp": "<string>",
"emails": [{}],
"ide_types": [{}],
"query_requests": [{}]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
service_key: '<string>',
group_name: '<string>',
start_timestamp: '<string>',
end_timestamp: '<string>',
emails: [{}],
ide_types: [{}],
query_requests: [{}]
})
};
fetch('https://server.codeium.com/api/v1/CascadeAnalytics', 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/CascadeAnalytics",
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>',
'start_timestamp' => '<string>',
'end_timestamp' => '<string>',
'emails' => [
[
]
],
'ide_types' => [
[
]
],
'query_requests' => [
[
]
]
]),
CURLOPT_HTTPHEADER => [
"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/CascadeAnalytics"
payload := strings.NewReader("{\n \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"start_timestamp\": \"<string>\",\n \"end_timestamp\": \"<string>\",\n \"emails\": [\n {}\n ],\n \"ide_types\": [\n {}\n ],\n \"query_requests\": [\n {}\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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/CascadeAnalytics")
.header("Content-Type", "application/json")
.body("{\n \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"start_timestamp\": \"<string>\",\n \"end_timestamp\": \"<string>\",\n \"emails\": [\n {}\n ],\n \"ide_types\": [\n {}\n ],\n \"query_requests\": [\n {}\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.codeium.com/api/v1/CascadeAnalytics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"start_timestamp\": \"<string>\",\n \"end_timestamp\": \"<string>\",\n \"emails\": [\n {}\n ],\n \"ide_types\": [\n {}\n ],\n \"query_requests\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_body{
"queryResults": [
{
"cascadeLines": {
"cascadeLines": [
{
"day": "<string>",
"linesSuggested": "<string>",
"linesAccepted": "<string>"
}
]
},
"cascadeRuns": {
"cascadeRuns": [
{
"day": "<string>",
"model": "<string>",
"mode": "<string>",
"messagesSent": "<string>",
"cascadeId": "<string>",
"promptsUsed": "<string>"
}
]
},
"cascadeToolUsage": {
"cascadeToolUsage": [
{
"tool": "<string>",
"count": "<string>"
}
]
}
}
]
}Prezentare generală
Cerere
string
obligatoriu
Cheia ta de serviciu cu permisiuni „Teams Read-only”
string
Filtrează rezultatele la utilizatorii dintr-un grup specific. Nu poate fi utilizat împreună cu parametrul
emails.string
Ora de început în format RFC 3339 (de ex. „2023-01-01T00:00:00Z”)
string
Ora de sfârșit în format RFC 3339 (de ex. „2023-12-31T23:59:59Z”)
array
Array de adrese de e-mail pentru filtrarea rezultatelor. Nu poate fi utilizat împreună cu parametrul
group_name.array
Filtrează după tipul IDE. Opțiuni disponibile:
"editor"- Windsurf Editor"jetbrains"- JetBrains Plugin
array
obligatoriu
Array de interogări ale surselor de date de executat. Fiecare obiect trebuie să conțină una dintre sursele de date acceptate.
Surse de date
cascade_lines
{
"cascade_lines": {}
}
day- Dată în formatul RFC 3339linesSuggested- Numărul de linii sugeratelinesAccepted- Numărul de linii acceptate
cascade_runs
{
"cascade_runs": {}
}
day- Dată în formatul RFC 3339model- Numele modelului AI utilizatmode- Modul Cascade (vedeți modurile de mai jos)messagesSent- Numărul de mesaje trimisecascadeId- ID unic al conversațieipromptsUsed- Credite consumate (în cenți)
CONVERSATIONAL_PLANNER_MODE_DEFAULT- Mod scriereCONVERSATIONAL_PLANNER_MODE_READ_ONLY- Mod citireCONVERSATIONAL_PLANNER_MODE_NO_TOOL- Mod vechi (legacy)UNKNOWN- Mod necunoscut
cascade_tool_usage
{
"cascade_tool_usage": {}
}
tool- Identificatorul instrumentului (consultați mapările de instrumente de mai jos)count- Numărul de utilizări ale instrumentului
Mapări ale utilizării instrumentelor
| Tool Identifier | Nume afișat |
|---|---|
CODE_ACTION | Editare cod |
VIEW_FILE | Vizualizare fișier |
RUN_COMMAND | Rulare Command |
FIND | Instrument de căutare |
GREP_SEARCH | Căutare grep |
VIEW_FILE_OUTLINE | Vizualizare structură fișier |
MQUERY | Riptide |
WORKFLOWS_USED | Fluxuri de lucru utilizate |
LIST_DIRECTORY | Listare director |
MCP_TOOL | Instrument MCP |
PROPOSE_CODE | Propunere cod |
SEARCH_WEB | Căutare web |
MEMORY | Memorie |
PROXY_WEB_SERVER | Previzualizare în browser |
DEPLOY_WEB_APP | Publicare aplicație web |
Exemplu de solicitare
curl -X POST --header "Content-Type: application/json" \
--data '{
"service_key": "your_service_key_here",
"group_name": "engineering_team",
"start_timestamp": "2025-01-01T00:00:00Z",
"end_timestamp": "2025-01-02T00:00:00Z",
"emails": ["user1@windsurf.com", "user2@windsurf.com"],
"ide_types": ["editor"],
"query_requests": [
{
"cascade_lines": {}
},
{
"cascade_runs": {}
},
{
"cascade_tool_usage": {}
}
]
}' \
https://server.codeium.com/api/v1/CascadeAnalytics
Răspuns
array
Array de rezultate ale interogărilor, câte unul pentru fiecare interogare
Afișează Rezultat pentru Cascade Lines
Afișează Rezultat pentru Cascade Lines
Afișează Rezultat pentru Cascade Runs
Afișează Rezultat pentru Cascade Runs
object
array
Exemplu de răspuns
{
"queryResults": [
{
"cascadeLines": {
"cascadeLines": [
{
"day": "2025-05-01T00:00:00Z",
"linesSuggested": "206",
"linesAccepted": "157"
},
{
"day": "2025-05-02T00:00:00Z",
"linesSuggested": "16"
}
]
}
},
{
"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"
}
]
}
},
{
"cascadeToolUsage": {
"cascadeToolUsage": [
{
"tool": "CODE_ACTION",
"count": "15"
},
{
"tool": "LIST_DIRECTORY",
"count": "20"
}
]
}
}
]
}
Note
- API-ul returneaza date brute care pot contine valori „UNKNOWN”
- Pentru analiza metricilor, agregati in functie de campuri specifice de interes (de ex., suma
promptsUsedpentru identificarea tiparelor de utilizare) - Datele despre mod si prompt pot fi divizate in mai multe intrari
- Consumarea creditelor (
promptsUsed) este returnata in centi (100 = 1 credit)