SteveC
SteveC

Reputation: 16813

How can I get the workflow definition of a logic app as JSON?

How can I get the workflow definition of a logic app as JSON?

I can create a new Logic App from a JSON definition file using the New-AzLogicApp command

But I can't see how to reverse the process, i.e. get the JSON definition of an existing Logic App.

I've tried the Get-AzLogicApp which returns a Workflow object.

But I'm blocked on the last step, i.e. from the Workflow back to an actual JSON file

Upvotes: 0

Views: 1985

Answers (3)

user3297669
user3297669

Reputation: 1

I've drilled down for a project in a client u need to do this:

1 )Get-AzLogicApp 
$lapp.Definition.ToString()-> this is the entire definition of the logicapp
2) Save the definition to a file
3) Use New-AzLogicApp or Set-AzLogicApp with -DefinitionFilePath pointing to that file  

$a= New-AzLogicApp -ResourceGroupName $rg -name $name1 -location $loc -DefinitionFilePath  $fileName1 -ParameterFilePath $parm1
$a.Parameters.Count


*for Parameters i use this content in a file
{
    "$connections": {
        "value": {
            "office365": {
                "connectionId": "/subscriptions/SUBS-DEPLOY/resourceGroups/RG-DEPLOY/providers/Microsoft.Web/connections/office365",
                "connectionName": "office365",
                "id": "/subscriptions/SUBS-DEPLOY/providers/Microsoft.Web/locations/westeurope/managedApis/office365"
            },
            "sharepointonline": {
                "connectionId": "/subscriptions/SUBS-DEPLOY/resourceGroups/RG-DEPLOY/providers/Microsoft.Web/connections/sharepointonline",
                "connectionName": "sharepointonline",
                "id": "/subscriptions/SUBS-DEPLOY/providers/Microsoft.Web/locations/westeurope/managedApis/sharepointonline"
            }
        }
    }
}
replace SUBS-DEPLOY with the subscription id and RG-DEPLOY with resource group name and all good.

Anything just buzz: stationsolutions_at_gmail.com

Hope it helps







Here's the code ..


function Get-LogicApp($resourceGroupName ,$location,$name)
{
    Write-Host " Get LogicApp Definition $name"
    $lapp = Get-AzLogicApp -ResourceGroupName $resourceGroupName -Name $name
    $o= $lapp.Definition.ToString()
    $fileName = "..\logicapps\" + $name + ".logicapp.json"
    $o | Out-File -FilePath $fileName
    $parms = "..\logicapps\templates\parms.json"
    $fileName = "..\logicapps\" + $name + ".logicapp.parms.json"
    Copy-Item -Path $parms  $fileName
    Write-Host " LogicApp Definition $resourceGroupName > $fileName"
}

Upvotes: 0

Joy Wang
Joy Wang

Reputation: 42123

If you want to get the definition of the logic app, try the command as below.

$logicapp = Get-AzResource -ResourceGroupName <ResourceGroupName> -ResourceType Microsoft.Logic/workflows -ResourceName "<logic app name>"
$logicapp.properties.definition | ConvertTo-Json

enter image description here

If you want to get it as a .json file, just change the second line as below.

$logicapp.properties.definition | ConvertTo-Json | Out-File "C:\Users\joyw\Desktop\logic.json" 

Update:

You could specify the -Depth parameter of ConvertTo-Json with 3, if you want more levels of contained objects are included in the JSON representation, you can also specify it with other values.

-Depth

Specifies how many levels of contained objects are included in the JSON representation. The default value is 2.

$logicapp.properties.definition | ConvertTo-Json -Depth 3

enter image description here

Upvotes: 1

HariHaran
HariHaran

Reputation: 4169

You can use the REST API to get the details.

REST Api Documentation

Or can you try using the Get-AzLogicApp | ConvertFrom-Json | ConvertTo-Json and see if that helps

Upvotes: 0

Related Questions