Power Platform इन्वेंट्री API

इन्वेंट्री एपीआई आपको अनुरोध मुख्य भाग में क्वेरी विनिर्देश के साथ POST अनुरोध का उपयोग करके Azure Resource Graph के खिलाफ संरचित क्वेरीज़ निष्पादित करने की अनुमति देता है. एपीआई आपके क्वेरी विनिर्देश को Azure Resource Graph के खिलाफ निष्पादन के लिए Kusto क्वेरी लैंग्वेज (KQL) में अनुवाद करता है। संसाधनों के लिए इन्वेंट्री एपीआई Power Platform API संदर्भ दस्तावेज़ीकरण का हिस्सा है। संसाधन प्रकारों और क्वेरी करने योग्य फ़ील्ड की पूरी सूची के लिए, Power Platform इन्वेंट्री स्कीमा संदर्भ देखें.

प्रमाणीकरण

इन्वेंट्री एपीआई वर्तमान में केवल प्रत्यायोजित उपयोगकर्ता प्रमाणीकरण का समर्थन करता है। API को कॉल करने से पहले साइन-इन उपयोगकर्ता के लिए एक वाहक टोकन प्राप्त करें।

महत्वपूर्ण

एपीआई किसी सेवा प्रिंसिपल या प्रबंधित पहचान के माध्यम से केवल-ऐप-प्रमाणीकरण का समर्थन नहीं करता है। इन पहचानों का उपयोग करने वाले अनुरोध HTTP 403 निषिद्ध लौटाते हैं।

टोकन सेटअप निर्देशों के लिए, प्रमाणीकरण देखें और एक प्रत्यायोजित उपयोगकर्ता प्रवाह का उपयोग करें। उस आलेख में वर्णित सेवा प्रिंसिपल प्रवाह इन्वेंट्री API पर लागू नहीं होता है।

Power Platform CLI (पूर्वावलोकन) का उपयोग करें

आप पूर्वावलोकन pac resource-query query-resources आदेश का उपयोग करके किसी टर्मिनल से माल संसाधन क्वेरीज़ चला सकते हैं। कमांड JSON क्वेरी अनुरोध मुख्य भाग को सीधे या किसी फ़ाइल से स्वीकार करता है।

एपीआई समापन बिंदु


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

अनुरोध निकाय

अनुरोध मुख्य भाग में निम्न संरचना के साथ एक क्वेरी विनिर्देश होना चाहिए:

क्वेरी अनुरोध संरचना

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

गुण

प्रॉपर्टी प्रकार आवश्यक विवरण
TableName स्ट्रिंग हां क्वेरी करने के लिए लक्ष्य तालिका/संसाधन प्रकार (यानी, "PowerPlatformResources")
Clauses सरणी हां क्वेरी क्लॉज की सरणी जो निष्पादित करने के लिए संचालन को परिभाषित करती है
Options वस्तु नहीं Azure Resource Graph क्वेरी विकल्प पृष्ठांकन और परिणाम नियंत्रण के लिए

क्वेरी विकल्प

Options ऑब्जेक्ट पृष्ठांकन और परिणाम नियंत्रण के लिए Azure Resource Graph क्वेरी मापदंडों का समर्थन करता है। अधिक जानने के लिए दस्तावेज़ देखेंResourceQueryRequestOptions।

समर्थित क्वेरी खंड

एपीआई पॉलीमॉर्फिक JSON क्रमांकन के माध्यम से इस खंड में हाइलाइट किए गए खंड प्रकारों का समर्थन करता है। प्रत्येक खंड प्रकार KQL ऑपरेटरों से मेल खाता है जैसा कि KQL संदर्भ में प्रलेखित है:

जहां खंड

फ़ील्ड स्थितियों के आधार पर डेटा फ़िल्टर करता है. KQL where ऑपरेटर को अनुवाद करता है।

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

समर्थित ऑपरेटर: एपीआई सभी मानक केक्यूएल तुलना और स्ट्रिंग ऑपरेटरों का समर्थन करता है। उपलब्ध ऑपरेटरों की पूरी सूची के लिए, KQL स्ट्रिंग ऑपरेटर और संख्यात्मक ऑपरेटरों के दस्तावेज़ीकरण देखें।

उदाहरण:

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

KQL में अनुवाद:| where type in~ ('microsoft.powerapps/canvasapps', 'microsoft.copilotstudio/agents')

परियोजना खंड

परिणामों से विशिष्ट फ़ील्ड का चयन करता है. KQL project ऑपरेटर को अनुवाद करता है।

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

उदाहरण:

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

KQL में अनुवाद:| project name, properties.displayName, environmentId = tostring(properties.environmentId), createdDate = properties.createdAt

खंड लें

लौटाए गए परिणामों की संख्या को सीमित करता है। KQL take ऑपरेटर को अनुवाद करता है।

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

KQL में अनुवाद:| take 50

खंड द्वारा आदेश

निर्दिष्ट फ़ील्ड्स द्वारा परिणामों को सॉर्ट करता है. KQL sort ऑपरेटर को अनुवाद करता है।


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

उदाहरण:

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

KQL में अनुवाद:| sort by tostring(properties.createdAt) desc, properties.displayName asc

विशिष्ट खंड

निर्दिष्ट फ़ील्ड्स के लिए अनन्य मान देता है. KQL distinct ऑपरेटर को अनुवाद करता है।


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

KQL में अनुवाद:| distinct field1, field2

गणना खंड

मिलान रिकॉर्ड की गणना देता है. KQL count ऑपरेटर को अनुवाद करता है।

{
  "$type": "count"
}

KQL में अनुवाद:| count

सारांश खंड

गिनती या argmax संचालन का उपयोग करके डेटा एकत्र करता है। KQL summarize ऑपरेटर को अनुवाद करता है।

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

समर्थित ऑपरेटर:

  • count → count() - निर्दिष्ट फ़ील्ड द्वारा समूहीकृत रिकॉर्ड की गणना करें.
  • argmax → arg_max() - निर्दिष्ट फ़ील्ड में अधिकतम मान के साथ रिकॉर्ड प्राप्त करें।

उदाहरण गिनें:

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

KQL में अनुवाद:| summarize resourceCount = count() by resourceGroup, type

ArgMax उदाहरण:

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

KQL में अनुवाद:| summarize arg_max(createdTime, *) by resourceGroup

विस्तार खंड

परिणामों में परिकलित स्तंभ जोड़ता है. KQL extend ऑपरेटर को अनुवाद करता है।

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

उदाहरण:

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

KQL में अनुवाद:| extend environmentId = tostring(properties.environmentId)https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/scalarfunctions) उपलब्ध कार्यों के लिए।

खंड में शामिल हों

किसी अन्य तालिका/उपक्वेरी के साथ जुड़ता है। KQL join ऑपरेटर को अनुवाद करता है।


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

समर्थित जुड़ने के प्रकार: एपीआई सभी केक्यूएल जॉइन प्रकारों का समर्थन करता है। उपलब्ध शामिल होने के प्रकारों और उनके व्यवहार की पूरी सूची के लिए, KQL में शामिल होने ऑपरेटर दस्तावेज़ीकरण देखें.

उदाहरण (पर्यावरण की जानकारी के साथ Power Platform संसाधनों को शामिल करना):

{
  "$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 में अनुवाद:| 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

क्वेरी उदाहरण पूर्ण करें

उदाहरण: मूल Power Platform संसाधन क्वेरी (Power Platform व्यवस्थापन केंद्र डिफ़ॉल्ट पैटर्न)

परिवेश जानकारी के साथ सभी Power Platform संसाधन प्राप्त करें—यह 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'",
        "'microsoft.powerapps/apps'"
      ]
    },
    {
      "$type": "orderby",
      "FieldNamesAscDesc": {
        "tostring(properties.createdAt)": "desc"
      }
    }
  ]
}

समतुल्य 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', 'microsoft.powerapps/apps')
| order by tostring(properties.createdAt) desc

उदाहरण: Power Platform संसाधनों को प्रकार और स्थान के आधार पर गणना करें

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

समतुल्य KQL:

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

उदाहरण: सरल कैनवास ऐप्स क्वेरी

बुनियादी फ़िल्टरिंग और प्रोजेक्शन के साथ कैनवास ऐप्स प्राप्त करें:

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

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

उदाहरण: परिवेश और दिनांक सीमा के आधार पर संसाधनों को फ़िल्टर करें

{
  "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 में अनुवाद:

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

प्रत्युत्तर प्रारूप

एपीआई, Azure Resource Graph एसडीके से ResourceQueryResult ऑब्जेक्ट लौटाता है। इस ऑब्जेक्ट में क्वेरी परिणाम और क्वेरी निष्पादन के बारे में मेटाडेटा है।

प्रतिक्रिया संरचना:

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