Dela via


Inventerings-API för Power Platform

Med inventerings-API:et kan du köra strukturerade frågor mot Azure Resource Graph med hjälp av en POST-begäran med en frågespecifikation i begärandetexten. API:et översätter din frågespecifikation till Kusto Query Language (KQL) för körning mot Azure Resource Graph. Inventerings-API:et för resurser är en del av referensdokumentationen för Power Platform API. En fullständig lista över resurstyper och frågebara fält finns i Power Platform-inventeringsschemareferens.

API-slutpunkt


POST {PowerPlatformAPI url}/resourcequery/resources/query?api-version=2024-10-01

begäranens innehåll

Begärandetexten måste innehålla en frågespecifikation med följande struktur:

Frågebegärandestruktur

{
  "TableName": "string",
  "Clauses": [
    {
      "$type": "clause_type",
      // clause-specific properties
    }
  ],
  "Options": {
    "Top": 100,
    "Skip": 0,
    "SkipToken": "string"
  }
}

Egenskaper

Fastighet Typ Krävs Description
TableName snöre Yes Måltabellen/resurstypen som ska frågas (dvs. "PowerPlatformResources")
Clauses matris Yes Matris med frågesatser som definierar de åtgärder som ska utföras
Options objekt Nej Azure Resource Graph frågealternativ för sidnumrering och resultatkontroll

Frågealternativ

objektet Options stöder Azure Resource Graph frågeparametrar för sidnumrering och resultatkontroll. Mer ResourceQueryRequestOptions information finns i dokumentationen .

Stödda frågeklasuler

API:et stöder de satstyper som markeras i det här avsnittet via polymorf JSON-serialisering. Varje satstyp motsvarar KQL-operatorer enligt beskrivningen i KQL-referensen:

WHERE-villkor

Filtrerar data baserat på fältvillkor. Översätts till KQL-operatornwhere.

{
  "$type": "where",
  "FieldName": "string",
  "Operator": "string",
  "Values": ["string1", "string2"]
}

Operatorer som stöds: API:et stöder alla KQL-standardjämförelse- och strängoperatorer. En fullständig lista över tillgängliga operatorer finns i dokumentationen om KQL-strängoperatorer och numeriska operatorer .

Example:

{
  "$type": "where",
  "FieldName": "type",
  "Operator": "in~",
  "Values": ["'microsoft.powerapps/canvasapps'", "'microsoft.copilotstudio/agents'"]
}

Översätts till KQL:| where type in~ ('microsoft.powerapps/canvasapps', 'microsoft.copilotstudio/agents')

Projektklausul

Väljer specifika fält i resultatet. Översätts till KQL-operatornproject.

{
  "$type": "project",
  "FieldList": ["field1", "field2", "field3"]
}

Example:

{
  "$type": "project",
  "FieldList": [
    "name", 
    "properties.displayName", 
    "environmentId = tostring(properties.environmentId)",
    "createdDate = properties.createdAt"
  ]
}

Översätts till KQL:| project name, properties.displayName, environmentId = tostring(properties.environmentId), createdDate = properties.createdAt

Take-klausul

Begränsar antalet returnerade resultat. Översätts till KQL-operatorntake.

{
  "$type": "take",
  "TakeCount": 50
}

Översätts till KQL:| take 50

Order by-klausul

Sorterar resultat efter angivna fält. Översätts till KQL-operatornsort.


{
  "$type": "orderby",
  "FieldNamesAscDesc": {
    "field1": "asc",
    "field2": "desc"
  }
}

Example:

{
  "$type": "orderby",
  "FieldNamesAscDesc": {
    "tostring(properties.createdAt)": "desc",
    "properties.displayName": "asc"
  }
}

Översätts till KQL:| sort by tostring(properties.createdAt) desc, properties.displayName asc

Distinkt klausul

Returnerar unika värden för angivna fält. Översätts till KQL-operatorndistinct.


{
  "$type": "distinct",
  "FieldList": ["field1", "field2"]
}

Översätts till KQL:| distinct field1, field2

Räkningsklausul

Returnerar antalet matchande poster. Översätts till KQL-operatorncount.

{
  "$type": "count"
}

Översätts till KQL:| count

Sammanfatta klausul

Aggregerar data med hjälp av antal eller argmax-åtgärder. Översätts till KQL-operatornsummarize.

{
  "$type": "summarize",
  "SummarizeClauseExpression": {
    "OperatorName": "count|argmax",
    "OperatorFieldName": "string",
    "FieldList": ["field1", "field2"]
  }
}

Operatorer som stöds:

  • count count() → Räkna de poster som är grupperade efter angivna fält.
  • argmaxarg_max() – Hämta poster med maximalt värde i det angivna fältet.

Exempel på antal:

{
  "$type": "summarize",
  "SummarizeClauseExpression": {
    "OperatorName": "count",
    "OperatorFieldName": "resourceCount",
    "FieldList": ["resourceGroup", "type"]
  }
}

Översätts till KQL:| summarize resourceCount = count() by resourceGroup, type

ArgMax-exempel:

{
  "$type": "summarize",
  "SummarizeClauseExpression": {
    "OperatorName": "argmax",
    "OperatorFieldName": "createdTime",
    "FieldList": ["resourceGroup"]
  }
}

Översätts till KQL:| summarize arg_max(createdTime, *) by resourceGroup

Utökasats

Lägger till beräknade kolumner i resultatet. Översätts till KQL-operatornextend.

{
  "$type": "extend",
  "FieldName": "newFieldName",
  "Expression": "KQL_EXPRESSION"
}

Example:

{
  "$type": "extend",
  "FieldName": "environmentId",
  "Expression": "tostring(properties.environmentId)"
}

Översätts till KQL:| extend environmentId = tostring(properties.environmentId)https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/scalarfunctions) för tillgängliga funktioner.

Kopplingssats

Ansluter till en annan tabell/underfråga. Översätts till KQL-operatornjoin.


{
  "$type": "join",
  "RightTable": {
    "TableName": "string",
    "Clauses": []
  },
  "JoinKind": "string",
    "LeftColumnName": "string",
  "RightColumnName": "string"
}

Kopplingstyper som stöds: API:et stöder alla KQL-kopplingstyper. En fullständig lista över tillgängliga kopplingstyper och deras beteende finns i dokumentationen om KQL-kopplingsoperatorn.

Exempel (koppla samman Power Platform-resurser med miljöinformation):

{
  "$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"
}

Översätts till 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

Slutför frågeexempel

Exempel: Grundläggande Power Platform-resursfråga (standardmönster för Power Platform-administrationscenter)

Hämta alla Power Platform-resurser med miljöinformation – det här är standardfrågan som används av administrationscentret för 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"
      }
    }
  ]
}

Motsvarande 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')
| order by tostring(properties.createdAt) desc

Exempel: Räkna Power Platform-resurser efter typ och plats

{
  "TableName": "PowerPlatformResources",
  "Clauses": [
    {
      "$type": "summarize",
      "SummarizeClauseExpression": {
        "OperatorName": "count",
        "OperatorFieldName": "resourceCount",
        "FieldList": ["type", "location"]
      }
    },
    {
      "$type": "orderby",
      "FieldNamesAscDesc": {
        "resourceCount": "desc"
      }
    }
  ]
}

Motsvarande KQL:

PowerPlatformResources
| summarize resourceCount = count() by type, location
| sort by resourceCount desc

Exempel: Enkla canvasapp-frågor

Hämta canvas-appar med grundläggande filtrering och framställning.

{
  "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
    }
  ]
}

Motsvarande KQL:

PowerPlatformResources
| where type == 'microsoft.powerapps/canvasapps'
| project name, location, properties.displayName, properties.createdAt, properties.environmentId
| take 100

Exempel: Filtrera resurser efter miljö och datumintervall

{
  "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"
      }
    }
  ]
}

Översätts till 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

Svarsformat

API:et returnerar ett ResourceQueryResult-objekt från Azure Resource Graph SDK. Det här objektet innehåller om frågeresultat och metadata om utförandet av frågan.

Svarsstruktur:

{
  "totalRecords": 1250,
  "count": 50,
  "resultTruncated": 1,
  "skipToken": "string_for_next_page",
  "data": [
    // Array of result objects based on your query
  ]
}