Power AutomateWeb API'sı

Bundan sonra tüm akışlar Common Data Service'te depolanacak ve zengin Web API'sinden yararlanacak.

Bu içerik, Power Automate'in Çözümler sekmesinde yer alan akışların yönetimini kapsar. Akışlarım bölümünde yer alan akışlar şu anda bu API'lar tarafından desteklenmemektedir.

HTTP istekleri oluşturma

İstekleri oluşturmaya başlamak için önce URL'yi oluşturmanız gerekir. Power Automate Web API'si temel URL'sinin biçimi şöyledir: https://{Organization ID}.{Regional Subdomain}.dynamics.com/api/data/v9.1/. İki parametre:

  • Kuruluş Kimliği, akışlarınızın depolandığı ortamın benzersiz adıdır.

  • Bölgesel Alt Etki Alanı, ortamınızın konumuna bağlıdır.

Bu iki parametreyi almak için.

  1. Power Platform yönetim merkezine gidin.
  2. Akışlarınızı oluşturmak için kullandığınız ortamı seçin.

Akış URL'si

  1. Ortam URL 'sinden kuruluş kimliği ve bölge alt etki alanını kopyalayın.

Akış URL'si

Ayrıca, çevrimiçi yönetim API'sinde Örnekleri Al yöntemini kullanarak size sağlanan örnek listesini program aracılığıyla da alabilirsiniz.

Web API'sına yönelik her istekte Accept ve Content-type üst bilgileri application/json olarak ayarlanmış olmalıdır.

Son olarak, Authorization üst bilgisini bir Azure AD Taşıyıcı belirteciyle doldurun. Common Data Service için bir Azure AD' Taşıyıcı belirtecinin nasıl alınacağını öğrenebilirsiniz. Örneğin, bu istek:

GET https://org00000000.crm0.dynamics.com/api/data/v9.1/workflows
Accept: application/json
Authorization: Bearer ey...

Yanıt söz konusu ortamın içindeki akışların listesini içerir:

{
    "@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 Common Data Service.",
        "clientdata": "{\"properties\":{\"connectionReferences\":{\"shared_commondataservice\":{\"source\":\"NotSpecified\",\"id\":\"/providers/Microsoft.PowerApps/apis/shared_commondataservice\",\"tier\":\"NotSpecified\"}},\"definition\":{...}},\"schemaVersion\":\"1.0.0.0\"}"
    }]
}

Akışları listeleme

Yukarıda gösterildiği gibi, workflows üzerinde GET çağrısı yaparak iş akışlarının listesini alabilirsiniz. Her iş akışının çok sayıda özelliği vardır ama en ilgili olanları şunlardır:

Özellik adı Açıklama
kategori Akışın kategorisi. Farklı türler şunlardır: 0 - klasik Uygulamalar için Common Data Service iş akışları, 1 - klasik Common Data Service iletişim kutuları, 2 - iş kuralları, 3 - klasik Common Data Service eylemleri, 4- iş süreci akışları ve 5 - otomatik, anlık veya zamanlanmış akışlar.
statecode Akışın durumu. Durum 0 - kapalı veya 1 - açık olabilir.
workflowuniqueid Akışın bu yüklemesine ilişkin benzersiz tanımlayıcı.
workflowid Tüm içeri aktarmalar genelinde bulut akışına ilişkin benzersiz tanımlayıcı.
createdon Akışın oluşturulduğu tarih.
_ownerid_value Akışın sahibi olan kullanıcının veya takımın benzersiz tanımlayıcısı. Bu, Common Data Service'teki systemusers varlığından gelen bir tanımlayıcıdır.
modifiedon Akışın son güncelleştirildiği zaman.
ismanaged Akışın bir yönetilen çözüm yoluyla yüklendiğini belirtir.
ad Akışa sizin verdiğiniz görünen ad.
_modifiedby_value Akışı son güncelleştiren kullanıcı. Bu, Common Data Service'teki systemusers varlığından gelen bir tanımlayıcıdır.
_createdby_value Akışı oluşturan kullanıcı. Bu, Common Data Service'teki systemusers varlığından gelen bir tanımlayıcıdır.
tür Akışın çalışan bir akış mı yoksa ek akışlar oluştururken kullanılacak bir şablon mu olduğunu belirtir. 1 - akış, 2 - etkinleştirme veya 3 - şablon.
açıklama Akışın kullanıcı tarafından sağlanan açıklaması.
clientdata Akışın connectionReferences bilgilerini ve tanımını içeren nesnenin dize olarak kodlanmış JSON öğesi.

Ayrıca, Common Data Service API'si verileri sorgulama belgelerinde açıklandığı gibi, belirli özellikleri isteyebilir, akış listesini filtreleyebilir ve daha birçok işlem yapabilirsiniz. Örneğin, bu sorgu yalnızca şu anda açık olan otomatik, anlık veya zamanlanmış akışları döndürür:

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...

Bulut akışı oluşturma

Bulut akışı oluşturmak için workflows koleksiyonunda POST çağrısı yapın. Otomatik, anlık ve zamanlanmış akışlar için gerekli özellikler şunlardır: category, name, type, primaryentity ve clientdata. Bu tür akışlarda primaryentity özelliği için none değerini kullanın.

Bir açıklama ve durum kodu da sağlayabilirsiniz.

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 Common Data Service.",
        "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\"}"
}

En önemli bölüm, akışın kullandığı connectionReferences bilgilerini ve akışın tanımını içeren clientdata bölümüdür. connectionReferences, akışın kullandığı her bağlantının eşlemeleridir.

Üç özellik vardır:

Özellik adı Açıklama
connectionName Bağlantıyı tanımlar. connectionName değerini, Bağlantılar sayfasına gidip bağlantının URL'sinden kopyalayarak görebilirsiniz.
kaynak Embedded veya Invoker. Invoker yalnızca anlık akışlarda (kullanıcının bir düğme seçerek çalıştırdığı akışlar) geçerlidir ve bağlantıyı son kullanıcının sağlayacağını belirtir. Bu durumda connectionName yalnızca tasarım zamanında kullanılır. Bağlantının Embedded olması, belirttiğiniz connectionName değerinin her zaman kullanılacağı anlamına gelir.
kimlik Bağlayıcının tanımlayıcısı. Bu id özelliği her zaman /providers/Microsoft.PowerApps/apis/ ile başlar ve ardından bağlayıcı adı gelir. Bağlayıcı adını bağlantının URL'sinden veya Bağlayıcılar sayfasında bağlayıcıyı seçerek kopyalayabilirsiniz.

POST isteğini yürüttükten sonra, yeni akışınızın workflowid değerini içeren OData-EntityId üst bilgisini alırsınız.

Bulut akışını güncelleştirme

İş akışında PATCH çağrısı yaparak bulut akışını güncelleştirebilir, açabilir veya kapatabilirsiniz. Bu çağrıları yapmak için workflowid özelliğini kullanın. Örneğin, aşağıdaki çağrıyla akışın açıklamasını ve sahibini güncelleştirebilirsiniz:

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)",
}

Not

Sahibi değiştirme söz diziminde odata.bind biçimi kullanılır. Başka bir deyişle, _ownerid_value alanını doğrudan eklemek yerine özellik adının sonuna @odata.bind ekler ve ardından ID değerini systemusers() içine yerleştirirsiniz.

Başka bir örnekte, şu çağrıyla bulut akışını açabilirsiniz:

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
}

Bulut akışını silme

Basit bir DELETE çağrısıyla bulut akışını silebilirsiniz:

DELETE https://org00000000.crm0.dynamics.com/api/data/v9.1/workflows(00000000-0000-0000-0000-000000000002)
Accept: application/json
Authorization: Bearer ey...

Not

Açılmış olan bulut akışlarını silemezsiniz. Önce akışı kapatmanız gerekir (yukarıdaki Bulut akışını güncelleştirme bölümüne bakın). Yoksa şu hatayı görürsünüz: Cannot delete an active workflow definition.

Bulut akışının paylaşıldığı tüm kullanıcıları alma

Erişimi olan kullanıcıları listelemek için Common Data Service'te bir işlev kullanılır. Bu işler yalnızca Target parametresini alır:

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...

Target parametresi, @odata.id adlı tek özelliği olan JSON benzeri bir dizedir. Yukarıdaki örneğin iş akışı kimliğini değiştirin. Şunu döndürür:

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

Bulut akışı paylaşma veya paylaşımını kaldırma

GrantAccess eylemini kullanarak bulut akışını paylaşabilirsiniz.

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

AccessMask parametresi, farklı izin düzeyleri için aşağıdaki değerleri içeren bir alandır:

Ad Açıklama
Hiçbiri Erişim yok.
Okuma Erişimi Akışı okuma hakkı.
WriteAccess Akışı güncelleştirme hakkı.
DeleteAccess Akışı silme hakkı.
ShareAccess Akışı paylaşma hakkı.
AssignAccess Akışın sahibini değiştirme hakkı.

İzinleri virgülle birleştirebilirsiniz; örneğin, ReadAccess,WriteAccess değerini geçirerek bulut akışını hem okuma hem de güncelleştirme izni sağlayabilirsiniz.

RevokeAccess eylemiyle bulut akışının paylaşımını kaldırabilirsiniz. Bir örnek aşağıda verilmiştir:

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

RevokeAccess, AccessMask içinde verilen tüm izinleri kaldırır.

Akışları dışarı aktarma

Akışları bir .zip dosyasına aktarmak için ExportSolution eylemini kullanın. Önce, istediğiniz akışları bir çözüme ekleyin.

Akışınız çözüm içinde olduğunda, aşağıdaki eylemi çağırın:

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, ExportSoutionFile özelliğinde base 64 kodlamalı bir dize döndürür.

{
    "@odata.context": "https://org00000000.crm0.dynamics.com/api/data/v9.1/$metadata#Microsoft.Dynamics.CRM.ExportSolutionResponse",
    "ExportSolutionFile": "UEsDBBQAAgAI..."
}

Ardından bu dosyayı kaynak denetimine kaydedebilir ve/veya istediğiniz sürüm yönetimi veya dağıtım sisteminde kullanabilirsiniz.

Akışları içeri aktarma

Çözümü içeri aktarmak için ImportSolution çağrısı yapın.

Özellik adı Açıklama
OverwriteUnmanagedCustomizations Common Data Service'te bu akışların örnekleri varsa, bunları içeri aktarmak için bu bayrağın true olarak ayarlanması gerekir. Aksi takdirde bunlar üzerine yazılmaz.
PublishWorkflows Common Data Service iş akışlarının içeri aktarıldığında etkinleştirileceğini belirtir. Bu ayar, diğer iş akışı türlerinde geçerli değildir.
ImportJobId İçeri aktarma işini izlemek için yeni, benzersiz bir GUID sağlar.
CustomizationFile Çözümü içeren base 64 kodlamalı bir zip dosyası.
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..."
}

İçeri aktarma uzun süre çalışan bir işlem olduğundan, ImportSolution eyleminin yanıtı 204 No content olacaktır. İlerleme durumunu izlemek için, importjobs nesnesinde GET çağrısı yapın ve özgün ImportSolution eylemine eklemiş olduğunuz ImportJobId değerini sağlayın.

GET https://org00000000.crm0.dynamics.com/api/data/v9.1/importjobs(00000000-0000-0000-0000-000000000006)
Accept: application/json
Authorization: Bearer ey...

Bu çağrı, progress (tamamlanma yüzdesi), startedon ve completedon (içeri aktarma bittiyse) bilgileriyle içeri aktarma işleminin durumunu döndürür.

İçeri aktarma işlemi başarıyla tamamlandıktan sonra, hedef ortamda connectionNames büyük olasılıkla farklı olacağından (bağlantıların var olduğunu varsayarsak) akış için bağlantıları yeniden ayarlamanız gerekir. Hedef ortamda yeni bağlantılar ayarlıyorsanız, akışların sahibi bunları Power Automate tasarımcısında oluşturmalıdır. Yeni ortamda bağlantılar zaten ayarlanmışsa, bağlantıların adlarını akışın clientData değerine PATCH ile ekleyebilirsiniz.