ADF pipeline get dynamic count of input parameters

Viewed 44

I have a pipeline where I want to pass a JSON to from 3rd party application.

simple JSON Example, but the keys could be different for each call

{
    "name": "Here is a name",
    "guaid": "123456-123456-123456-111112",
    "owner": "my.email@example.com",
    "description": "here comes my description"
}

Passing the JSON is not the problem but I do not want to configure each parameter in the JSON as an pipeline parameter inside my ADF because it is not needed. I do not modify the JSON inside my pipeline, I just have to surround it with some other parameters, so I need it as a whole. I cloud of course define a parameter for each key in the JSON and concatenate it again but why do the effort if it is not needed.

I also can not modify how the JSON will be passed to my pipeline, so it is not possible to pass the whole JSON inside one parameter like this:

{
    "inputParam": "{\"name\": \"Here is a name\",\"guaid\": \"123456-123456-123456-111112\",\"owner\": \"my.email@example.com\",\"description\":\"here comes my description\"}"
}

so is it possible to get all input without "knowing" it and use it in my activity? My Pipeline is just simple, I only need a set variable and web activities, so I want to avoid a complex solution.

JSON Outbutt should look like this

{
    "processingMode": "full",
    "version": "1.0.0",
    "content": [
        {
            "type": "Application",
            "id": "akjhajf-ffsfsfs-sf-sf-sf",
            "data": {
                "name": "Here is a name",
                "guaid": "123456-123456-123456-111112",
                "owner": "my.email@example.com",
                "description": "here comes my description"
            }
        }
    ]
}

I achieve this by adding this in a set variable like this with the not allowed method i mentioned above

{
    "processingMode": "full",
    "version": "1.0.0",
    "content": [
        {
            "type": "Application",
            "id": "@{guid()}",
            "data": @{pipeline().parameters.inputParam}
        }
    ]
}

I then just use this result JSON and call a external Webservice via Web activity

0 Answers
Related