Notă
Accesul la această pagină necesită autorizare. Puteți încerca să vă conectați sau să modificați directoarele.
Accesul la această pagină necesită autorizare. Puteți încerca să modificați directoarele.
[Acest articol este documentație de prelansare și poate suferi modificări.]
API-ul Power Platform poate fi utilizat pentru a extrage diverse detalii și metadate din mediile dvs. Microsoft Power Platform cu sau fără o bază de date Microsoft Dataverse. API-ul este utilizat intern de diverși clienți disponibili astăzi, cum ar fi PowerShell.
În acest tutorial, veți afla cum să:
- Creați un flux de lucru Power Automate sau Logic Apps (Azure) sau PowerShell script care autentifică folosind API-ul Power Platform.
- Apelați punctul final Listă medii pentru a vă prelua detaliile dvs. despre mediile Microsoft Power Platform.
- Iterează prin obiectul de capacitate pentru a recupera consumul real.
- Salvați datele de consum într-un tabel pentru afișare.
Ca exemplu al acestui scenariu, un client caută să obțină un control asupra consumului de capacitate, astfel încât să poată înțelege mai bine alocarea capacității totale a entităților găzduite pe departamente. Acest lucru ajută clientul să îndeplinească unele funcții interne de contabilitate a costurilor și rambursări în funcție de cât consumă fiecare departament din capacitatea totală disponibilă. Acest client folosește Descrierea mediului pentru a apela departamentul care deține fiecare mediu.
Important
API-ul Power Platform este în previzualizare. Numele gazdei și contractele de date pot fi modificate până când punctele finale devin disponibile în general.
Configurarea conexiunii și variabilei
Utilizați următoarele detalii despre conectarea la Power Platform programatic. Puteți alege între o experiență Azure sau scripturi PowerShell.
Creați fluxul de lucru și configurați variabilele
Pentru început, în acest tutorial folosim un flux de lucru Logic Apps. Un flux Power Automate este, de asemenea, acceptabil, precum și orice alt motor de orchestrație pe care compania dvs. preferă să îl folosească pentru automatizare. Toate apelurile pentru a prelua datele folosesc API-uri RESTful, astfel încât orice instrument care acceptă REST funcționează cu acest tutorial.
Accesați portalul Azure, apoi creați o nouă aplicație logică și dați-i un nume:
După ce se termină pregătirea, editați fluxul de lucru folosind Designer și configurați un declanșator de recurență pentru a rula zilnic:
În continuare, trebuie să inițializam cinci variabile:
- SPN-Id – Acesta este ClientID principalul dvs. de serviciu. Este folosit mai târziu pentru a efectua autentificarea într-un context principal al serviciului. Dacă utilizați contextul nume de utilizator/parolă, puteți sări peste această variabilă.
- DBCapacity – Aceasta este o variabilă Float pentru capacitatea consumată a bazei de date în megaocteți.
- FileCapacity – Aceasta este o variabilă Float pentru capacitatea de fișier consumată în megaocteți.
- LogCapacity – Aceasta este o variabilă Float pentru capacitatea de jurnal consumată în megaocteți.
- SimplifiedEnvironmentArray-Init – Aceasta este o variabilă matrice pe care o populăm cu câteva proprietăți de mediu. Acest lucru simplifică drastic rezultatul final al raportului tabelului HTML.
Apoi, ne autentificăm cu Microsoft Entra și preluăm un token pentru apelarea Power Platform API. Dacă nu ați finalizat Microsoft Entra configurarea, consultați Autentificare - moștenire.
În acest tutorial, folosim un Key Vault pentru a stoca valoarea secretă a entității principale de serviciu. În acest fel, un administrator IT poate face această valoare disponibilă în siguranță pentru fluxul dvs. de lucru. Acesta este apoi populat în apelul POST către Microsoft Entra pentru a prelua simbolul.
Analizăm apoi Microsoft Entra token-ul răspuns într-un obiect tipat folosind această schemă JSON în acțiunea „Parse JSON”:
{
"properties": {
"access_token": {
"type": "string"
},
"expires_in": {
"type": "integer"
},
"ext_expires_in": {
"type": "integer"
},
"token_type": {
"type": "string"
}
},
"type": "object"
}
Preluați medii
În această secțiune, preluăm lista de mediu pe care o administrați. Acest lucru se poate face prin API și PowerShell.
Apelați punctul final Lista medii
Acum este momentul să apelăm API-ul Power Platform. Utilizați punctul final List Environments pentru a prelua toate mediile noastre și metadatele acestora, în special cu parametrul $expand pentru capacitate. Acest lucru folosește și antetul de autorizare cu simbolul purtător pe care l-am primit în secțiunea anterioară de la Microsoft Entra ID. Dacă ați folosit contextul de nume de utilizator/parolă, puteți introduce, de asemenea, acel Token purtător la acest pas.
Apoi analizăm Power Platform API-ul răspuns într-un obiect tipat folosind această schemă JSON cu acțiunea „Parse JSON”:
{
"properties": {
"value": {
"items": {
"properties": {
"description": {
"type": "string"
},
"id": {
"type": "string"
},
"location": {
"type": "string"
},
"name": {
"type": "string"
},
"properties": {
"properties": {
"addons": {
"type": "array"
},
"azureRegion": {
"type": "string"
},
"capacity": {
"items": {
"properties": {
"actualConsumption": {
"type": "number"
},
"capacityType": {
"type": "string"
},
"capacityUnit": {
"type": "string"
},
"ratedConsumption": {
"type": "number"
},
"updatedOn": {
"type": "string"
}
},
"required": [
"capacityType",
"actualConsumption",
"ratedConsumption",
"capacityUnit",
"updatedOn"
],
"type": "object"
},
"type": "array"
},
"clientUris": {
"properties": {
"admin": {
"type": "string"
},
"maker": {
"type": "string"
}
},
"type": "object"
},
"cluster": {
"properties": {
"category": {
"type": "string"
},
"number": {
"type": "string"
}
},
"type": "object"
},
"connectedGroups": {
"type": "array"
},
"createdBy": {
"properties": {
"displayName": {
"type": "string"
},
"id": {
"type": "string"
},
"type": {
"type": "string"
}
},
"type": "object"
},
"createdTime": {
"type": "string"
},
"creationType": {
"type": "string"
},
"databaseType": {
"type": "string"
},
"displayName": {
"type": "string"
},
"environmentSku": {
"type": "string"
},
"isDefault": {
"type": "boolean"
},
"linkedEnvironmentMetadata": {
"properties": {
"backgroundOperationsState": {
"type": "string"
},
"baseLanguage": {
"type": "number"
},
"createdTime": {
"type": "string"
},
"domainName": {
"type": "string"
},
"friendlyName": {
"type": "string"
},
"instanceApiUrl": {
"type": "string"
},
"instanceState": {
"type": "string"
},
"instanceUrl": {
"type": "string"
},
"platformSku": {
"type": "string"
},
"resourceId": {
"type": "string"
},
"scaleGroup": {
"type": "string"
},
"uniqueName": {
"type": "string"
},
"version": {
"type": "string"
}
},
"type": "object"
},
"protectionStatus": {
"properties": {
"keyManagedBy": {
"type": "string"
}
},
"type": "object"
},
"provisioningState": {
"type": "string"
},
"retentionDetails": {
"properties": {
"backupsAvailableFromDateTime": {
"type": "string"
},
"retentionPeriod": {
"type": "string"
}
},
"type": "object"
},
"retentionPeriod": {
"type": "string"
},
"runtimeEndpoints": {
"properties": {
"microsoft.ApiManagement": {
"type": "string"
},
"microsoft.BusinessAppPlatform": {
"type": "string"
},
"microsoft.CommonDataModel": {
"type": "string"
},
"microsoft.Flow": {
"type": "string"
},
"microsoft.PowerApps": {
"type": "string"
},
"microsoft.PowerAppsAdvisor": {
"type": "string"
}
},
"type": "object"
},
"states": {
"properties": {
"management": {
"properties": {
"id": {
"type": "string"
}
},
"type": "object"
},
"runtime": {
"properties": {
"id": {
"type": "string"
}
},
"type": "object"
}
},
"type": "object"
},
"updateCadence": {
"properties": {
"id": {
"type": "string"
}
},
"type": "object"
}
},
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"id",
"type",
"location",
"name",
"properties"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
Iterează prin obiectul Capacity
Aceasta este cea mai complexă parte a tutorialului. Aici folosim o buclă în interiorul unei bucle pentru a repeta fiecare mediu din Mediul Listă răspuns, iar fiecare mediu are o serie de detalii de capacitate pe care le repetăm și. Acest lucru ne permite să captăm informațiile necesare pentru fiecare rând de mediu din tabelul nostru de raportare de capacitate.
Pentru fiecare și analiză
Să o luăm pas cu pas. În primul rând, folosim un control For Each folosind „valoarea” rezultatului Parse-List-Response:
Apoi analizăm acest singur mediu într-un obiect tipat folosind această schemă JSON:
{
"properties": {
"description": {
"type": "string"
},
"id": {
"type": "string"
},
"location": {
"type": "string"
},
"name": {
"type": "string"
},
"properties": {
"properties": {
"addons": {
"type": "array"
},
"azureRegion": {
"type": "string"
},
"capacity": {
"items": {
"properties": {
"actualConsumption": {
"type": "number"
},
"capacityType": {
"type": "string"
},
"capacityUnit": {
"type": "string"
},
"ratedConsumption": {
"type": "number"
},
"updatedOn": {
"type": "string"
}
},
"required": [
"capacityType",
"actualConsumption",
"ratedConsumption",
"capacityUnit",
"updatedOn"
],
"type": "object"
},
"type": "array"
},
"clientUris": {
"properties": {
"admin": {
"type": "string"
},
"maker": {
"type": "string"
}
},
"type": "object"
},
"cluster": {
"properties": {
"number": {
"type": "string"
}
},
"type": "object"
},
"connectedGroups": {
"type": "array"
},
"createdBy": {
"properties": {
"displayName": {
"type": "string"
},
"id": {
"type": "string"
},
"type": {
"type": "string"
}
},
"type": "object"
},
"createdTime": {
"type": "string"
},
"creationType": {
"type": "string"
},
"databaseType": {
"type": "string"
},
"displayName": {
"type": "string"
},
"environmentSku": {
"type": "string"
},
"isDefault": {
"type": "boolean"
},
"linkedEnvironmentMetadata": {
"properties": {
"backgroundOperationsState": {
"type": "string"
},
"baseLanguage": {
"type": "integer"
},
"createdTime": {
"type": "string"
},
"domainName": {
"type": "string"
},
"friendlyName": {
"type": "string"
},
"instanceApiUrl": {
"type": "string"
},
"instanceState": {
"type": "string"
},
"instanceUrl": {
"type": "string"
},
"resourceId": {
"type": "string"
},
"scaleGroup": {
"type": "string"
},
"uniqueName": {
"type": "string"
},
"version": {
"type": "string"
}
},
"type": "object"
},
"protectionStatus": {
"properties": {
"keyManagedBy": {
"type": "string"
}
},
"type": "object"
},
"provisioningState": {
"type": "string"
},
"retentionDetails": {
"properties": {
"backupsAvailableFromDateTime": {
"type": "string"
},
"retentionPeriod": {
"type": "string"
}
},
"type": "object"
},
"retentionPeriod": {
"type": "string"
},
"runtimeEndpoints": {
"properties": {
"microsoft.ApiManagement": {
"type": "string"
},
"microsoft.BusinessAppPlatform": {
"type": "string"
},
"microsoft.CommonDataModel": {
"type": "string"
},
"microsoft.Flow": {
"type": "string"
},
"microsoft.PowerApps": {
"type": "string"
},
"microsoft.PowerAppsAdvisor": {
"type": "string"
}
},
"type": "object"
},
"states": {
"properties": {
"management": {
"properties": {
"id": {
"type": "string"
}
},
"type": "object"
},
"runtime": {
"properties": {
"id": {
"type": "string"
}
},
"type": "object"
}
},
"type": "object"
},
"updateCadence": {
"properties": {
"id": {
"type": "string"
}
},
"type": "object"
}
},
"type": "object"
},
"type": {
"type": "string"
}
},
"type": "object"
}
Apoi, folosim un alt control For Each folosind „capacitatea” ieșirii Parse-CurrentItem. Apoi analizăm acest lucru într-un obiect tipat folosind această schemă JSON:
Acum putem folosi controlul Switch pe proprietatea CapacityType din ieșirea Parse-Capacity. Aceasta este fie valoarea „Bază de date”, „Fișier” sau „Jurnal”. Sub fiecare caz de comutare, capturați proprietatea „actualConsumption” în variabila aferentă. În următorul caz, vedeți că capturăm capacitatea bazei de date:
Ca ultim pas din bucla „Pentru fiecare mediu”, acum putem capta detaliile mediului pentru acest rând în raport. Folosind controlul variabilelor Append to array, utilizați următoarea schemă JSON:
{
"properties": {
"actualConsumption": {
"type": "number"
},
"capacityType": {
"type": "string"
},
"capacityUnit": {
"type": "string"
},
"ratedConsumption": {
"type": "number"
},
"updatedOn": {
"type": "string"
}
},
"type": "object"
}
Clădiți tabelul de rapoarte
Felicitări, ați ajuns acum la partea ușoară! Acum că avem matricea de capacități de mediu complet populată și simplificată, o putem afișa în format tabelar.
Utilizați conectorul HTML al tabelului
Rulând aplicația logică, putem vedea acum rezultatul raportului tabelului HTML:
Raportul ar putea fi opțional trimis prin e-mail părților interesate din acest exemplu în scopuri de contabilitate a costurilor sau datele ar putea fi salvate într-o bază de date pentru analize ulterioare și tendințe istorice.