API za inventar Power Platform

Inventory API omogoča izvajanje strukturiranih poizvedb nad Azure Resource Graph z uporabo POST zahteve s specifikacijo poizvedbe v telesu zahteve. API prevede vašo specifikacijo poizvedbe v Kusto Query Language (KQL) za izvajanje nad Azure Resource Graph. Inventarni API za vire je del referenčne dokumentacije Power Platform API. Za popoln seznam vrst virov in polj, ki jih je mogoče poizvedovati, glejte referenco sheme inventarja Power Platform.

Končna točka API-ja


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

Telo zahteve

Telo zahteve mora vsebovati specifikacijo poizvedbe z naslednjo strukturo:

Struktura zahteve za poizvedbo

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

Lastnosti

Lastnost Tip Zahtevano Description
TableName niz Da Ciljna tabela/vrsta vira za poizvedbo (npr. »PowerPlatformResources«)
Clauses polje Da Polje stavkov poizvedbe, ki določajo operacije, ki jih je treba izvesti
Options predmet Ne Azure Resource Graph možnosti poizvedb za paginacijo in nadzor rezultatov

Možnosti poizvedbe

Objekt Options podpira Azure Resource Graph parametre poizvedb za paginacijo in nadzor rezultatov. Če želite izvedeti več, glejte ResourceQueryRequestOptions dokumentacijo .

Podprte poizvedovalne klavzule

API podpira vrste stavkov, ki so poudarjene v tem razdelku s polimorfno serijalizacijo JSON. Vsaka vrsta klavzule ustreza operatorjem KQL, kot je dokumentirano v sklicu na KQL:

Kjer je klavzula

Filtrira podatke glede na pogoje na terenu. Prevaja se v operaterja KQLwhere.

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

Podprti operaterji: API podpira vse standardne primerjave KQL in operatorje nizov. Za celoten seznam razpoložljivih operatorjev glejte dokumentacijo o operatorjih nizov KQL in numeričnih operatorjih .

Primer:

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

Prevaja v KQL:| where type in~ ('microsoft.powerapps/canvasapps', 'microsoft.copilotstudio/agents')

Klavzula projekta

Izbere določena polja iz rezultatov. Prevaja se v operaterja KQLproject.

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

Primer:

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

Prevaja v KQL:| project name, properties.displayName, environmentId = tostring(properties.environmentId), createdDate = properties.createdAt

Take klavzula

Omeji število vrnjenih rezultatov. Prevaja se v operaterja KQLtake.

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

Prevaja v KQL:| take 50

Vrstni red po klavzuli

Razvrsti rezultate po določenih poljih. Prevaja se v operaterja KQLsort.


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

Primer:

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

Prevaja v KQL:| sort by tostring(properties.createdAt) desc, properties.displayName asc

Posebna klavzula

Vrne edinstvene vrednosti za določena polja. Prevaja se v operaterja KQLdistinct.


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

Prevaja v KQL:| distinct field1, field2

Klavzula o štetju

Vrne število ujemajočih se zapisov. Prevaja se v operaterja KQLcount.

{
  "$type": "count"
}

Prevaja v KQL:| count

Povzetek klavzule

Združuje podatke z operacijami count ali argmax. Prevaja se v operaterja KQLsummarize.

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

Podprti operaterji:

  • countcount() - Štetje zapisov, združenih po določenih poljih.
  • argmaxarg_max() - Pridobi zapise z največjo vrednostjo v določenem polju.

Primer štetja:

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

Prevaja v KQL:| summarize resourceCount = count() by resourceGroup, type

Primer ArgMax:

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

Prevaja v KQL:| summarize arg_max(createdTime, *) by resourceGroup

Razširi klavzulo

Rezultatom doda izračunane stolpce. Prevaja se v operaterja KQLextend.

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

Primer:

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

Prevaja v KQL:| extend environmentId = tostring(properties.environmentId)https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/scalarfunctions) za razpoložljive funkcije.

Spojna klavzula

Pridruži se z drugo tabelo/podpoizvedbo. Prevaja se v operaterja KQLjoin.


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

Podprte vrste združevanja: API podpira vse vrste pridružitve KQL. Za celoten seznam razpoložljivih vrst združevanja in njihovega vedenja glejte dokumentacijo operatorja pridružitve KQL.

Primer (združevanje virov Power Platform z informacijami o okolju):

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

Prevaja v 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

Popolni primeri poizvedb

Primer: Osnovna poizvedba virov Power Platform (privzeti vzorec Power Platform administratorskega centra)

Pridobite vse vire Power Platform z informacijami o okolju – to je privzeta poizvedba v Power Platform administratorskem centru.

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

Enakovreden 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

Primer: Preštejte vire Power Platform po vrsti in lokaciji

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

Enakovreden KQL:

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

Primer: Preprosta poizvedba za canvas aplikacije

Pridobite aplikacije delovnega območja z osnovnim filtriranjem in projekcijo:

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

Enakovreden KQL:

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

Primer: Filtrirajte vire po okolju in časovnem obdobju

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

Prevaja v 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

Oblika odgovora

API vrne objekt ResourceQueryResult iz Azure Resource Graph SDK. Ta predmet vsebuje rezultate poizvedbe in metapodatke o izvedbi poizvedbe.

Struktura odzivov:

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