Power Platformi varude API

Inventari API võimaldab käivitada struktureeritud päringuid Azure Resource Graph'i vastu, kasutades POST-päringut, mille päringu spetsifikatsioon on päringu kehas olemas. API tõlgib sinu päringuspetsifikatsiooni Kusto päringukeelde (KQL) et seda Azure Resource Graph vastu täita. Inventory API for Resources on osa Power Platform API viitedokumentatsioonist. Täieliku ressursitüüpide ja päritavate väljade nimekirja leiate Power Platformi inventariskeemi viitest.

API lõpp-punkt


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

Taotluse kehatekst

Taotluse keha peab sisaldama järgmise struktuuriga päringu spetsifikatsiooni.

Päringutaotluse struktuur

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

Atribuudid

Atribuut Tüüp Nõutav Kirjeldus
TableName string Jah Päringu sihttabeli/ressursi tüüp (nt "PowerPlatformResources")
Clauses massiiv Jah Päringuklauslite massiiv, mis määratleb tehtavad toimingud
Options ese Nr Azure Resource Graph päringuvalikud lehekülgede ja tulemuste kontrolli jaoks

Päringu suvandid

Options objekt toetab Azure Resource Graph päringuparameetreid lehekülgede ja tulemuste kontrolli jaoks. Lisateabe saamiseks vaadake ResourceQueryRequestOptions dokumentatsiooni.

Toetatud päringuklauslid

API toetab selles jaotises esile tõstetud klauslitüüpe polümorfse JSON-i serialiseerimise kaudu. Iga klauslitüüp vastab KQL-i operaatoritele, nagu on dokumenteeritud KQL-i viites:

Kus klausel

Filtreerib andmeid väljatingimuste alusel. Tõlgitakse KQL-i where operaatoriks.

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

Toetatud operaatorid: API toetab kõiki standardseid KQL-i võrdlus- ja stringioperaatoreid. Saadaolevate tehtemärkide täieliku loendi leiate KQL-i stringitehtemärkide ja numbriliste tehtemärkide dokumentatsioonist.

Näide:

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

Tõlgitakse KQL-i:| where type in~ ('microsoft.powerapps/canvasapps', 'microsoft.copilotstudio/agents')

Projekti klausel

Valib tulemitest konkreetsed väljad. Tõlgitakse KQL-i project operaatoriks.

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

Näide:

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

Tõlgitakse KQL-i:| project name, properties.displayName, environmentId = tostring(properties.environmentId), createdDate = properties.createdAt

Võtame klausli

Piirab tagastatavate tulemuste arvu. Tõlgitakse KQL-i take operaatoriks.

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

Tõlgitakse KQL-i:| take 50

Järjekord klausli järgi

Sordib tulemid määratud väljade järgi. Tõlgitakse KQL-i sort operaatoriks.


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

Näide:

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

Tõlgitakse KQL-i:| sort by tostring(properties.createdAt) desc, properties.displayName asc

Eristuv klausel

Tagastab määratud väljade kordumatud väärtused. Tõlgitakse KQL-i distinct operaatoriks.


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

Tõlgitakse KQL-i:| distinct field1, field2

Loendusklausel

Tagastab vastavate kirjete arvu. Tõlgitakse KQL-i count operaatoriks.

{
  "$type": "count"
}

Tõlgitakse KQL-i:| count

Kokkuvõte klausel

Koondab andmed loendus- või argmax-toimingute abil. Tõlgitakse KQL-i summarize operaatoriks.

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

Toetatud operaatorid:

  • countcount() – loendage kirjeid, mis on rühmitatud määratud väljade järgi.
  • argmaxarg_max() - Hankige määratud väljal maksimaalse väärtusega kirjed.

Loenda näide:

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

Tõlgitakse KQL-i:| summarize resourceCount = count() by resourceGroup, type

ArgMaxi näide:

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

Tõlgitakse KQL-i:| summarize arg_max(createdTime, *) by resourceGroup

Laiendamise klausel

Lisab tulemitele arvutatud veerud. Tõlgitakse KQL-i extend operaatoriks.

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

Näide:

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

Tõlgitakse KQL-i:| extend environmentId = tostring(properties.environmentId)https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/scalarfunctions) saadaolevate funktsioonide jaoks.

Liitumisklausel

Ühendab mõne muu tabeli/alampäringuga. Tõlgitakse KQL-i join operaatoriks.


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

Toetatud liitumistüübid: API toetab kõiki KQL-i liitumisliike. Saadaolevate ühendustüüpide ja nende käitumise täieliku loendi leiate KQL-i liitumisoperaatori dokumentatsioonist.

Näide (Power Platformi ressursside ühendamine keskkonnateabega):

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

Tõlgitakse KQL-i:| 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

Täielikud päringunäited

Näide: Põhiline Power Platformi ressursipäring (Power Platformi administraatorikeskuse vaikemuster)

Hangi kõik Power Platformi ressursid koos keskkonnainfoga—see on vaikimisi päring, mida kasutab Power Platformi halduskeskus.

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

Samaväärne 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

Näide: Loenda Power Platformi ressursse tüübi ja asukoha järgi

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

Samaväärne KQL:

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

Näide: Lihtne lõuendi rakenduste päring

Hankige lõuendirakendused koos põhilise filtreerimise ja projektsiooniga:

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

Samaväärne KQL:

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

Näide: Filtreeri ressursse keskkonna ja kuupäevavahemiku järgi

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

Tõlgitakse KQL-i:

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

Vastuse vorm

API tagastab ResourceQueryResult objekti Azure Resource Graph SDK-st. See objekt sisaldab päringu tulemusi ja metaandmeid päringu käivitamise kohta.

Vastuse struktuur:

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