Obtener estadísticas de la página de usuarios
curl --request POST \
--url https://server.codeium.com/api/v1/UserPageAnalytics \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"service_key": "<string>",
"group_name": "<string>",
"start_timestamp": "<string>",
"end_timestamp": "<string>"
}
'import requests
url = "https://server.codeium.com/api/v1/UserPageAnalytics"
payload = {
"service_key": "<string>",
"group_name": "<string>",
"start_timestamp": "<string>",
"end_timestamp": "<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>',
start_timestamp: '<string>',
end_timestamp: '<string>'
})
};
fetch('https://server.codeium.com/api/v1/UserPageAnalytics', 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/UserPageAnalytics",
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>'
]),
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/UserPageAnalytics"
payload := strings.NewReader("{\n \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"start_timestamp\": \"<string>\",\n \"end_timestamp\": \"<string>\"\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/UserPageAnalytics")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"start_timestamp\": \"<string>\",\n \"end_timestamp\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.codeium.com/api/v1/UserPageAnalytics")
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 \"start_timestamp\": \"<string>\",\n \"end_timestamp\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"userTableStats": [
{
"name": "<string>",
"email": "<string>",
"lastUpdateTime": "<string>",
"apiKey": "<string>",
"activeDays": 123,
"disableCodeium": true,
"role": "<string>",
"signupTime": "<string>",
"lastAutocompleteUsageTime": "<string>",
"lastChatUsageTime": "<string>",
"lastCommandUsageTime": "<string>",
"promptCreditsUsed": 123,
"teamStatus": "<string>"
}
],
"billingCycleStart": "<string>",
"billingCycleEnd": "<string>",
"error": "<string>"
}API de analíticas
Obtener estadísticas de la página de usuarios
Obtiene estadísticas de actividad de los usuarios, incluidos nombres, correos electrónicos, fecha y hora de la última actividad, días activos y créditos de prompt usados en la página de Teams.
POST
/
api
/
v1
/
UserPageAnalytics
Obtener estadísticas de la página de usuarios
curl --request POST \
--url https://server.codeium.com/api/v1/UserPageAnalytics \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"service_key": "<string>",
"group_name": "<string>",
"start_timestamp": "<string>",
"end_timestamp": "<string>"
}
'import requests
url = "https://server.codeium.com/api/v1/UserPageAnalytics"
payload = {
"service_key": "<string>",
"group_name": "<string>",
"start_timestamp": "<string>",
"end_timestamp": "<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>',
start_timestamp: '<string>',
end_timestamp: '<string>'
})
};
fetch('https://server.codeium.com/api/v1/UserPageAnalytics', 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/UserPageAnalytics",
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>'
]),
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/UserPageAnalytics"
payload := strings.NewReader("{\n \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"start_timestamp\": \"<string>\",\n \"end_timestamp\": \"<string>\"\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/UserPageAnalytics")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"start_timestamp\": \"<string>\",\n \"end_timestamp\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.codeium.com/api/v1/UserPageAnalytics")
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 \"start_timestamp\": \"<string>\",\n \"end_timestamp\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"userTableStats": [
{
"name": "<string>",
"email": "<string>",
"lastUpdateTime": "<string>",
"apiKey": "<string>",
"activeDays": 123,
"disableCodeium": true,
"role": "<string>",
"signupTime": "<string>",
"lastAutocompleteUsageTime": "<string>",
"lastChatUsageTime": "<string>",
"lastCommandUsageTime": "<string>",
"promptCreditsUsed": 123,
"teamStatus": "<string>"
}
],
"billingCycleStart": "<string>",
"billingCycleEnd": "<string>",
"error": "<string>"
}Información general
Obtén las estadísticas de actividad de los usuarios que aparecen en la página de Teams, incluidos sus nombres, correos electrónicos, horas de la última actividad, días activos y créditos de prompt utilizados.Solicitud
string
requerido
Tu clave de servicio con permisos “Teams Read-only”
string
Filtra los resultados para mostrar solo los usuarios de un grupo específico (opcional)
string
Hora de inicio en formato RFC 3339 (p. ej.,
2023-01-01T00:00:00Z). Define el inicio del intervalo de tiempo que se usa para calcular activeDays y promptCreditsUsed. Si no se proporciona, por defecto se usa hace 1 año.string
Hora de finalización en formato RFC 3339 (p. ej.,
2023-12-31T23:59:59Z). Define el final del intervalo de tiempo que se usa para calcular activeDays y promptCreditsUsed. Si no se proporciona, por defecto se usa la hora actual.Solicitud de ejemplo
curl -X POST --header "Content-Type: application/json" \
--data '{
"service_key": "your_service_key_here",
"group_name": "engineering_team",
"start_timestamp": "2024-01-01T00:00:00Z",
"end_timestamp": "2024-12-31T23:59:59Z"
}' \
https://server.codeium.com/api/v1/UserPageAnalytics
Respuesta
Para equipos que no son de Devin,
apiKey contiene una clave de API de usuario sin procesar, no un hash. Trátala como un secreto: elimínala u ocúltala antes de registrarla, exportarla o compartir analíticas. Si necesitas conservar respuestas sin ocultar, restringe el acceso y almacénalas de forma segura.array
Array de objetos de estadísticas de usuarios
Mostrar Objeto de estadísticas de usuario
Mostrar Objeto de estadísticas de usuario
string
Nombre para mostrar del usuario
string
Dirección de correo electrónico del usuario
string
Marca de tiempo de la última actividad del usuario en formato RFC 3339
string
Para equipos que no son de Devin, la clave de API sin procesar del usuario. Maneja este valor como un secreto, no como un identificador público de analíticas. Para equipos de Devin, este campo contiene en su lugar el ID de usuario de Devin.
number
La cantidad de días en que el usuario estuvo activo dentro del intervalo de tiempo consultado (definido por
start_timestamp y end_timestamp). Un día se considera activo si el usuario tuvo alguna aceptación de autocompletado, uso de Cascade o uso de Command ese día.boolean
Indica si un admin ha deshabilitado el acceso a Devin Desktop para el usuario. Este campo solo está presente si el acceso se ha deshabilitado explícitamente y, en ese caso, siempre tendrá el valor true.
string
El rol del usuario dentro del equipo (p. ej., admin, miembro)
string
Marca de tiempo de cuando el usuario se registró, en formato RFC 3339
string
La marca de tiempo más reciente en que se usó la modalidad Tab/Autocomplete, en formato RFC 3339
string
La marca de tiempo más reciente en que se usó la modalidad Cascade, en formato RFC 3339
string
La marca de tiempo más reciente en que se usó la modalidad Command, en formato RFC 3339
number
La cantidad total de créditos de prompt usados por este usuario en este equipo dentro del intervalo de tiempo consultado (definido por
start_timestamp y end_timestamp), devuelta en centavos (1 crédito = 100 centavos). Para obtener el uso real de créditos, divide este valor entre 100. El uso se registra en franjas de una hora, y una franja solo se contabiliza si el inicio de su hora está dentro del intervalo. Por ejemplo, un intervalo de 10:30–11:30 incluye todo el uso de 11:00–11:59 y nada del de 10:00–10:59, mientras que un intervalo de 10:15–10:45 no incluye ningún uso. Para los usuarios sin uso en el intervalo, se devuelve 0. Este valor no está vinculado al ciclo de facturación actual indicado en billingCycleStart y billingCycleEnd.string
El estado de la membresía del usuario en el equipo. Valores posibles:
USER_TEAM_STATUS_UNSPECIFIED, USER_TEAM_STATUS_PENDING, USER_TEAM_STATUS_APPROVED, USER_TEAM_STATUS_REJECTED. Ten en cuenta que la API devuelve todos los usuarios independientemente de su estado en el equipo, mientras que la UI de Manage Members solo muestra los usuarios aprobados.string
El inicio del ciclo de facturación actual del equipo en formato RFC 3339. Este campo es independiente del intervalo de tiempo solicitado y no delimita los valores de
promptCreditsUsed en userTableStats.string
El final del ciclo de facturación actual del equipo en formato RFC 3339. Este campo es independiente del intervalo de tiempo solicitado y no delimita los valores de
promptCreditsUsed en userTableStats.Respuesta de ejemplo
Los valores deapiKey que aparecen a continuación son marcadores de posición de ejemplo, no credenciales reales.
{
"userTableStats": [
{
"name": "Alice",
"email": "alice@cognition.ai",
"lastUpdateTime": "2024-10-10T22:56:10.771591Z",
"apiKey": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
"activeDays": 178,
"role": "admin",
"signupTime": "2024-01-15T08:30:00Z",
"lastAutocompleteUsageTime": "2024-10-10T22:56:10Z",
"lastChatUsageTime": "2024-10-10T20:30:00Z",
"promptCreditsUsed": 12500,
"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": 210,
"role": "member",
"signupTime": "2024-02-01T10:00:00Z",
"lastAutocompleteUsageTime": "2024-10-10T18:11:23Z",
"lastChatUsageTime": "2024-10-09T14:22:00Z",
"lastCommandUsageTime": "2024-10-08T09:15:00Z",
"promptCreditsUsed": 8300,
"teamStatus": "USER_TEAM_STATUS_APPROVED"
}
],
"billingCycleStart": "2024-10-01T00:00:00Z",
"billingCycleEnd": "2024-11-01T00:00:00Z"
}
Respuestas de error
string
Mensaje de error que describe el problema
- Clave de servicio no válida o permisos insuficientes
- Formato de marca de tiempo no válido
- Grupo no encontrado
- Se superó el límite de solicitudes

