API ODATA de Citrix Analytics

Présentation

L’API REST ODATA v4 de CAS vous permet de récupérer facilement les données agrégées. Actuellement, nous permettons aux utilisateurs de récupérer les données de session à partir de la source de données de performance CAS.

Cet article fournit des conseils sur l’utilisation des API.

Spécifications de l’API

Authentification

L’implémentation utilise le jeton de porteur Citrix Cloud™ pour s’authentifier.

Références :

ID client Citrix Cloud et secret client Citrix Cloud

Voici un exemple de requête pour obtenir le jeton.

Exemple de requête :

    POST https://api.cloud.com/cctrustoauth2/{customerid}/tokens/clients
    Accept: application/json
    Content-Type: application/x-www-form-urlencoded
    Body: grant_type=client_credentials&client_id={client_id}&client_secret={client_secret}
<!--NeedCopy-->

Exemple de réponse :

HTTP/1.1 200 OK
Content-Type: application/json
...
{
"token_type": "bearer",
"access_token": "ey1..",
"expires_in": "3600"
}
<!--NeedCopy-->

Remarque :

La période d’expiration du jeton de porteur est d’une heure. Regénérez-le si vous devez effectuer la requête après une heure.

Points de terminaison

Global : https://api.cloud.com/casodata

Exemple :

https://api.cloud.com/casodata/sessions?year=2023&month=04&day=14 récupérera les données de sessions agrégées pour la date du 14/04/2023 (UTC).

Chemin de service

Cette section contient des informations sur le chemin de service et les noms d’entités tels que les sessions, les machines et les utilisateurs. Par exemple, consultez l’exemple de chemin de service suivant :

/sessions?year=2023&month=04&day=14
<!--NeedCopy-->

Les paramètres année, mois et jour sont obligatoires et sont ajoutés au format UTC.

Les données d’une heure spécifiée sont également prises en charge, le chemin est le suivant :

/sessions?year=2023&month=04&day=14&hour=10 (Récupère les données du 14/04/2023 à 10:00)
<!--NeedCopy-->

En-têtes HTTP

Clé Exemple Valeur Obligatoire
Authorization CwsAuth bearer=   Yes
Citrix-CustomerId Yes
Content-Type application/json   Yes
Citrix-TransactionId     No
Accept-Encoding gzip No

Opérateurs système

L’API ODATA de CAS prend en charge les options système OData de base suivantes :

Option système Exemple
$select https:///casodata/sessions?year=2023&month=04&day=14&$select=sessionKey,sessionScore,sessionState
$orderby https:///casodata/sessions?year=2023&month=04&day=14&$select=sessionKey,sessionScore,sessionState&$orderby=sessionScore desc
$top https:///casodata/sessions?year=2023&month=04&day=14&$select=sessionKey,sessionScore,sessionState&$top=1
$top&$skip https:///casodata/sessions?year=2023&month=04&day=14&$select=sessionKey,sessionScore,sessionState&$top=10&$skip=20
$count https:///casodata/sessions?year=2023&month=04&day=14&$count=true
$filters https:///casodata/sessions?year=2023&month=04&day=14&$select=sessionKey,sessionScore,sessionState&$filter=sessionScore ne 20

Remarque :

N’ajoutez aucun espace dans la valeur de l’option $select.

Opérateurs et fonctions $filter

L’API ODATA de CAS prend en charge les opérateurs logiques OData et les fonctions de chaîne suivants pour l’option $filter :

Catégorie Opérateurs Exemples
Opérateurs logiques



eq/ne/gt/lt/le/ge https:///casodata/sessions?year=2023&month=04&day=14&$select=sessionKey,sessionScore,sessionState&$filter=sessionScore ge 20
not https:///casodata/sessions?year=2023&month=04&day=14&$select=sessionKey,sessionScore,sessionState,deliveryGroupName&$filter=not(deliveryGroupName eq null)
and/or https:///casodata/sessions?year=2023&month=04&day=14&$select=sessionKey,sessionScore,sessionState,logonDuration&$filter=sessionState eq ‘5’ and (sessionScore le 20 or logonDuration gt 19.914)
in https:///casodata/sessions?year=2023&month=04&day=14&$select=sessionKey,sessionScore,sessionState,logonDuration&$filter=sessionState in (‘5’,’3’)
not in https:///casodata/sessions?year=2023&month=04&day=14&$select=sessionKey,sessionScore,sessionState,logonDuration&$filter=not (sessionState in (‘5’,’3’))
Fonctions de chaîne

contains https:///casodata/sessions?year=2023&month=04&day=14&$select=sessionKey,sessionScore,sessionState,deliveryGroupName&$filter=contains(deliveryGroupName,’PRD’)
startswith https:///casodata/sessions?year=2023&month=04&day=14&$select=sessionKey,sessionScore,sessionState,deliveryGroupName&$filter=not endswith(deliveryGroupName,’CVAD Development’)
endswith https:///casodata/sessions?year=2023&month=04&day=14&$select=sessionKey,sessionScore,sessionState,deliveryGroupName&$filter=startswith(sessionKey,’09c3268e’)

Entités et attributs de données

Les trois entités de performance CAS suivantes sont prises en charge :

Exemples de cas d’utilisation

Obtenir les métadonnées et sélectionner certaines colonnes pour effectuer la requête

  1. Demande des métadonnées

    Exemple de requête :

    curl --location 'https://api.cloud.com/casodata/$metadata' \
    --header 'Authorization: CwsAuth bearer=eyJhbGciOiJSUzI1NiIsInR5.....' \
    --header 'Citrix-CustomerId: qt64gkrzji7h' \
    --header 'Content-Type: application/json'
    <!--NeedCopy-->
    

    Exemple de réponse :

    <?xml version="1.0" encoding="UTF-8"?>
    <edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
    <edmx:DataServices>
    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="cas.odata.v1">
    <EntityType Name="session">
    <Property Name="timestamp" Type="Edm.String"></Property>
    <Property Name="sessionKey" Type="Edm.String"></Property>
    <Property Name="sessionScore" Type="Edm.Double"></Property>
    <Property Name="sessionState" Type="Edm.String"></Property>
    ...
    <Property Name="sessionLaunchStatus" Type="Edm.Int32"></Property>
    <Property Name="sessionLaunchStatusCustom" Type="Edm.String"></Property>
    </EntityType>
    <EntityContainer Name="Container">
    <EntitySet Name="sessions" EntityType="cas.odata.v1.session" IncludeInServiceDocument="false"></EntitySet>
    </EntityContainer>
    </Schema>
    </edmx:DataServices>
    </edmx:Edmx>
    <!--NeedCopy-->
    
  2. Sélectionner les colonnes sessionKey, sessionScore et sessionState pour effectuer la requête

    Exemple de requête :

    curl --location 'https://api.cloud.com/casodata/sessions?year=2023&month=04&day=14&%24select=sessionKey%2CsessionScore%
    2CsessionState' \
    --header 'Authorization: CwsAuth bearer=eyJhbGciOiJSUzI1NiIsInR5.....' \
    --header 'Citrix-CustomerId: qt64gkrzji7h' \
    --header 'Content-Type: application/json'
    <!--NeedCopy-->
    

    Exemple de réponse :

    {
    "@odata.context": "$metadata#sessions(sessionKey,sessionScore,sessionState)/$entity",
    "value": [
    {
    "sessionKey": "009e7f0f-5707-4083-934f-24d8ad5e91f8",
    "sessionScore": -1.0,
    "sessionState": "2"
    },
    ...
    {
    "sessionKey": "ff0504e3-0867-414a-b0b2-beb73f06fdad",
    "sessionScore": 0.0,
    "sessionState": "5"
    }
    ]
    }
    <!--NeedCopy-->
    

Récupérer toutes les données d’un jour spécifié avec pagination

La limitation par défaut de la requête est de 1000 lignes.

L’utilisateur peut définir la valeur de l’option $top pour limiter le nombre de lignes de résultat dans la requête. Dans ce scénario, le lien vers la page suivante est fourni en bas de la réponse de la requête.

Exemple de requête :

curl --location 'https://api.cloud.com/casodata/sessions?year=2023&month=04&day=14&%24top=100' \
--header 'Authorization: CwsAuth bearer=eyJhbGciOiJSUzI1NiIsInR5.....' \
--header 'Citrix-CustomerId: qt64gkrzji7h' \
--header 'Content-Type: application/json'
<!--NeedCopy-->

Exemple de réponse :

{
"@odata.context": "$metadata#sessions/$entity",
"value": [
{
"timestamp": "2023-03-28T00:00:00.000Z",
"sessionKey": "009e7f0f-5707-4083-934f-24d8ad5e91f8",
"sessionScore": 79.0,
"sessionState": "2",
"sessionType": "0",
"userName": "81d0260b529c11fbb05c8dfabb3d312182e6af9deecfc6c036768df2ed3c3a39",
"sessionStartTime": "2023-03-28T17:38:38.000Z",
"machineName": "253f6a031c9b65cbb7bcc3f137b9878fe0effef010757aec54420776a0d2dd71",
"deliveryGroupName": "CVD\\BUR CVAD Development",
"logonDuration": 18.69,
"brokeringDuration": 0.0,
"vmStartDuration": 0.0,
"hdxConnectionDuration": 0.0,
"authenticationDuration": 0.0,
"gpoDuration": 0.0,
"logonScriptsDuration": 0.0,
"profileLoadDuration": 0.0,
"interactiveSessionsDuration": 0.0,
"siteName": "cloudxdsite",
"icaRtt": 125.38,
"reconnects": 0.0,
"wanLatency": 0,
"hostDelay": 0,
"dcLatency": 0,
"endpointLocationCity": null,
"endpointReceiverVersion": "21.6.0.47",
"endpointOS": "Windows",
"endpointLocationCountry": null,
"endpointLinkSpeed": -1.0,
"endpointName": "64368231b5d925e40d67449640ca110e9658f63eef37d2579b09b975cc7f7e88",
"endpointIP": "850a4b2abc159a2f7d44dac564bda06afad0c558a070a2681f5cc0e1aa81991c",
"vdaIP": null,
"gatewayFQDN": null,
"connectionType": "External",
"connectorName": null,
"connectorGatewayLatency": 0.0,
"networkInterfaceType": null,
"isp": null,
"sessionLaunchType": "ICA",
"throughputBytesReceived": -1.0,
"throughputBytesSent": -1.0,
"inputBandwidthConsumed": -1.0,
"outputBandwidthAvailable": -1.0,
"outputBandwidthUsed": -1.0,
"networkLatency": -1.0,
"outputBandwidthUtilization": -1.0,
"siteId": "090e20c8-c852-4a92-9b3f-dfb8d8b2ab61",
"sessionLaunchStatus": 0,
"sessionLaunchStatusCustom": "Succeeded"
},
...
{
"timestamp": "2023-04-14T00:00:00.000Z",
"sessionKey": "ff0504e3-0867-414a-b0b2-beb73f06fdad",
"sessionScore": 0.0,
"sessionState": "5",
"sessionType": "0",
"userName": "aed8a56c38d5d2824d8699a48cdd1b19eb3b16f135c8d61bf2cd6acd465aa998",
"sessionStartTime": "2023-03-09T21:39:51.000Z",
"machineName": "5603b4dcad97424b6329caccc9cc6ad949b764bbc0015bc6e2a2b4938e4be954",
"deliveryGroupName": "Remote PC - Miami LABs",
"logonDuration": 0.0,
"brokeringDuration": 0.0,
"vmStartDuration": 0.0,
"hdxConnectionDuration": 0.0,
"authenticationDuration": 0.0,
"gpoDuration": 0.0,
"logonScriptsDuration": 0.0,
"profileLoadDuration": 0.0,
"interactiveSessionsDuration": 0.0,
"siteName": "cloudxdsite",
"icaRtt": 0.0,
"reconnects": 0.0,
"wanLatency": 0,
"hostDelay": 0,
"dcLatency": 0,
"endpointLocationCity": null,
"endpointReceiverVersion": null,
"endpointOS": "Windows 10",
"endpointLocationCountry": null,
"endpointLinkSpeed": -1.0,
"endpointName": "Precision 5550",
"endpointIP": "e74dbbbd20d20f971c0254c6680aad800ad3932c4740544b39a42bb422424272",
"vdaIP": null,
"gatewayFQDN": null,
"connectionType": "External",
"connectorName": null,
"connectorGatewayLatency": 0.0,
"networkInterfaceType": null,
"isp": null,
"sessionLaunchType": "ICA",
"throughputBytesReceived": -1.0,
"throughputBytesSent": -1.0,
"inputBandwidthConsumed": -1.0,
"outputBandwidthAvailable": -1.0,
"outputBandwidthUsed": -1.0,
"networkLatency": -1.0,
"outputBandwidthUtilization": -1.0,
"siteId": "090e20c8-c852-4a92-9b3f-dfb8d8b2ab61",
"sessionLaunchStatus": 0,
"sessionLaunchStatusCustom": "Succeeded"
}
],
"@odata.nextLink": "https://api.cloud.com/casodata/sessions?year=2023&month=04&day=14&%
24skip=100&%24top=100"
}
<!--NeedCopy-->

Obtenir toutes les données d’une session donnée (filtrer les données avec sessionkey)

Exemple de requête :

curl --location 'https://api.cloud.com/casodata/sessions?year=2023&month=04&day=14&%24filter=sessionKey%20eq%20%
27009e7f0f-5707-4083-934f-24d8ad5e91f8%27' \
--header 'Authorization: CwsAuth bearer=eyJhbGciOiJSUzI1NiIsInR5.....' \
--header 'Citrix-CustomerId: qt64gkrzji7h' \
--header 'Content-Type: application/json'
<!--NeedCopy-->

Exemple de réponse :

{
"@odata.context": "$metadata#sessions/$entity",
"value": [
{
"timestamp": "2023-04-14T00:00:00.000Z",
"sessionKey": "009e7f0f-5707-4083-934f-24d8ad5e91f8",
"sessionScore": -1.0,
"sessionState": "2",
"sessionType": "0",
"userName": "81d0260b529c11fbb05c8dfabb3d312182e6af9deecfc6c036768df2ed3c3a39",
"sessionStartTime": "2023-04-05T17:32:45.000Z",
"machineName": "253f6a031c9b65cbb7bcc3f137b9878fe0effef010757aec54420776a0d2dd71",
"deliveryGroupName": "CVD\\BUR CVAD Development",
"logonDuration": 21.2,
"brokeringDuration": 0.0,
"vmStartDuration": 0.0,
"hdxConnectionDuration": 0.0,
"authenticationDuration": 0.0,
"gpoDuration": 0.0,
"logonScriptsDuration": 0.0,
"profileLoadDuration": 0.0,
"interactiveSessionsDuration": 0.0,
"siteName": "cloudxdsite",
"icaRtt": 0.0,
"reconnects": 0.0,
"wanLatency": 0,
"hostDelay": 0,
"dcLatency": 0,
"endpointLocationCity": null,
"endpointReceiverVersion": "21.6.0.47",
"endpointOS": "Windows",
"endpointLocationCountry": null,
"endpointLinkSpeed": -1.0,
"endpointName": "64368231b5d925e40d67449640ca110e9658f63eef37d2579b09b975cc7f7e88",
"endpointIP": "8dbacd9197f4d3dc068fd44b4837828f8e10a19358b14e96d439cfc82042b70f",
"vdaIP": null,
"gatewayFQDN": null,
"connectionType": "External",
"connectorName": null,
"connectorGatewayLatency": 0.0,
"networkInterfaceType": null,
"isp": null,
"sessionLaunchType": "ICA",
"throughputBytesReceived": -1.0,
"throughputBytesSent": -1.0,
"inputBandwidthConsumed": -1.0,
"outputBandwidthAvailable": -1.0,
"outputBandwidthUsed": -1.0,
"networkLatency": -1.0,
"outputBandwidthUtilization": -1.0,
"siteId": "090e20c8-c852-4a92-9b3f-dfb8d8b2ab61",
"sessionLaunchStatus": 0,
"sessionLaunchStatusCustom": "Succeeded"
}
]
}
<!--NeedCopy-->

Compter toutes les sessions actives d’un jour donné

Exemple de requête :

curl --location 'https://api.cloud.com/casodata/sessions?year=2023&month=04&day=14&%24count=true&%24filter=sessionState%
20eq%20%275%27' \
--header 'Authorization: CwsAuth bearer=eyJhbGciOiJSUzI1NiIsInR5.....' \
--header 'Citrix-CustomerId: qt64gkrzji7h' \
--header 'Content-Type: application/json'
<!--NeedCopy-->

Exemple de réponse :

207

Source de données

Le tableau de bord de recherche en libre-service de CAS visualise et affiche les données aux administrateurs clients et active la fonctionnalité de recherche. L’API ODATA utilise la même source de données et offre plus de flexibilité aux administrateurs clients pour récupérer et filtrer les données. Pour plus d’informations, consultez Données tabulaires.

API ODATA de Citrix Analytics