How steps work
Every step is a Python class extending ipaascore.BaseStep. HTTP steps go
through Shared parameters: HTTPBaseStep first, which supplies authentication,
pagination, SSL/mTLS and retry behaviour.
A step declares its configuration parameters in __init__ and implements
execute():
class MyStep(BaseStep):
def __init__(self):
super().__init__()
self.friendly_name = "My Step"
self.description = "What this step does"
self.version = "1.0.0"
self.add_step_parameter_from_object(some_param)
def execute(self):
value = self.get_parameter("param_name")
upstream = self.get_data_from_step_by_name("step_id")
self.save_data_for_next_step(result)
Steps communicate through a data pipeline. A step reads its own configuration
with get_parameter(...), optionally reads a previous step’s output, and hands
results downstream with save_data_for_next_step(...). The “Outputs” section
on each step page describes what that step puts into the pipeline.
For the platform’s own account of the step model and the full set of data-passing functions, see Creating a Step in the Skylar Automation developer documentation. This reference does not repeat it; it documents what each individual step accepts and returns.
Parameters
Parameters are not declared in the class body or in a method signature – they are registered at runtime, either from a shared parameter object or inline:
# shared, defined once in util/request_params.py and reused across steps
self.add_step_parameter_from_object(prefix_url_param)
# step-specific
self.new_step_parameter(
name="bearer_token",
description="Token for authorization",
required=False,
param_type=parameter_types.StringParameterShort(password=True),
)
Never hardcode a parameter name in step logic; reference the parameter object’s
.name instead.
Parameter types
The platform’s parameter_types classes are normalised in this reference as
follows.
Source |
Documented type |
|---|---|
|
string |
|
string (long) |
|
number |
|
boolean |
|
json |
|
array of strings |
|
enum – allowed values are listed inline |
|
jinja2 template |
|
annotated |
Three tiers of parameter
Any given step accepts parameters from three places, and each step page shows only the first:
- Its own
What the step registers in its own
__init__. This is the table on the step page.- Inherited from its base class
For the REST and GraphQL steps, the 30-odd shared HTTP parameters from Shared parameters: HTTPBaseStep. Linked rather than repeated – otherwise the same table would appear on seven pages.
- Platform parameters
The ten registered by the platform’s
BaseStepitself (name,file,queue,output_to,data_fromand the fiveretry_*). Identical on every step in every SyncPack, so they live on one page: Platform parameters.
So configuring a REST step means reading its own table, plus Shared parameters: HTTPBaseStep, plus Platform parameters.
Version introduced
Two different version numbers appear on each page, and they are not the same thing:
- Step version
The
self.versionattribute inside the step class. It is maintained by hand and tracks changes to that individual step.- Introduced in (the
versionaddedmarker) The SyncPack release the step first shipped in, derived from git history: the earliest release tag whose tree contains the step’s file. This is the number that matters when pinning a SyncPack dependency.
This is not a step class attribute. It exists only in this documentation, computed at build time – you will not find it anywhere in the source, and there is nothing to keep up to date.