Workspace Connection Logs
Listar registros de conexión de workspace
Devuelve una lista paginada de registros de conexión de workspace de la organización autorizada (incluye tenants delegados accesibles). La agregación no está disponible en este endpoint.
GET
/
v2
/
organizations
/
{organization_id}
/
connection-logs
Listar registros de conexión de workspace
curl --request GET \
--url https://api.flexxible.net/v2/organizations/{organization_id}/connection-logs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.flexxible.net/v2/organizations/{organization_id}/connection-logs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.flexxible.net/v2/organizations/{organization_id}/connection-logs', 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://api.flexxible.net/v2/organizations/{organization_id}/connection-logs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.flexxible.net/v2/organizations/{organization_id}/connection-logs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.flexxible.net/v2/organizations/{organization_id}/connection-logs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flexxible.net/v2/organizations/{organization_id}/connection-logs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"has_next": false,
"data": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"user": "DOMAIN\\\\user",
"workspace_id": "507f1f77bcf86cd799439011",
"start": "2026-09-01T08:00:00.000Z",
"end": "2026-09-01T18:00:00.000Z",
"device_kind": "physical",
"machine_type": "session_host",
"endpoint": "client-01",
"is_reconnect": false,
"subscription_broker": "broker-1",
"pool_name": "pool-a",
"agent_delivery_group_name": "adg-1",
"broker": "azure_virtual_desktop",
"connection_id": 42,
"current_dc_name": "dc-1",
"hypervisor": "microsoft_azure",
"session_key": "session-key-1",
"session_type": "vdi_desktop",
"organization_id": "507f1f77bcf86cd799439011"
}
]
}{
"error": {
"message": "Parámetros de solicitud no válidos.",
"code": "BAD_REQUEST",
"details": "per_page must be less than or equal to 100"
}
}{
"error": {
"message": "No autorizado.",
"code": "UNAUTHORIZED"
}
}{
"error": {
"message": "Recurso no encontrado.",
"code": "NOT_FOUND"
}
}{
"error": {
"message": "Límite de solicitudes excedido.",
"code": "TOO_MANY_REQUESTS"
}
}{
"error": {
"message": "Error interno del servidor.",
"code": "INTERNAL_SERVER_ERROR"
}
}{
"error": {
"message": "Database unavailable",
"code": "SERVICE_UNAVAILABLE"
}
}Autorizaciones
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Parámetros de ruta
Identificador de la organización.
Required string length:
24Pattern:
^[0-9a-f]{24}$Parámetros de consulta
Número de página.
Rango requerido:
x >= 1Número de elementos por página.
Rango requerido:
1 <= x <= 100Campos de respuesta separados por comas para cada elemento.
Maximum string length:
2048Expresión JSON de filtros sobre campos filtrables del recurso.
Maximum string length:
5120Expresión de ordenación con el formato :asc|desc. Por defecto start:desc.
Pattern:
^([a-z_]+):(asc|desc)$⌘I
Listar registros de conexión de workspace
curl --request GET \
--url https://api.flexxible.net/v2/organizations/{organization_id}/connection-logs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.flexxible.net/v2/organizations/{organization_id}/connection-logs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.flexxible.net/v2/organizations/{organization_id}/connection-logs', 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://api.flexxible.net/v2/organizations/{organization_id}/connection-logs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.flexxible.net/v2/organizations/{organization_id}/connection-logs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.flexxible.net/v2/organizations/{organization_id}/connection-logs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flexxible.net/v2/organizations/{organization_id}/connection-logs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"has_next": false,
"data": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"user": "DOMAIN\\\\user",
"workspace_id": "507f1f77bcf86cd799439011",
"start": "2026-09-01T08:00:00.000Z",
"end": "2026-09-01T18:00:00.000Z",
"device_kind": "physical",
"machine_type": "session_host",
"endpoint": "client-01",
"is_reconnect": false,
"subscription_broker": "broker-1",
"pool_name": "pool-a",
"agent_delivery_group_name": "adg-1",
"broker": "azure_virtual_desktop",
"connection_id": 42,
"current_dc_name": "dc-1",
"hypervisor": "microsoft_azure",
"session_key": "session-key-1",
"session_type": "vdi_desktop",
"organization_id": "507f1f77bcf86cd799439011"
}
]
}{
"error": {
"message": "Parámetros de solicitud no válidos.",
"code": "BAD_REQUEST",
"details": "per_page must be less than or equal to 100"
}
}{
"error": {
"message": "No autorizado.",
"code": "UNAUTHORIZED"
}
}{
"error": {
"message": "Recurso no encontrado.",
"code": "NOT_FOUND"
}
}{
"error": {
"message": "Límite de solicitudes excedido.",
"code": "TOO_MANY_REQUESTS"
}
}{
"error": {
"message": "Error interno del servidor.",
"code": "INTERNAL_SERVER_ERROR"
}
}{
"error": {
"message": "Database unavailable",
"code": "SERVICE_UNAVAILABLE"
}
}