Power Platform envanter API'si

Envanter API'si, istek gövdesinde sorgu belirtimi olan bir POST isteği kullanarak Azure Kaynak Grafı'na yönelik yapılandırılmış sorgular yürütmenize olanak tanır. API, Azure Kaynak Grafı'nda yürütülmesi için sorgu belirtiminizi Kusto Sorgu Dili'ne (KQL) çevirir. Kaynaklar için envanter API'si, Power Platform API başvuru belgelerinin bir parçasıdır. Kaynak türlerinin ve sorgulanabilir alanların tam listesi için bkz. Power Platform envanter şeması başvurusu.

API uç noktası


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

İstek içeriği

İstek gövdesi aşağıdaki yapıya sahip bir sorgu belirtimi içermelidir:

Sorgu isteği yapısı

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

Properties

Mülkiyet Türü Zorunlu Description
TableName string Evet Sorgu için hedef tablo/kaynak türü (örneğin, "PowerPlatformResources")
Clauses Dizi Evet Gerçekleştirilecek işlemleri tanımlayan sorgu yan tümceleri dizisi
Options Nesne Hayır Sayfalandırma ve sonuç denetimi için Azure Kaynak Grafı sorgu seçenekleri

Sorgu seçenekleri

Options nesnesi, sayfalandırma ve sonuç denetimi için Azure Resource Graph sorgu parametrelerini destekler. Daha fazla bilgi edinmek için belgelere bakınResourceQueryRequestOptions.

Desteklenen sorgu yan tümceleri

API, çok biçimli JSON serileştirmesi aracılığıyla bu bölümde vurgulanan yan tümce türlerini destekler. Her madde türü, KQL referansında belgelendiği gibi KQL işleçlerine karşılık gelir.

WHERE yan tümcesi

Verileri alan koşullarına göre filtreler. KQL where işleçine dönüştürülür.

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

Desteklenen işleçler: API tüm standart KQL karşılaştırmasını ve dize işleçlerini destekler. Kullanılabilir işleçlerin tam listesi için KQL dize işleçleri ve sayısal işleçler belgelerine bakın.

Example:

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

KQL'ye çevirir:| where type in~ ('microsoft.powerapps/canvasapps', 'microsoft.copilotstudio/agents')

Proje maddesi

Sonuçlardan belirli alanları seçer. KQL project işleçine dönüştürülür.

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

Example:

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

KQL'ye çevirir:| project name, properties.displayName, environmentId = tostring(properties.environmentId), createdDate = properties.createdAt

Take yan tümcesi

Döndürülen sonuç sayısını sınırlar. KQL take işleçine dönüştürülür.

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

KQL'ye çevirir:| take 50

Order by yan tümcesi

Sonuçları belirtilen alanlara göre sıralar. KQL sort işleçine dönüştürülür.


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

Example:

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

KQL'ye çevirir:| sort by tostring(properties.createdAt) desc, properties.displayName asc

Belirgin cümle

Belirtilen alanlar için benzersiz değerler döndürür. KQL distinct işleçine dönüştürülür.


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

KQL'ye çevirir:| distinct field1, field2

Count yan tümcesi

Eşleşen kayıtların sayısını döndürür. KQL count işleçine dönüştürülür.

{
  "$type": "count"
}

KQL'ye çevirir:| count

Özetle madde

Count veya argmax işlemlerini kullanarak verileri toplar. KQL summarize işleçine dönüştürülür.

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

Desteklenen işleçler:

  • count count() → - Belirtilen alanlara göre gruplandırılmış kayıtları sayma.
  • argmax arg_max() → - Belirtilen alanda en yüksek değere sahip kayıtları alın.

Sayı örneği:

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

KQL'ye çevirir:| summarize resourceCount = count() by resourceGroup, type

ArgMax örneği:

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

KQL'ye çevirir:| summarize arg_max(createdTime, *) by resourceGroup

Extend yan tümcesi

Hesaplanan sütunları sonuçlara ekler. KQL extend işleçine dönüştürülür.

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

Example:

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

KQL'ye çevirir:| extend environmentId = tostring(properties.environmentId)https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/scalarfunctions) kullanılabilir işlevler için.

Join yan tümcesi

Başka bir tablo/alt sorgu ile birleşir. KQL join işleçine dönüştürülür.


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

Desteklenen birleştirme türleri: API tüm KQL birleştirme türlerini destekler. Kullanılabilir birleştirme türlerinin ve davranışlarının tam listesi için KQL birleştirme işleci belgelerine bakın.

Örnek (Power Platform kaynaklarını ortam bilgileriyle birleştirme):

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

KQL'ye çevirir:| 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

Sorgu örneklerini tamamlama

Örnek: Temel Power Platform kaynak sorgusu (Power Platform yönetim merkezi varsayılan düzeni)

Ortam bilgileriyle tüm Power Platform kaynaklarını alın; bu, Power Platform yönetim merkezi tarafından kullanılan varsayılan sorgudur.

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

Eşdeğer 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

Örnek: Power Platform kaynaklarını türe ve konuma göre sayma

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

Eşdeğer KQL:

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

Örnek: Basit tuval uygulamaları sorgusu

Temel filtreleme ve projeksiyon ile tuval tabanlı uygulamalara erişin.

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

Eşdeğer KQL:

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

Örnek: Kaynakları ortama ve tarih aralığına göre filtreleme

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

KQL'ye çevirir:

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

Yanıt biçimi

API, Azure Resource Graph SDK'sından bir ResourceQueryResult nesnesi döndürür. Bu nesne, sorgunun yürütülmesiyle ilgili sorgu sonuçlarını ve meta verileri içerir.

Yanıt yapısı:

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