Get data and processing blocks
In this guide, you will learn how to search for data and processing blocks. After selecting the blocks, you can add them one by one to the previously created workflow. Blocks are added as workflow tasks.
In this example, you will populate the empty workflow with blocks used to compute the Normalized Difference Vegetation Index from a satellite image.
Do not confuse workflow tasks (also defined as blocks) with job tasks (also defined as job steps that generate individual outputs).
Get blocks IDs and block names
First, get the block names (both docker names and display names) together with their corresponding block ID (see examples in the tables below).
curl -s GET -H "Authorization: Bearer $PTOKEN" https://api.up42.com/blocks \
| jq -r '.data[] | .displayName + " : " + .id'
Display names (human-readable) | Block IDs |
---|---|
SPOT 6/7 Display (Streaming) | 045019bb-06fc-4fa1-b703-318725b4d8af |
Raster Tiling | 3e146dd6-2b67-4d6e-a422-bb3d973e32ff |
Pléiades Display (Streaming) | 18d09f1a-3197-4c27-a15a-54d099c31435 |
NDVI | d0da4ac9-94c6-4905-80f5-c95e702ca878 |
Docker names (machine-readable) | Block IDs |
---|---|
oneatlas-spot-aoiclipped | 045019bb-06fc-4fa1-b703-318725b4d8af |
tiling | 3e146dd6-2b67-4d6e-a422-bb3d973e32ff |
oneatlas-pleiades-aoiclipped | 18d09f1a-3197-4c27-a15a-54d099c31435 |
ndvi | d0da4ac9-94c6-4905-80f5-c95e702ca878 |
Filter block IDs by name
Alternatively, get the block ID depending on the display name (change it according to your selected block):
curl -s GET -H "Authorization: Bearer $PTOKEN" https://api.up42.com/blocks \
| jq -r '.data[] | select(.displayName=="Pléiades Display (Streaming)") | .id'
Add workflow tasks
Add first block
Create a file containing the request body with the first workflow task (task1_request.json
). A task is associated with a block. The request body contains an array with one object that has the properties of the first block: the block name, the name of the parent block and the previously extracted block ID. By default, the first block has no parent. We strongly recommend using block names without spaces.
[
{
"name": "block1",
"parentName": null,
"blockId": "defb134b-ca00-4e16-afa0-639c6dc0c5fe"
}
]
Add the first task to the workflow by using the request body:
curl -s POST -H "Authorization: Bearer $PTOKEN" -H 'Content-Type: application/json' \
https://api.up42.com/projects/$PROJ/workflows/$NEW_WORKFLOW/tasks \
-d @task1_request.json | jq '.'
Get compatible blocks
Use the same request body to get the blocks compatible with the first block and extract their name and IDs. The block name has to be identical with the name specified as a query parameter (e.g. block1
).
curl -s POST -H "Authorization: Bearer $PTOKEN" -H 'Content-Type: application/json' \
https://api.up42.com/projects/$PROJ/workflows/compatible-blocks?parentTaskName=block1 \
-d @task1_request.json | jq '.data.blocks[] | .name,.blockId'
Add second block
To add the second task to the workflow, you need to first create a file containing the request body that includes all the tasks you previously added, along with the task you want to add next (task2_request.json
):
[
{
"name": "block1",
"parentName": null,
"blockId": "defb134b-ca00-4e16-afa0-639c6dc0c5fe"
},
{
"name": "block2",
"parentName": "block1",
"blockId": "903f0435-d638-475e-bbe9-53b5664a22a8"
}
]
Add the second task to the workflow by using the request body:
curl -s POST -H "Authorization: Bearer $PTOKEN" -H 'Content-Type: application/json' \
https://api.up42.com/projects/$PROJ/workflows/$NEW_WORKFLOW/tasks \
-d @task2_request.json | jq '.'
Get compatible blocks
Use the same request body to get the blocks compatible with the second block. The block name has to be identical with the name specified as a query parameter (e.g. block2
).
curl -s POST -H "Authorization: Bearer $PTOKEN" -H 'Content-Type: application/json' \
https://api.up42.com/projects/$PROJ/workflows/compatible-blocks?parentTaskName=block2 \
-d @task2_request.json | jq '.data.blocks[] | .name,.blockId'
Add third block
To add the third task to the workflow, you need to first create a file containing the request body that includes all the tasks you previously added, along with the task you want to add next (task3_request.json
):
[
{
"name": "block1",
"parentName": null,
"blockId": "defb134b-ca00-4e16-afa0-639c6dc0c5fe"
},
{
"name": "block2",
"parentName": "block1",
"blockId": "903f0435-d638-475e-bbe9-53b5664a22a8"
},
{
"name": "block3",
"parentName": "block2",
"blockId": "d0da4ac9-94c6-4905-80f5-c95e702ca878"
}
]
Add the third task to the workflow by using the request body:
curl -s POST -H "Authorization: Bearer $PTOKEN" -H 'Content-Type: application/json' \
https://api.up42.com/projects/$PROJ/workflows/$NEW_WORKFLOW/tasks \
-d @task3_request.json | jq '.'
You can also get the blocks compatible with the third block and add another task to the workflow. In this guide, we will only add 3 tasks to the workflow and then continue with configuring the job of the newly-created workflow.