Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Rozhraní API inventáře umožňuje spouštět strukturované dotazy v Azure Resource Graphu pomocí požadavku POST se specifikací dotazu v textu požadavku. Rozhraní API přeloží specifikaci dotazu do dotazovacího jazyka Kusto (KQL) pro spouštění v Azure Resource Graphu. Rozhraní API inventáře pro prostředky je součástí referenční dokumentace k rozhraní API platformy Power Platform. Úplný seznam typů prostředků a dotazovatelných polí najdete v referenčních informacích ke schématu inventáře Power Platform.
Authentication
Rozhraní API pro inventář v současné době podporuje pouze delegované ověřování uživatele. Před voláním rozhraní API získejte nosný token pro přihlášeného uživatele.
Important
Rozhraní API nepodporuje ověřování pouze aplikací prostřednictvím instančního objektu nebo spravované identity. Požadavky, které používají tyto identity, vracejí stav HTTP 403 Forbidden.
Pokyny k nastavení tokenu najdete v tématu Ověřování a použití delegovaného toku uživatele. Tok instančního objektu popsaný v daném článku se nevztahuje na rozhraní API pro inventář.
Použijte Power Platform CLI (Preview verze)
Dotazy na prostředky inventáře můžete spouštět z terminálu pomocí příkazu Preview pac resource-query query-resources . Příkaz přijme text požadavku JSON přímo nebo ze souboru.
Koncový bod rozhraní API
POST {PowerPlatformAPI url}/resourcequery/resources/query?api-version=2024-10-01
Text požadavku
Tělo požadavku musí obsahovat specifikaci dotazu s následující strukturou:
Struktura požadavku dotazu
{
"TableName": "string",
"Clauses": [
{
"$type": "clause_type",
// clause-specific properties
}
],
"Options": {
"Top": 100,
"Skip": 0,
"SkipToken": "string"
}
}
Vlastnosti
| Vlastnictví | Typ | Povinné | Description |
|---|---|---|---|
TableName |
řetězec | Ano | Cílová tabulka nebo typ prostředku k dotazování (tj. "PowerPlatformResources") |
Clauses |
pole | Ano | Pole klauzulí dotazu, které definují operace, které se mají provést |
Options |
objekt | Ne | Možnosti dotazů Azure Resource Graphu pro stránkování a řízení výsledků |
Možnosti dotazu
Objekt Options podporuje parametry dotazu Azure Resource Graph pro stránkování a řízení výsledků. Další informace najdete ResourceQueryRequestOptions v dokumentaci .
Podporované klauzule dotazu
Rozhraní API podporuje typy klauzulí zvýrazněné v této části prostřednictvím polymorfní serializace JSON. Každý typ klauzule odpovídá operátorům KQL, jak je uvedeno v odkazu KQL:
Klauzule Where
Filtruje data na základě podmínek pole. Převádí se na operátor KQL where.
{
"$type": "where",
"FieldName": "string",
"Operator": "string",
"Values": ["string1", "string2"]
}
Podporované operátory: Rozhraní API podporuje všechny standardní porovnávací a řetězcové operátory KQL. Úplný seznam dostupných operátorů najdete v dokumentaci k řetězcovým operátorům KQL a číselným operátorům .
Příklad:
{
"$type": "where",
"FieldName": "type",
"Operator": "in~",
"Values": ["'microsoft.powerapps/canvasapps'", "'microsoft.copilotstudio/agents'"]
}
Překládá se na KQL:| where type in~ ('microsoft.powerapps/canvasapps', 'microsoft.copilotstudio/agents')
Klauzule Projectu
Vybere z výsledků konkrétní pole. Převádí se na operátor KQL project.
{
"$type": "project",
"FieldList": ["field1", "field2", "field3"]
}
Příklad:
{
"$type": "project",
"FieldList": [
"name",
"properties.displayName",
"environmentId = tostring(properties.environmentId)",
"createdDate = properties.createdAt"
]
}
Překládá se na KQL:| project name, properties.displayName, environmentId = tostring(properties.environmentId), createdDate = properties.createdAt
Klauzule Take
Omezí počet vrácených výsledků. Převádí se na operátor KQL take.
{
"$type": "take",
"TakeCount": 50
}
Překládá se na KQL:| take 50
Klauzule Order by
Seřadí výsledky podle zadaných polí. Převádí se na operátor KQL sort.
{
"$type": "orderby",
"FieldNamesAscDesc": {
"field1": "asc",
"field2": "desc"
}
}
Příklad:
{
"$type": "orderby",
"FieldNamesAscDesc": {
"tostring(properties.createdAt)": "desc",
"properties.displayName": "asc"
}
}
Překládá se na KQL:| sort by tostring(properties.createdAt) desc, properties.displayName asc
Jedinečná klauzule
Vrátí jedinečné hodnoty pro zadaná pole. Převádí se na operátor KQL distinct.
{
"$type": "distinct",
"FieldList": ["field1", "field2"]
}
Překládá se na KQL:| distinct field1, field2
Počítací klauzule
Vrátí počet odpovídajících záznamů. Převádí se na operátor KQL count.
{
"$type": "count"
}
Překládá se na KQL:| count
Klauzule Summarize
Agreguje data pomocí operací count nebo argmax. Převádí se na operátor KQL summarize.
{
"$type": "summarize",
"SummarizeClauseExpression": {
"OperatorName": "count|argmax",
"OperatorFieldName": "string",
"FieldList": ["field1", "field2"]
}
}
Podporované operátory:
-
countcount()→ – Počet záznamů seskupených podle zadaných polí -
argmaxarg_max()→ – Získání záznamů s maximální hodnotou v zadaném poli
Příklad počítání:
{
"$type": "summarize",
"SummarizeClauseExpression": {
"OperatorName": "count",
"OperatorFieldName": "resourceCount",
"FieldList": ["resourceGroup", "type"]
}
}
Překládá se na KQL:| summarize resourceCount = count() by resourceGroup, type
Příklad ArgMax:
{
"$type": "summarize",
"SummarizeClauseExpression": {
"OperatorName": "argmax",
"OperatorFieldName": "createdTime",
"FieldList": ["resourceGroup"]
}
}
Překládá se na KQL:| summarize arg_max(createdTime, *) by resourceGroup
Rozšířit klauzuli
Přidá do výsledků vypočítané sloupce. Převádí se na operátor KQL extend.
{
"$type": "extend",
"FieldName": "newFieldName",
"Expression": "KQL_EXPRESSION"
}
Příklad:
{
"$type": "extend",
"FieldName": "environmentId",
"Expression": "tostring(properties.environmentId)"
}
Překládá se na KQL:| extend environmentId = tostring(properties.environmentId)https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/scalarfunctions) pro dostupné funkce.
Klauzule Join
Spojí s jinou tabulkou nebo poddotazem. Převádí se na operátor KQL join.
{
"$type": "join",
"RightTable": {
"TableName": "string",
"Clauses": []
},
"JoinKind": "string",
"LeftColumnName": "string",
"RightColumnName": "string"
}
Podporované druhy spojení: Rozhraní API podporuje všechny druhy spojení KQL. Úplný seznam dostupných typů spojení a jejich chování najdete v dokumentaci operátora připojení KQL.
Příklad (připojování prostředků Power Platform s informacemi o prostředí):
{
"$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"
}
Překládá se na 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
Kompletní příklady dotazů
Příklad: Základní dotaz na prostředky Power Platform (výchozí vzor Centra pro správu Power Platform)
Získejte všechny prostředky Power Platform s informacemi o prostředí – toto je výchozí dotaz používaný centrem pro správu 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'",
"'microsoft.powerapps/apps'"
]
},
{
"$type": "orderby",
"FieldNamesAscDesc": {
"tostring(properties.createdAt)": "desc"
}
}
]
}
Ekvivalentní KQL:
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', 'microsoft.powerapps/apps')
| order by tostring(properties.createdAt) desc
Příklad: Počítejte prostředky Power Platform podle typu a umístění
{
"TableName": "PowerPlatformResources",
"Clauses": [
{
"$type": "summarize",
"SummarizeClauseExpression": {
"OperatorName": "count",
"OperatorFieldName": "resourceCount",
"FieldList": ["type", "location"]
}
},
{
"$type": "orderby",
"FieldNamesAscDesc": {
"resourceCount": "desc"
}
}
]
}
Ekvivalentní KQL:
PowerPlatformResources
| summarize resourceCount = count() by type, location
| sort by resourceCount desc
Příklad: Jednoduchý dotaz v aplikaci plátna
Získejte plátěné aplikace se základním filtrováním a zobrazením:
{
"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
}
]
}
Ekvivalentní KQL:
PowerPlatformResources
| where type == 'microsoft.powerapps/canvasapps'
| project name, location, properties.displayName, properties.createdAt, properties.environmentId
| take 100
Příklad: Filtrování prostředků podle prostředí a časového období
{
"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"
}
}
]
}
Překládá se na 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
Formát odpovědi
Rozhraní API vrátí objekt ResourceQueryResult ze sady SDK Azure Resource Graph. Tento objekt obsahuje výsledky dotazu a metadata o provádění dotazu.
Struktura odpovědi:
{
"totalRecords": 1250,
"count": 50,
"resultTruncated": 1,
"skipToken": "string_for_next_page",
"data": [
// Array of result objects based on your query
]
}