Power Platform inventaris-API

Met de inventaris-API kunt u gestructureerde query's uitvoeren op Azure Resource Graph met behulp van een POST-aanvraag met een queryspecificatie in de aanvraagbody. De API vertaalt uw queryspecificatie in Kusto Query Language (KQL) voor uitvoering op basis van Azure Resource Graph. De inventaris-API voor resources maakt deel uit van de naslagdocumentatie voor de Power Platform-API. Zie de overzichtsinformatie over power platform-inventarisschema's voor een volledige lijst met resourcetypen en doorzoekbare velden.

API-eindpunt


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

aanvraaginhoud

De hoofdtekst van de aanvraag moet een queryspecificatie bevatten met de volgende structuur:

Structuur van queryaanvragen

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

Eigenschappen

Vastgoed Typ Verplicht Beschrijving
TableName touw Yes Het doeltabel/resourcetype om een query uit te voeren (bijvoorbeeld 'PowerPlatformResources')
Clauses gegevensreeks Yes Matrix van querycomponenten waarmee de bewerkingen worden gedefinieerd die moeten worden uitgevoerd
Options Voorwerp No Queryopties voor Azure Resource Graph voor paginering en resultaatbeheer

Queryopties

Het Options object ondersteunt queryparameters van Azure Resource Graph voor paginering en resultaatbeheer. Raadpleeg ResourceQueryRequestOptions de documentatie voor meer informatie.

Ondersteunde queryclausules

De API ondersteunt de componenttypen die in deze sectie zijn gemarkeerd via polymorfe JSON-serialisatie. Elk clausuletype komt overeen met KQL-operators, zoals beschreven in de KQL-verwijzing.

Where-clausule

Hiermee filtert u gegevens op basis van veldvoorwaarden. Wordt vertaald naar de KQLwhere operator.

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

Ondersteunde operators: De API ondersteunt alle standaard KQL-vergelijkings- en tekenreeksoperators. Zie de documentatie voor KQL-tekenreeksoperatoren en numerieke operators voor een volledige lijst met beschikbare operators.

Example:

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

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

Projectclausule

Selecteert specifieke velden in de resultaten. Wordt vertaald naar de KQLproject operator.

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

Example:

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

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

Neem clausule

Beperkt het aantal geretourneerde resultaten. Wordt vertaald naar de KQLtake operator.

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

Vertaalt naar KQL:| take 50

Order by-clausule

Sorteert resultaten op opgegeven velden. Wordt vertaald naar de KQLsort operator.


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

Example:

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

Vertaalt naar KQL:| sort by tostring(properties.createdAt) desc, properties.displayName asc

Afzonderlijke clausule

Retourneert unieke waarden voor opgegeven velden. Wordt vertaald naar de KQLdistinct operator.


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

Vertaalt naar KQL:| distinct field1, field2

Count-clausule

Retourneert het aantal overeenkomende records. Wordt vertaald naar de KQLcount operator.

{
  "$type": "count"
}

Vertaalt naar KQL:| count

Samenvatten clausule

Hiermee worden gegevens samengevoegd met behulp van count- of argmax-bewerkingen. Wordt vertaald naar de KQLsummarize operator.

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

Ondersteunde operators:

  • countcount() - Aantal records gegroepeerd op opgegeven velden.
  • argmax arg_max() → - Records ophalen met maximale waarde in het opgegeven veld.

Voorbeeld van tellen:

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

Vertaalt naar KQL:| summarize resourceCount = count() by resourceGroup, type

ArgMax-voorbeeld:

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

Vertaalt naar KQL:| summarize arg_max(createdTime, *) by resourceGroup

Clausule uitbreiden

Hiermee worden berekende kolommen toegevoegd aan de resultaten. Wordt vertaald naar de KQLextend operator.

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

Example:

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

Vertaalt naar KQL:| extend environmentId = tostring(properties.environmentId)https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/scalarfunctions) voor beschikbare functies.

Join-clause

Wordt samengevoegd met een andere tabel/subquery. Wordt vertaald naar de KQLjoin operator.


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

Ondersteunde jointypen: De API ondersteunt alle KQL-jointypen. Zie de documentatie van de KQL-joinoperator voor een volledige lijst met beschikbare jointypen en hun gedrag.

Voorbeeld (samenvoegen van Power Platform-resources met omgevingsgegevens):

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

Vertaalt naar 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

Voorbeelden van volledige query's

Voorbeeld: Eenvoudige Power Platform-resourcequery (standaardpatroon voor Power Platform-beheercentrum)

Haal alle Power Platform-resources op met omgevingsgegevens. Dit is de standaardquery die wordt gebruikt door het Power Platform-beheercentrum.

{
  "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-equivalent:

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

Voorbeeld: Power Platform-resources per type en locatie tellen

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

KQL-equivalent:

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

Voorbeeld: Eenvoudige query voor canvas-apps

Canvas-apps ophalen met basisfilters en projectie:

{
  "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-equivalent:

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

Voorbeeld: Resources filteren op omgeving en datumbereik

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

Vertaalt naar 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

Antwoordindeling

De API retourneert een ResourceQueryResult-object van de Azure Resource Graph SDK. Dit object bevat de queryresultaten en metagegevens over de uitvoering van de query.

Antwoordstructuur:

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