Create workflows

Create workflows in a project using the API.


Overview

A workflow is a sequence of data and processing blocks. It defines an order for operations.

A workflow starts with a data block, which may be followed by processing blocks. You can add one data block and up to five processing blocks to a workflow.

When you add a block to your workflow, it becomes a workflow task.

You can also create and manage workflows using the console.

Create or update a workflow

To create a workflow or update its name or description, call the /projects/{project_id}/workflows endpoint with your project ID as a path parameter.

Request

POST /projects/{project_id}/workflows HTTP/1.1
Host: api.up42.com
Content-Type: application/json
Authorization: Bearer {token}
ParameterOverview
idstring
The workflow ID.

To create a workflow, omit this parameter or set it to null. To update a workflow, use the ID of an existing workflow.
namestring / required
The name of the workflow (up to 100 characters).
descriptionstring
A description of the workflow.
See request example
{
  "id": "b7a3e0d9-64b3-4c88-910e-8d1e3082baf7",
  "name": "A workflow for pansharpening Pléiades imagery.",
  "description": "A workflow for getting pansharpened images from Pléiades with all the available bands."
}

Response


See response example
{
  "data": {
    "id": "fc88746e-98b0-4fa7-b750-2f96cde0f385",
    "name": "My brand new workflow with Pléiades and Pansharpening.",
    "description": "This workflow is used to generate pansharpened images.",
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "createdBy": {
      "id": "c744321f-7f29-4c28-b06f-577bf0290560",
      "type": "API_KEY"
    },
    "updatedBy": {
      "id": "c744321f-7f29-4c28-b06f-577bf0290560",
      "type": "API_KEY"
    },
    "totalProcessingTime": 0
  },
  "error": null
}

ParameterOverview
data.idstring
The workflow ID.
data.namestring
The name of the workflow.
data.descriptionstring
A description of the workflow.
data.createdAtstring
The timestamp when the workflow was created.
data.updatedAtstring
The timestamp when the workflow was last updated.
data.createdByobject
Information about the user who performed the action.
data.createdBy.idstring
The ID of the user who performed the action.
data.createdBy.typestring
The type of the user who performed the action.
data.updatedByobject
Information about the user who performed the action.
data.updatedBy.idstring
The ID of the user who performed the action.
data.updatedBy.typestring
The type of the user who performed the action.
data.totalProcessingTimeinteger
The total duration of the processing time for the workflow.

Create or update workflow tasks

You can add one data block and up to five processing blocks to a workflow. When you add a block to your workflow, it becomes a workflow task.

To create or update workflow tasks, call the /projects/{project_id}/workflows/{workflow_id}/tasks endpoint with your project ID and the workflow ID as path parameters.

Request

POST /projects/{project_id}/workflows/{workflow_id}/tasks HTTP/1.1
Host: api.up42.com
Content-Type: application/json
Authorization: Bearer {token}
ParameterOverview
namestring / required
The name of the task (up to 100 characters).
parentNamestring
The name of the parent task. If it's the first task of the workflow, omit this parameter or set it to null.
blockIdstring / required
The block ID.
See request example
[
  {
    "name": "first block",
    "parentName": null,
    "blockId": "defb134b-ca00-4e16-afa0-639c6dc0c5fe"
  },
  {
    "name": "second block",
    "parentName": "first block",
    "blockId": "903f0435-d638-475e-bbe9-53b5664a22a8"
  }
]

Response

The response is an array of the workflow tasks.


See response example
{
  "error": null,
  "data": [
    {
      "id": "7289644c-2ad8-4b2c-a3c3-e01996723b60",
      "displayId": "7289644c",
      "createdAt": "2020-02-09T20:32:00.383Z",
      "updatedAt": "2020-02-09T20:32:00.383Z",
      "createdBy": {
        "id": "71d199bf-b434-48d6-b63d-0fb80cee3c1e",
        "type": "API_KEY"
      },
      "updatedBy": {
        "id": "71d199bf-b434-48d6-b63d-0fb80cee3c1e",
        "type": "API_KEY"
      },
      "name": "first block",
      "parentsIds": [],
      "blockName": "oneatlas-pleiades-fullscene",
      "blockVersionTag": "2.5.2",
      "block": {
        "id": "defb134b-ca00-4e16-afa0-639c6dc0c5fe",
        "createdAt": "2019-09-09T15:00:45.418Z",
        "updatedAt": "2021-06-21T09:55:00.129Z",
        "createdBy": {
          "id": "eff16ad8-7fc3-46c7-b17b-952d7cb14afe",
          "type": "USER"
        },
        "updatedBy": {
          "id": "eff16ad8-7fc3-46c7-b17b-952d7cb14afe",
          "type": "USER"
        },
        "name": "oneatlas-pleiades-fullscene",
        "displayName": "Pléiades Reflectance (Download)",
        "description": "Pléiades imagery in its original DIMAP format. RGB, NIR (2 m) and panchromatic (0.5 m) bands with 12 bits.",
        "containerUrl": "registry.up42.com/marketplace/oneatlas-pleiades-fullscene:xadbCCUH6eqruNJfS4HfcEyneJliUCsojG5Xs9K0",
        "inputCapabilities": [],
        "outputCapabilities": [],
        "provider": "OneAtlas",
        "providerWebsite": "https://oneatlas.airbus.com/",
        "providerLogoUrl": "https://metadata.up42.com/defb134b-ca00-4e16-afa0-639c6dc0c5fe/Airbus_company_logo1576514591017.jpeg",
        "tags": [
          "Oil, Gas, Minerals, and Energy",
          "Maritime",
          "Optical",
          "Transportation",
          "Infrastructure and Utilities",
          "Satellite",
          "Insurance and Financial Services",
          "Environmental Protection",
          "Global",
          "Land Use and Management",
          "High Revisit",
          "Real Estate",
          "Agriculture"
        ],
        "isPublic": true,
        "isPublicVersion": true,
        "isValid": true,
        "isRestricted": false,
        "isAccessGranted": true,
        "isCreditPurchaseRequired": true,
        "isLimitStreamingDataAccess": false,
        "parameters": {
          "ids": {
            "type": "array",
            "default": null
          },
          "bbox": {
            "type": "array",
            "default": null
          },
          "time": {
            "type": "dateRange",
            "default": "2018-01-01T00:00:00+00:00/2020-12-31T23:59:59+00:00"
          },
          "limit": {
            "type": "integer",
            "default": 1,
            "maximum": 500,
            "minimum": 1
          },
          "contains": {
            "type": "geometry"
          },
          "asset_ids": {
            "type": "array",
            "default": null
          },
          "intersects": {
            "type": "geometry"
          },
          "time_series": {
            "type": "array",
            "default": null
          },
          "max_cloud_cover": {
            "type": "integer",
            "default": 100,
            "maximum": 100,
            "minimum": 0
          }
        },
        "type": "DATA",
        "isDryRunSupported": true,
        "version": "2.5.2",
        "metadata": {
          "overview": "Pléiades 1A/1B are very-high resolution twin satellites offering 0.5m resolution products. For more information about this data, please check the block's [documentation](https://docs.up42.com/up42-blocks/data/pleiades-download.html) or see the [provider website](https://oneatlas.airbus.com/).",
          "termsAndConditionsUrl": "https://metadata.up42.com/OneAtlas/r13117_9_eula-pleiades-vuk-october2017.pdf",
          "blockThumbnailUrl": "https://metadata.up42.com/OneAtlas/Pleiades_HR_AOI/0_Pleiades_1A-1B_Avatar.jpg",
          "pricingStrategy": {
            "id": "ec5be5e5-dbc7-4949-b38a-4fb85e2ecbe4",
            "displayId": "ec5be5e5",
            "createdAt": "2020-02-04T09:55:00.118Z",
            "updatedAt": "2020-02-04T09:55:00.118Z",
            "createdBy": {
              "id": "eff16ad8-7fc3-46c7-b17b-952d7cb14afe",
              "type": "USER"
            },
            "updatedBy": {
              "id": "eff16ad8-7fc3-46c7-b17b-952d7cb14afe",
              "type": "USER"
            },
            "type": "SQUARE_KM_OUTPUT",
            "credits": 1000
          },
          "blockPricingStrategy": null,
          "blockMarketplaceSampleData": [
            {
              "id": "185a8f86-791b-4a3d-95a3-a2d5ccd6f935",
              "displayId": "185a8f86",
              "createdAt": "2020-02-04T09:55:00.120Z",
              "updatedAt": "2020-02-04T09:55:00.120Z",
              "createdBy": {
                "id": "eff16ad8-7fc3-46c7-b17b-952d7cb14afe",
                "type": "USER"
              },
              "updatedBy": {
                "id": "eff16ad8-7fc3-46c7-b17b-952d7cb14afe",
                "type": "USER"
              },
              "value": "https://metadata.up42.com/OneAtlas/Pleiades_HR_AOI/Pleiades_1A-1B_China_State_of_Jin.jpg",
              "type": "IMAGE"
            },
            {
              "id": "6643110f-cdc6-4a67-8d0c-178c16a0e042",
              "displayId": "6643110f",
              "createdAt": "2020-02-04T09:55:00.123Z",
              "updatedAt": "2020-02-04T09:55:00.123Z",
              "createdBy": {
                "id": "eff16ad8-7fc3-46c7-b17b-952d7cb14afe",
                "type": "USER"
              },
              "updatedBy": {
                "id": "eff16ad8-7fc3-46c7-b17b-952d7cb14afe",
                "type": "USER"
              },
              "value": "https://metadata.up42.com/OneAtlas/Pleiades_HR_AOI/Pleiades_1A-1B_Egypt_Cairo.jpg",
              "type": "IMAGE"
            },
            {
              "id": "8101012a-2d0b-407b-a8cf-9054dfb8b060",
              "displayId": "8101012a",
              "createdAt": "2020-02-04T09:55:00.125Z",
              "updatedAt": "2020-02-04T09:55:00.125Z",
              "createdBy": {
                "id": "eff16ad8-7fc3-46c7-b17b-952d7cb14afe",
                "type": "USER"
              },
              "updatedBy": {
                "id": "eff16ad8-7fc3-46c7-b17b-952d7cb14afe",
                "type": "USER"
              },
              "value": "https://metadata.up42.com/OneAtlas/Pleiades_HR_AOI/Pleiades_1A-1B_French_Polynesia_Tupai_Atoll.jpg",
              "type": "IMAGE"
            },
            {
              "id": "5e553d84-78f0-49b5-8033-a1ecac93cadb",
              "displayId": "5e553d84",
              "createdAt": "2020-02-04T09:55:00.126Z",
              "updatedAt": "2020-02-04T09:55:00.126Z",
              "createdBy": {
                "id": "eff16ad8-7fc3-46c7-b17b-952d7cb14afe",
                "type": "USER"
              },
              "updatedBy": {
                "id": "eff16ad8-7fc3-46c7-b17b-952d7cb14afe",
                "type": "USER"
              },
              "value": "https://metadata.up42.com/OneAtlas/Pleiades_HR_AOI/Pleiades_1A-1B_Japan_Cycle_Tree.jpg",
              "type": "IMAGE"
            },
            {
              "id": "b26571d1-95fd-4ab2-a82e-f75a1fed733d",
              "displayId": "b26571d1",
              "createdAt": "2020-02-04T09:55:00.127Z",
              "updatedAt": "2020-02-04T09:55:00.127Z",
              "createdBy": {
                "id": "eff16ad8-7fc3-46c7-b17b-952d7cb14afe",
                "type": "USER"
              },
              "updatedBy": {
                "id": "eff16ad8-7fc3-46c7-b17b-952d7cb14afe",
                "type": "USER"
              },
              "value": "https://metadata.up42.com/OneAtlas/Pleiades_HR_AOI/Pleiades_1A-1B_US_Los_Angeles.jpg",
              "type": "IMAGE"
            }
          ]
        },
        "machineName": "SMALL",
        "manifestVersion": 2,
        "capabilities": {
          "input": {},
          "output": {
            "raster": {
              "up42_standard": {
                "bands": ["red", "green", "blue", "nir", "pan"],
                "dtype": "uint16",
                "format": "DIMAP",
                "sensor": "Pleiades",
                "resolution": 0.5,
                "processing_level": "l2"
              }
            }
          }
        }
      },
      "environment": null
    }
  ]
}

Get compatible blocks in a workflow

To get a list of blocks that are compatible with a workflow task, call the /projects/{project_id}/workflows/{workflow_id}/compatible-blocks with your project ID and workflow ID as path parameters.

If you don't submit any parent or child tasks in query parameters, you'll get a list of all blocks that have empty input capabilities.

Request

GET /projects/{project_id}/workflows/{workflow_id}/compatible-blocks HTTP/1.1
Host: api.up42.com
Authorization: Bearer {token}
Query parameterOverview
parentTaskNamestring
Use to get a list of blocks that can be added to a workflow after the task with this name.
childTaskNamestring
Use to get a list of blocks that can be added to a workflow before the task with this name.

Response


See response example
{
  "error": null,
  "data": {
    "blocks": [
      {
        "blockId": "c94bb4cd-8ee2-40df-ba76-d332b8f48c6a",
        "name": "data-conversion-dimap",
        "versionTag": "1.4.3"
      }
    ]
  }
}

ParameterOverview
data.blocks.blockIdstring
The ID of the block compatible with the workflow task.
data.blocks.namestring
The name of the block compatible with the workflow task.
data.blocks.versionTagstring
The version of the block compatible with the workflow task.

Troubleshooting

How many blocks can I add to a workflow?

You can add one data block and up to five processing blocks to a workflow.