Power Automate Web API
Van nu af aan worden alle stromen opgeslagen in Dataverse en wordt er gebruikgemaakt van de uitgebreide Web-API.
Deze inhoud bevat informatie over het beheren van stromen op het tabblad Oplossingen in Power Automate. Op dit moment worden de stromen bij Mijn stromen niet ondersteund door deze API's.
HTTP-aanvragen opstellen
Als u aan de slag wilt met het maken van aanvragen, moet u eerst de URL maken. De indeling van de basis-URL van de Power Automate Web-API is: https://{Organization ID}.{Regional Subdomain}.dynamics.com/api/data/v9.1/. De twee parameters zijn:
De organisatie-id is een unieke naam voor de omgeving waarin uw stromen worden opgeslagen.
Welk regionale subdomein van toepassing is, is afhankelijk van de locatie van uw omgeving.
Deze twee parameters verkrijgen:
- Ga naar het Power Platform-beheercentrum.
- Selecteer de omgeving die u gebruikt om uw stromen te maken.

- Kopieer de organisatie-id en het regionale subdomein van de omgevings-URL.

U kunt de lijst met beschikbare exemplaren ook programmatisch ophalen met de methode Exemplaren ophalen in de Online Management-API.
Voor elke aanvraag voor de Web-API moeten de Accept- en Content-type-headers worden ingesteld op application/json.
Plaats tot slot de Azure AD Bearer-token in de Authorization-header. U kunt leren hoe u een Azure AD Bearer-token ophaalt voor Dataverse. Kijk bijvoorbeeld eens naar deze aanvraag:
GET https://org00000000.crm0.dynamics.com/api/data/v9.1/workflows
Accept: application/json
Authorization: Bearer ey...
Het antwoord bevat de lijst met stromen uit die omgeving:
{
"@odata.context": "https://org00000000.crm0.dynamics.com/api/data/v9.1/$metadata#workflows",
"value": [{
"@odata.etag": "W/\"12116760\"",
"category": 5,
"statecode": 0,
"workflowidunique": "00000000-0000-0000-0000-000000000001",
"workflowid" : "00000000-0000-0000-0000-000000000002",
"createdon": "2018-11-15T19:45:51Z",
"_ownerid_value": "00000000-0000-0000-0000-000000000003",
"modifiedon": "2018-11-15T19:45:51Z",
"ismanaged": false,
"name": "Sample flow",
"_modifiedby_value": "00000000-0000-0000-0000-000000000003",
"_createdby_value": "00000000-0000-0000-0000-000000000003",
"type": 1,
"description": "This flow updates some data in Dataverse.",
"clientdata": "{\"properties\":{\"connectionReferences\":{\"shared_commondataservice\":{\"source\":\"NotSpecified\",\"id\":\"/providers/Microsoft.PowerApps/apis/shared_commondataservice\",\"tier\":\"NotSpecified\"}},\"definition\":{...}},\"schemaVersion\":\"1.0.0.0\"}"
}]
}
Stromen weergeven
Zoals eerder beschreven, kunt u de lijst met werkstromen ophalen door GET aan te roepen bij workflows. Elke werkstroom heeft een aantal eigenschappen. De meest relevante eigenschappen zijn:
| Eigenschapsnaam | Beschrijving |
|---|---|
| category | De categorie van de stroom. Hier zijn de verschillende categorieën. 0 - Klassieke Dataverse-werkstromen. 1 - Klassieke Dataverse-dialoogvensters. 2 - Bedrijfsregels. 3 - Klassieke Dataverse-acties. 4 - Bedrijfsprocesstromen. 5 - Geautomatiseerde, directe of geplande stromen. 6 - Bureaubladstromen. |
| statecode | De status van de stroom. De status kan 0 zijn (uit) of 1 (aan). |
| workflowidunique | De unieke id voor deze installatie van de stroom. |
| workflowid | De unieke id voor een cloudstroom bij alle imports. |
| createdon | De datum waarop de stroom is gemaakt. |
| _ownerid_value | De unieke id van de gebruiker of het team dat eigenaar is van de stroom. Dit is een id uit de systemusers-tabel in Dataverse. |
| modifiedon | De laatste keer dat de stroom is bijgewerkt. |
| ismanaged | Geeft aan of de stroom is geïnstalleerd via een beheerde oplossing. |
| name | De weergavenaam die u de stroom hebt gegeven. |
| _modifiedby_value | De laatste gebruiker die de stroom heeft bijgewerkt. Dit is een id uit de systemusers-tabel in Dataverse. |
| _createdby_value | De gebruiker die de stroom heeft gemaakt. Dit is een id uit de systemusers-tabel in Dataverse. |
| type | Geeft aan of een stroom actief is, of dat het een sjabloon is dat kan worden gebruikt voor het maken van aanvullende stromen. 1 - stroom, 2 - activering of 3 - sjabloon. |
| description | De door de gebruiker opgegeven beschrijving van de stroom. |
| clientdata | De JSON van een object met tekenreekscodering. De JSON bevat de connectionReferences en de definitie van een stroom. |
De documentatie voor de Dataverse-werkstroom bevat aanvullende informatie over eigenschappen/velden en hun gebruik.
U kunt ook specifieke eigenschappen aanvragen, de lijst stromen filteren en nog veel meer. Dit wordt beschreven in de Dataverse-API-documentatie voor het opvragen van gegevens. Met deze query worden bijvoorbeeld alleen geautomatiseerde, direct uit te voeren en geplande stromen geretourneerd die zich momenteel hier bevinden:
GET https://org00000000.crm0.dynamics.com/api/data/v9.1/workflows?$filter=category eq 5 and statecode eq 1
Accept: application/json
Authorization: Bearer ey...
Een cloudstroom maken
Roep POST aan voor de workflows-verzameling om een cloudstroom te maken. De vereiste eigenschappen voor geautomatiseerde, direct uit te voeren en geplande stromen zijn: category, type, primaryentity en clientdata. Gebruik none voor de primaire entiteit van stromen van dit type.
U kunt ook een beschrijving opgeven en een statuscode opgeven.
POST https://org00000000.crm0.dynamics.com/api/data/v9.1/workflows
Accept: application/json
Authorization: Bearer ey...
Content-type: application/json
{
"category": 5,
"statecode": 0,
"name": "Sample flow name",
"type": 1,
"description": "This flow reads some data from Dataverse.",
"primaryentity":"none",
"clientdata": "{\"properties\":{\"connectionReferences\":{\"shared_commondataservice\":{\"connectionName\":\"shared-commondataser-00000000-0000-0000-0000-000000000004\",\"source\":\"Invoker\",\"id\":\"/providers/Microsoft.Power Apps/apis/shared_commondataservice\"}},\"definition\":{\"$schema\": \"https:\/\/schema.management.azure.com\/providers\/Microsoft.Logic\/schemas\/2016-06-01\/workflowdefinition.json#\",\"contentVersion\": \"1.0.0.0\",\"parameters\": {\"$connections\": {\"defaultValue\": {},\"type\": \"Object\"},\"$authentication\": {\"defaultValue\": {},\"type\": \"SecureObject\"}},\"triggers\": {\"Recurrence\": {\"recurrence\": {\"frequency\": \"Minute\",\"interval\": 1},\"type\": \"Recurrence\"}},\"actions\": {\"List_records\": {\"runAfter\": {},\"metadata\": {\"flowSystemMetadata\": {\"swaggerOperationId\": \"GetItems_V2\"}},\"type\": \"ApiConnection\",\"inputs\": {\"host\": {\"api\": {\"runtimeUrl\": \"https:\/\/firstrelease-001.azure-apim.net\/apim\/commondataservice\"},\"connection\": {\"name\": \"@parameters('$connections')['shared_commondataservice']['connectionId']\"}},\"method\": \"get\",\"path\": \"\/v2\/datasets\/@{encodeURIComponent(encodeURIComponent('default.cds'))}\/tables\/@{encodeURIComponent(encodeURIComponent('accounts'))}\/items\",\"queries\": {\"$top\": 1},\"authentication\": \"@parameters('$authentication')\"}}},\"outputs\": {}}},\"schemaVersion\":\"1.0.0.0\"}"
}
Het belangrijkste gedeelte is de clientdata. Deze bevat de connectionReferences waar de stroom gebruik van maakt en de definitie van de stroom. De connectionReferences zijn de toewijzingen van elke verbinding waar de stroom gebruik van maakt.
Er zijn drie eigenschappen:
| Eigenschapsnaam | Beschrijving |
|---|---|
| connectionName | Hiermee wordt de verbinding geïdentificeerd. U kunt de connectionName bekijken door naar de pagina Verbindingen te gaan en de naam te kopiëren uit de URL van de verbinding. |
| source | Embedded of Invoker. Invoker is alleen geldig voor direct uit te voeren stromen (waarbij een gebruiker een knop selecteert om de stroom uit te voeren). Dit geeft aan dat de eindgebruiker de verbinding zelf opgeeft. In dit geval wordt connectionName alleen gebruikt gedurende de ontwerptijd. Als de verbinding Embedded is, betekent dit dat de connectionName die u opgeeft altijd wordt gebruikt. |
| id | De id van de connector. De id begint altijd met /providers/Microsoft.PowerApps/apis/, gevolgd door de naam van de connector. Deze kunt u kopiëren uit de URL van de verbinding, of u kunt de connector selecteren op de pagina Connectors. |
Wanneer u de aanvraag POST hebt uitgevoerd, ontvangt u de header OData-EntityId. Deze bevat de workflowid van uw nieuwe stroom.
Een cloudstroom bijwerken
U kunt PATCH aanroepen voor de werkstroom om een cloudstroom bij te werken, in te schakelen of uit te schakelen. Gebruik de eigenschap workflowid om deze aanroepen uit te voeren. U kunt bijvoorbeeld de beschrijving en eigenaar van de stroom bijwerken met de volgende aanroep:
PATCH https://org00000000.crm0.dynamics.com/api/data/v9.1/workflows(00000000-0000-0000-0000-000000000002)
Accept: application/json
Authorization: Bearer ey...
Content-type: application/json
{
"description" : "This flow will ensure consistency across systems.",
"ownerid@odata.bind": "systemusers(00000000-0000-0000-0000-000000000005)"
}
Note
Bij de syntaxis voor het wijzigen van de eigenaar wordt de indeling odata.bind gebruikt. Dit betekent dat in plaats van dat het veld _ownerid_value rechtstreeks wordt gepatcht, u @odata.bind toevoegt aan de eigenschapnaam en u daarna de id verpakt met systemusers().
In een ander voorbeeld kunt u een cloudstroom met deze aanroep inschakelen:
PATCH https://org00000000.crm0.dynamics.com/api/data/v9.1/workflows(00000000-0000-0000-0000-000000000002)
Accept: application/json
Authorization: Bearer ey...
Content-type: application/json
{
"statecode" : 1
}
Een cloudstroom verwijderen
Verwijder een cloudstroom met een eenvoudige DELETE-aanroep:
DELETE https://org00000000.crm0.dynamics.com/api/data/v9.1/workflows(00000000-0000-0000-0000-000000000002)
Accept: application/json
Authorization: Bearer ey...
Note
Het is niet mogelijk om een cloudstroom te verwijderen die is ingeschakeld. U moet eerst de stroom uitschakelen (zie Een cloudstroom bijwerken hiervoor). Anders wordt de volgende foutmelding weergegeven: Cannot delete an active workflow definition.
Alle gebruikers ophalen met wie een cloudstroom wordt gedeeld
Als u een lijst met gebruikers met toegang wilt bekijken, gebruikt u een functie uit Dataverse. Met deze functie wordt één parameter uit Target gebruikt:
GET https://org00000000.crm0.dynamics.com/api/data/v9.1/RetrieveSharedPrincipalsAndAccess(Target=@tid)?@tid={'@odata.id':'workflows(00000000-0000-0000-0000-000000000002)'}
Accept: application/json
Authorization: Bearer ey...
De parameter Target is een JSON-achtige tekenreeks met één eigenschap, genaamd @odata.id. Vervang in het vorige voorbeeld de werkstroom-id. Het volgende wordt geretourneerd:
{
"@odata.context": "https://org00000000.crm0.dynamics.com/api/data/v9.1/$metadata#Microsoft.Dynamics.CRM.RetrieveSharedPrincipalsAndAccessResponse",
"PrincipalAccesses": [
{
"AccessMask": "ReadAccess",
"Principal": {
"@odata.type": "#Microsoft.Dynamics.CRM.systemuser",
"ownerid": "00000000-0000-0000-0000-000000000005"
}
}
]
}
Een cloudstroom delen of het delen ongedaan maken
U kunt een cloudstroom delen met de actie GrantAccess.
POST https://org00000000.crm0.dynamics.com/api/data/v9.1/GrantAccess
Accept: application/json
Authorization: Bearer ey...
Content-type: application/json
{
"Target" : {
"@odata.type": "Microsoft.Dynamics.CRM.workflow",
"workflowid" : "00000000-0000-0000-0000-000000000002"
},
"PrincipalAccess": {
"Principal": {
"@odata.type" : "Microsoft.Dynamics.CRM.systemuser",
"ownerid" : "00000000-0000-0000-0000-000000000005"
},
"AccessMask": "ReadAccess"
}
}
De parameter AccessMask staat in een veld met de volgende waarden voor verschillende machtigingsniveaus:
| Naam | Beschrijving |
|---|---|
| None | Geen toegang. |
| ReadAccess | Het recht om de stroom te lezen. |
| WriteAccess | Het recht om de stroom bij te werken. |
| DeleteAccess | Het recht om de stroom te verwijderen. |
| ShareAccess | Het recht om de stroom te delen. |
| AssignAccess | Het recht om de eigenaar van de stroom te wijzigen. |
U kunt machtigingen met een komma combineren. U kunt bijvoorbeeld met ReadAccess,WriteAccess de mogelijkheid bieden om een cloudstroom zowel te lezen als bij te werken.
U kunt het delen van een cloudstroom opheffen met de actie RevokeAccess. Hier volgt een voorbeeld:
POST https://org00000000.crm0.dynamics.com/api/data/v9.1/RevokeAccess
Accept: application/json
Authorization: Bearer ey...
Content-type: application/json
{
"Target" : {
"@odata.type": "Microsoft.Dynamics.CRM.workflow",
"workflowid" : "00000000-0000-0000-0000-000000000002"
},
"Revokee": {
"@odata.type" : "Microsoft.Dynamics.CRM.systemuser",
"ownerid" : "00000000-0000-0000-0000-000000000005"
}
}
Met RevokeAccess worden alle machtigingen verwijderd die in AccessMask zijn verleend.
Stromen exporteren
Gebruik de actie ExportSolution om stromen te exporteren naar een ZIP-bestand. Voeg eerst de stromen toe die u aan een oplossing wilt toevoegen.
Wanneer uw stroom zich in een oplossing bevindt, roept u de volgende actie aan:
POST https://org00000000.crm0.dynamics.com/api/data/v9.1/ExportSolution
Accept: application/json
Authorization: Bearer ey...
Content-type: application/json
{
"SolutionName" : "Awesome solution 1",
"Managed": false
}
ExportSolution retourneert een tekenreeks met base 64-codering in de eigenschap ExportSoutionFile.
{
"@odata.context": "https://org00000000.crm0.dynamics.com/api/data/v9.1/$metadata#Microsoft.Dynamics.CRM.ExportSolutionResponse",
"ExportSolutionFile": "UEsDBBQAAgAI..."
}
U kunt vervolgens dit bestand opslaan in broncodebeheer en/of een versiebeheer- of distributiesysteem naar keuze gebruiken.
Stromen importeren
Roep de actie ImportSolution aan om een oplossing te importeren.
| Eigenschapsnaam | Beschrijving |
|---|---|
| OverwriteUnmanagedCustomizations | Als er bestaande exemplaren van deze stromen aanwezig zijn in Dataverse, moet deze markering op true worden ingesteld om ze te importeren. Als u dit niet doet, worden ze niet overschreven. |
| PublishWorkflows | Hiermee wordt aangegeven of er klassieke Dataverse-werkstromen worden geactiveerd bij het importeren. Deze instelling geldt niet voor andere typen stromen. |
| ImportJobId | Biedt een nieuwe, unieke GUID om de importeertaak te volgen. |
| CustomizationFile | Een op basis van base 64 gecodeerd ZIP-bestand dat de oplossing bevat. |
POST https://org00000000.crm0.dynamics.com/api/data/v9.1/ImportSolution
Accept: application/json
Authorization: Bearer ey...
Content-type: application/json
{
"OverwriteUnmanagedCustomizations": false,
"PublishWorkflows" : true,
"ImportJobId" : "00000000-0000-0000-0000-000000000006",
"CustomizationFile" : "UEsDBBQAAgAI..."
}
Omdat het importeren lang duurt, is het antwoord op de ImportSolution-actie een 204 No content. Als u de voortgang wilt bijhouden, roept u een GET voor het importjobs-object. Geef daarbij de ImportJobId op die u in de oorspronkelijke actie ImportSolution hebt gebruikt.
GET https://org00000000.crm0.dynamics.com/api/data/v9.1/importjobs(00000000-0000-0000-0000-000000000006)
Accept: application/json
Authorization: Bearer ey...
Met deze aanroep wordt de status van de importbewerking geretourneerd, inclusief progress (het voltooiingspercentage), startedon en completedon (of het importeren is voltooid).
Wanneer het importeren is voltooid, moet u de verbindingen voor de stroom instellen omdat de connectionNames waarschijnlijk anders is in de doelomgeving (als de verbindingen überhaupt bestaan). Als u nieuwe verbindingen instelt in de doelomgeving, moet de eigenaar van de stromen ze in de Power Automate-ontwerpfunctie maken. Als de verbindingen al zijn ingesteld in de nieuwe omgeving, kunt u de clientData van de stroom PATCH met de namen van de verbindingen.