Power Platform inbentarioaren APIa

Inbentarioaren APIak Azure Resource Graph-en kontsulta egituratuak exekutatzeko aukera ematen du, eskaeraren gorputzean kontsulta zehaztapen bat duen POST eskaera erabiliz. APIak zure kontsulta-zehaztapena Kusto Query Language (KQL) bihurtzen du Azure Resource Graph aurka exekutatzeko. Baliabideen inbentarioko APIa Power Platform APIaren erreferentziazko dokumentazioaren parte da. Baliabide moten eta kontsulta daitezkeen eremuen zerrenda osoa lortzeko, ikus Power Platform-en inbentario-eskemaren erreferentzia.

Autentifikazioa

Inventario APIak une honetan erabiltzailearen autentifikazio delegatua soilik onartzen du. Lortu erabiltzaile saioa hasi duen erabiltzailearentzat bearer token bat APIra deitu aurretik.

Garrantzitsua

APIak ez du aplikazio soilik autentifikazioa onartzen zerbitzu nagusi edo nortasun kudeatuaren bidez. Identitate hauek erabiltzen dituzten eskaerek HTTP 403 Forbidden itzultzen dute.

Token ezarpen argibideak ikusteko, ikusi Autentifikazioa eta erabili erabiltzaile delegatu baten fluxua. Artikulu horretan deskribatutako zerbitzu nagusiaren fluxua ez da aplikatzen inbentario APIra.

Power Platform CLI erabili (aurrebista)

Terminal batetik inbentario baliabideen kontsultak egin ditzakezu aurreikuspen pac resource-query query-resources komandoa erabiliz. Komandoak JSON kontsulta eskaeraren gorputza zuzenean edo fitxategi batetik onartzen du.

APIaren amaiera-puntua


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

Eskaeraren gorputza

Eskaeraren gorputzak kontsulta-zehaztapen bat eduki behar du, egitura honekin:

Kontsulta-eskaeraren egitura

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

Propietateak

Propietatea Mota Beharrezkoa Deskribapenak
TableName kate Bai Kontsultatu beharreko helburuko taula/baliabide mota (adib. "PowerPlatformResources")
Clauses matrize Bai Egin beharreko eragiketak definitzen dituzten kontsulta-klausulen matrizea
Options objektua Ez Azure Resource Graph kontsulta-aukerak paginaziorako eta emaitzak kontrolatzeko

Kontsulta-aukerak

Options objektuak Azure Resource Graph kontsulta-parametroak onartzen ditu paginaziorako eta emaitzak kontrolerako. Ikusi ResourceQueryRequestOptions dokumentazioa gehiago jakiteko.

Onartutako kontsulta-klausulak

APIak atal honetan nabarmendutako klausula motak onartzen ditu JSON serializazio polimorfikoaren bidez. Klausula mota bakoitza KQL eragileei dagokie, KQL erreferentzian dokumentatuta dagoen bezala:

Non klausula

Datuak eremu-baldintzen arabera iragazten ditu. KQL where eragilearen itzulpena.

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

Onartutako eragileak: APIak KQL konparazio eta kate eragile estandar guztiak onartzen ditu. Erabilgarri dauden eragileen zerrenda osoa lortzeko, ikus KQL kate-eragileen eta zenbakizko eragileen dokumentazioa.

Adibidea:

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

KQLra itzultzen da:| where type in~ ('microsoft.powerapps/canvasapps', 'microsoft.copilotstudio/agents')

Proiektuaren klausula

Emaitzetako eremu zehatzak hautatzen ditu. KQL project eragilearen itzulpena.

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

Adibidea:

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

KQLra itzultzen da:| project name, properties.displayName, environmentId = tostring(properties.environmentId), createdDate = properties.createdAt

Hartu klausula

Itzulitako emaitza kopurua mugatzen du. KQL take eragilearen itzulpena.

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

KQLra itzultzen da:| take 50

Ordena klausularen arabera

Emaitzak zehaztutako eremuen arabera ordenatzen ditu. KQL sort eragilearen itzulpena.


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

Adibidea:

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

KQLra itzultzen da:| sort by tostring(properties.createdAt) desc, properties.displayName asc

Klausula bereizgarria

Zehaztutako eremuen balio esklusiboak itzultzen ditu. KQL distinct eragilearen itzulpena.


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

KQLra itzultzen da:| distinct field1, field2

Zenbaketa-klausula

Bat datozen erregistroen kopurua itzultzen du. KQL count eragilearen itzulpena.

{
  "$type": "count"
}

KQLra itzultzen da:| count

Laburbildu klausula

Datuak batzen ditu count edo argmax eragiketak erabiliz. KQL summarize eragilearen itzulpena.

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

Onartutako eragileak:

  • count → count() - Zehaztutako eremuen arabera taldekatzen diren erregistroak zenbatu.
  • argmax → arg_max() - Zehaztutako eremuan gehienezko balioa duten erregistroak lortzen ditu.

Zenbaketaren adibidea:

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

KQLra itzultzen da:| summarize resourceCount = count() by resourceGroup, type

ArgMax-en adibidea:

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

KQLra itzultzen da:| summarize arg_max(createdTime, *) by resourceGroup

Hedapen klausula

Emaitzei kalkulatutako zutabeak gehitzen dizkie. KQL extend eragilearen itzulpena.

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

Adibidea:

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

KQLra itzultzen da:| extend environmentId = tostring(properties.environmentId)https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/scalarfunctions) Erabilgarri dauden funtzioak.

Elkartze-klausula

Beste taula/azpikontsulta batekin bat egiten du. KQL join eragilearen itzulpena.


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

Onartutako elkartze-motak: APIak KQL elkartze mota guztiak onartzen ditu. Erabilgarri dauden elkartze moten eta haien portaeraren zerrenda osoa lortzeko, ikus KQL elkartze eragilearen dokumentazioa.

Adibidea (Power Platform-eko baliabideak ingurunearen informazioarekin konbinatzea):

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

KQLra itzultzen da:| 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

Kontsulta osoen adibideak

Adibidea: Power Platform-en oinarrizko baliabideen kontsulta (Power Platform-en administrazio-zentroko eredu lehenetsia)

Lortu Power Platform-eko baliabide guztiak ingurunearen informazioarekin: hau da Power Platform-en administrazio zentroak erabiltzen duen kontsulta lehenetsia.

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

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

Adibidea: Zenbatu Power Platform-eko baliabideak motaren eta kokapenaren arabera

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

KQL baliokidea:

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

Adibidea: mihise-aplikazioen kontsulta sinplea

Oinarrizko iragazkiak eta proiekzioak dituzten mihise-aplikazioak lortu:

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

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

Adibidea: iragazi baliabideak ingurunearen eta data-barrutiaren arabera

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

KQLra itzultzen da:

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

Erantzunaren formatua

APIak ResourceQueryResult objektua itzultzen du Azure Resource Graph SDK-tik. Objektu honek kontsultaren emaitzak eta kontsultaren exekuzioari buruzko metadatuak ditu.

Erantzunaren egitura:

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