Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’API d’inventaire vous permet d’exécuter des requêtes structurées sur Azure Resource Graph à l’aide d’une requête POST avec une spécification de requête dans le corps de la requête. L’API traduit votre spécification de requête en Kusto Query Language (KQL) pour l’exécution sur Azure Resource Graph. L’API d’inventaire pour ressources fait partie de la documentation de référence de l’API Power Platform. Pour obtenir la liste complète des types de ressources et des champs interrogeables, consultez la référence du schéma d’inventaire Power Platform.
Point de terminaison d’API
POST {PowerPlatformAPI url}/resourcequery/resources/query?api-version=2024-10-01
Corps de la demande
Le corps de la requête doit contenir une spécification de requête avec la structure suivante :
Structure de requête
{
"TableName": "string",
"Clauses": [
{
"$type": "clause_type",
// clause-specific properties
}
],
"Options": {
"Top": 100,
"Skip": 0,
"SkipToken": "string"
}
}
Propriétés
| Propriété | Type | Obligatoire | Description |
|---|---|---|---|
TableName |
ficelle | Oui | Type de table/ressource cible à interroger (par exemple, « PowerPlatformResources ») |
Clauses |
tableau | Oui | Tableau de clauses de requête qui définissent les opérations à effectuer |
Options |
Objet | Non | Options de requête Azure Resource Graph pour la pagination et le contrôle de résultat |
Options de requête
L’objet Options prend en charge les paramètres de requête d'Azure Resource Graph pour la pagination et le contrôle des résultats. Pour en savoir plus, consultez ResourceQueryRequestOptions la documentation .
Clauses de requête prises en charge
L’API prend en charge les types de clauses mis en surbrillance dans cette section via la sérialisation JSON polymorphe. Chaque type de clause correspond aux opérateurs KQL comme documentés dans la référence KQL :
Clause Where
Filtre les données en fonction des conditions de champ. Traduit en opérateur KQLwhere.
{
"$type": "where",
"FieldName": "string",
"Operator": "string",
"Values": ["string1", "string2"]
}
Opérateurs pris en charge : L’API prend en charge tous les opérateurs de comparaison et de chaîne KQL standard. Pour obtenir la liste complète des opérateurs disponibles, consultez la documentation sur les opérateurs de chaîne KQL et les opérateurs numériques .
Exemple :
{
"$type": "where",
"FieldName": "type",
"Operator": "in~",
"Values": ["'microsoft.powerapps/canvasapps'", "'microsoft.copilotstudio/agents'"]
}
Traduit en KQL :| where type in~ ('microsoft.powerapps/canvasapps', 'microsoft.copilotstudio/agents')
Clause de projet
Sélectionne des champs spécifiques dans les résultats. Traduit en opérateur KQLproject.
{
"$type": "project",
"FieldList": ["field1", "field2", "field3"]
}
Exemple :
{
"$type": "project",
"FieldList": [
"name",
"properties.displayName",
"environmentId = tostring(properties.environmentId)",
"createdDate = properties.createdAt"
]
}
Traduit en KQL :| project name, properties.displayName, environmentId = tostring(properties.environmentId), createdDate = properties.createdAt
Take (clause)
Limite le nombre de résultats retournés. Traduit en opérateur KQLtake.
{
"$type": "take",
"TakeCount": 50
}
Traduit en KQL :| take 50
Order by, clause
Trie les résultats par champs spécifiés. Traduit en opérateur KQLsort.
{
"$type": "orderby",
"FieldNamesAscDesc": {
"field1": "asc",
"field2": "desc"
}
}
Exemple :
{
"$type": "orderby",
"FieldNamesAscDesc": {
"tostring(properties.createdAt)": "desc",
"properties.displayName": "asc"
}
}
Traduit en KQL :| sort by tostring(properties.createdAt) desc, properties.displayName asc
Clause distincte
Retourne des valeurs uniques pour les champs spécifiés. Traduit en opérateur KQLdistinct.
{
"$type": "distinct",
"FieldList": ["field1", "field2"]
}
Traduit en KQL :| distinct field1, field2
Clause Count
Retourne le nombre d’enregistrements correspondants. Traduit en opérateur KQLcount.
{
"$type": "count"
}
Traduit en KQL :| count
Résumé de la clause
Agrège les données à l’aide des opérations count ou argmax. Traduit en opérateur KQLsummarize.
{
"$type": "summarize",
"SummarizeClauseExpression": {
"OperatorName": "count|argmax",
"OperatorFieldName": "string",
"FieldList": ["field1", "field2"]
}
}
Opérateurs pris en charge :
-
countcount()→ : nombre d’enregistrements regroupés par champs spécifiés. -
argmaxarg_max()→ - Obtenir des enregistrements avec une valeur maximale dans le champ spécifié.
Exemple de comptage :
{
"$type": "summarize",
"SummarizeClauseExpression": {
"OperatorName": "count",
"OperatorFieldName": "resourceCount",
"FieldList": ["resourceGroup", "type"]
}
}
Traduit en KQL :| summarize resourceCount = count() by resourceGroup, type
Exemple ArgMax :
{
"$type": "summarize",
"SummarizeClauseExpression": {
"OperatorName": "argmax",
"OperatorFieldName": "createdTime",
"FieldList": ["resourceGroup"]
}
}
Traduit en KQL :| summarize arg_max(createdTime, *) by resourceGroup
Étendre la clause
Ajoute des colonnes calculées aux résultats. Traduit en opérateur KQLextend.
{
"$type": "extend",
"FieldName": "newFieldName",
"Expression": "KQL_EXPRESSION"
}
Exemple :
{
"$type": "extend",
"FieldName": "environmentId",
"Expression": "tostring(properties.environmentId)"
}
Traduit en KQL :| extend environmentId = tostring(properties.environmentId)https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/scalarfunctions) pour les fonctions disponibles.
Join (clause)
Jointure avec une autre table/sous-requête. Traduit en opérateur KQLjoin.
{
"$type": "join",
"RightTable": {
"TableName": "string",
"Clauses": []
},
"JoinKind": "string",
"LeftColumnName": "string",
"RightColumnName": "string"
}
Types de jointure pris en charge : L’API prend en charge tous les types de jointure KQL. Pour obtenir la liste complète des types de jointure disponibles et de leur comportement, consultez la documentation de l’opérateur de jointure KQL.
Exemple (jointure de ressources Power Platform avec des informations d’environnement) :
{
"$type": "join",
"JoinKind": "leftouter",
"RightTable": {
"TableName": "PowerPlatformResources",
"Clauses": [
{
"$type": "where",
"FieldName": "type",
"Operator": "==",
"Values": ["'microsoft.powerplatform/environments'"]
},
{
"$type": "project",
"FieldList": [
"environmentId = name",
"environmentName = properties.displayName",
"environmentRegion = location",
"environmentType = properties.environmentType",
"isManagedEnvironment = properties.isManaged"
]
}
]
},
"LeftColumnName": "environmentId",
"RightColumnName": "environmentId"
}
Traduit en KQL :| join kind=leftouter (PowerPlatformResources | where type == 'microsoft.powerplatform/environments' | project environmentId = name, environmentName = properties.displayName, environmentRegion = location, environmentType = properties.environmentType, isManagedEnvironment = properties.isManaged) on $left.environmentId == $right.environmentId
Exemples de requêtes complets
Exemple : Requête de ressource Power Platform de base (modèle par défaut du Centre d’administration Power Platform)
Obtenez toutes les ressources Power Platform avec des informations d’environnement : il s’agit de la requête par défaut utilisée par le Centre d’administration Power Platform.
{
"Options": {
"Top": 1000,
"Skip": 0,
"SkipToken": ""
},
"TableName": "PowerPlatformResources",
"Clauses": [
{
"$type": "extend",
"FieldName": "joinKey",
"Expression": "tolower(tostring(properties.environmentId))"
},
{
"$type": "join",
"JoinKind": "leftouter",
"RightTable": {
"TableName": "PowerPlatformResources",
"Clauses": [
{
"$type": "where",
"FieldName": "type",
"Operator": "==",
"Values": ["'microsoft.powerplatform/environments'"]
},
{
"$type": "project",
"FieldList": [
"joinKey = tolower(name)",
"environmentName = properties.displayName",
"environmentRegion = location",
"environmentType = properties.environmentType",
"isManagedEnvironment = properties.isManaged"
]
}
]
},
"LeftColumnName": "joinKey",
"RightColumnName": "joinKey"
},
{
"$type": "where",
"FieldName": "type",
"Operator": "in~",
"Values": [
"'microsoft.powerapps/canvasapps'",
"'microsoft.powerapps/modeldrivenapps'",
"'microsoft.powerautomate/cloudflows'",
"'microsoft.copilotstudio/agents'",
"'microsoft.powerautomate/agentflows'",
"'microsoft.powerapps/codeapps'"
]
},
{
"$type": "orderby",
"FieldNamesAscDesc": {
"tostring(properties.createdAt)": "desc"
}
}
]
}
KQL équivalent :
PowerPlatformResources
| extend joinKey = tolower(tostring(properties.environmentId))
| join kind=leftouter (
PowerPlatformResources
| where type == 'microsoft.powerplatform/environments'
| project joinKey = tolower(name), environmentName = properties.displayName, environmentRegion = location, environmentType = properties.environmentType, isManagedEnvironment = properties.isManaged
) on $left.joinKey == $right.joinKey
| where type in~ ('microsoft.powerapps/canvasapps', 'microsoft.powerapps/modeldrivenapps', 'microsoft.powerautomate/cloudflows', 'microsoft.copilotstudio/agents', 'microsoft.powerautomate/agentflows', 'microsoft.powerapps/codeapps')
| order by tostring(properties.createdAt) desc
Exemple : Compter les ressources Power Platform par type et emplacement
{
"TableName": "PowerPlatformResources",
"Clauses": [
{
"$type": "summarize",
"SummarizeClauseExpression": {
"OperatorName": "count",
"OperatorFieldName": "resourceCount",
"FieldList": ["type", "location"]
}
},
{
"$type": "orderby",
"FieldNamesAscDesc": {
"resourceCount": "desc"
}
}
]
}
KQL équivalent :
PowerPlatformResources
| summarize resourceCount = count() by type, location
| sort by resourceCount desc
Exemple : requête d'applications sur canevas simples
Obtenez des applications Canvas avec un filtrage et une projection de base.
{
"TableName": "PowerPlatformResources",
"Clauses": [
{
"$type": "where",
"FieldName": "type",
"Operator": "==",
"Values": ["'microsoft.powerapps/canvasapps'"]
},
{
"$type": "project",
"FieldList": [
"name",
"location",
"properties.displayName",
"properties.createdAt",
"properties.environmentId"
]
},
{
"$type": "take",
"TakeCount": 100
}
]
}
KQL équivalent :
PowerPlatformResources
| where type == 'microsoft.powerapps/canvasapps'
| project name, location, properties.displayName, properties.createdAt, properties.environmentId
| take 100
Exemple : Filtrer les ressources par environnement et plage de dates
{
"TableName": "PowerPlatformResources",
"Clauses": [
{
"$type": "where",
"FieldName": "type",
"Operator": "==",
"Values": ["'microsoft.powerapps/canvasapps'"]
},
{
"$type": "where",
"FieldName": "properties.environmentId",
"Operator": "==",
"Values": ["your-environment-id"]
},
{
"$type": "extend",
"FieldName": "createdDate",
"Expression": "todatetime(properties.createdAt)"
},
{
"$type": "where",
"FieldName": "createdDate",
"Operator": ">=",
"Values": ["datetime(2024-01-01)"]
},
{
"$type": "project",
"FieldList": [
"name",
"properties.displayName",
"properties.createdAt",
"properties.createdBy",
"properties.ownerId"
]
},
{
"$type": "orderby",
"FieldNamesAscDesc": {
"createdDate": "desc"
}
}
]
}
Traduit en KQL :
PowerPlatformResources
| where type == 'microsoft.powerapps/canvasapps'
| where properties.environmentId == "your-environment-id"
| extend createdDate = todatetime(properties.createdAt)
| where createdDate >= datetime(2024-01-01)
| project name, properties.displayName, properties.createdAt, properties.createdBy, properties.ownerId
| sort by createdDate desc
Format de réponse
L’API retourne un objet ResourceQueryResult à partir du Kit de développement logiciel (SDK) Azure Resource Graph. Cet objet contient les résultats de la requête et les métadonnées concernant l’exécution de la requête.
Structure de réponse :
{
"totalRecords": 1250,
"count": 50,
"resultTruncated": 1,
"skipToken": "string_for_next_page",
"data": [
// Array of result objects based on your query
]
}