Worksteps
Last updated
Last updated
A workstep is a prototype of one stepwise state transition contained in a Workflow
. A Workstep
contains a Prover
that ingests data passed to the Workstep
and outputs a zero-knowledge proof that can be used to verify synchronization of data amongst Workgroup
participants.
Worksteps are useful for defining the real-world activities or operations to be used as synchronization check-points in a Workflow
. They provide context for the data required to instantiate, populate and execute a zero-knowledge Prover
as it relates to a corresponding business process.
When used in series, a verified claim from a previously derived proof
can be used as input for a subsequent Workstep
to ensure that a Workflow
cannot be completed if all participants are not in sync. As additional worksteps are completed and a Workflow
is completed, the proof
derived from the exit-workstep provides verifiable proof of synchronization amongst all participants.
A Prover
is a zero knowledge circuit that generates a method by which one party (the prover) can prove to another party (the verifier) that a given statement is true while the prover avoids conveying any additional information apart from the fact that the statement is indeed true. To learn more about provers, see Provide Privacy.
The prime-workstep is the leading workstep in a workflow. The trigger defined in the prime Workstep
instantiates a WorkflowInstance
and all subsequent WorkstepInstance
objects.
The exit-workstep is the final Workstep
included in a Workflow
. Once executed as a WorkstepInstance
, it outputs a recursive proof
encompassing all previous WorkstepInstanc
proofs. The proof
resulting from the execution exit-workstep must always be published to a network
.
A WorkstepInstance
is a run-time execution of a deployed Workstep
. All WorkstepInstance
executions included in a WorkflowInstance
are spawned when the conditions specified in the prime-workstep are met. A WorkstepInstance
shares the same schema as a Workstep
and is distinguishable by the presence of a value in the workstep_id
field.
Status
Definition
draft
undeployed Workstep
pending_deployment
Workstep
is currently being provisioned
deployed
Workstep
has been provisioned and is available for spawning of WorkstepInstance
deprecated
Workstep
has been removed from deployment and can no longer spawn WorkstepInstance
executions
The Workstep API is intended to function within the context of an Organization
acting as a Participant
in a Workgroup
.
Within this context, it is assumed that:
an Organization
scoped JWT is available for use
Organization
is a participant in a Workgroup
destination system of record data structure is known
originating system of record data structure is known
a Workflow
has been created
cardinality
int
position within sequence of worksteps in parent workflow
created_at
date/time
timestamp of Workstep
creation
deployed_at
date/time
timestamp of Workstep
deployment
description
string
brief descriptor of Workstep
id
uuid
id
of Workstep
participants
array
list of Participant
objects; indicates participants to take part in Workstep
prover_id
uuid
id
of prover
generated for use in WorkstepInstance
execution. When value is non-null, indicates record is WorkstepInstance
require_finality
boolean
when true
, resulting proof
will be published to a specified network
shield
string
address of target shield contract
status
string
current workstep status
workflow_id
uuid
id
of parent Workflow
workstep_id
uuid
id
of Workstep
used as prototype to spawn WorkstepInstance
; null value indicates record is Workstep
Returns a list of all Workstep
objects in the authorized scope
GET
https://baseline.provide.services/api/v1/workflow
Returns a list of all Workstep
objects in the authorized scope
filter_prototypes
boolean
when true
, prototypes (worksteps) are removed from the response
filter_instances
boolean
when true
, instances (workstep instances) are removed from the response
authorization*
string
bearer <JWT> scoped for an Organization
Creates a Workstep
. The cardinality
of a Workstep
is calculated by the service, as determined by the order of creation.
POST
https://baseline.provide.services/api/v1/workflow/:id/
Creates a Workstep
within a specified Workflow
. Workflow must be in draft
status in order to accept new worksteps
id*
uuid
id
of parent Workflow
authorization*
string
bearer <JWT> scoped for Organization
name*
string
name of Workstep
desciption
string
description of Workstep
status
string
current status of Workstep
. Should be draft
upon creation
require_finality
boolean
when true
, workstep will generate tokenized output to be written to a Network
specified in a Workgroup.
The terminal Workstep
in a Workflow
must be set to true
metadata*
object
arbitrary data containing a Prover
object
Retrieves detailed information for a specified Workstep
GET
https://baseline.provide.services/api/v1/workflows/:id/worksteps/:workstep_id
Retrieves details for a specified Workstep
id*
string
id
of Workflow
containing the desired Workstep
workstep_id*
string
id
of target Workstep
authorization*
string
bearer <JWT> scoped for an Organization
Updates a specified Workstep
PUT
https://baseline.provide.services/api/v1/workflows/:id/worksteps/:workstep_id
Creates a Workstep
within a specified Workflow
. Workflow
must be in draft
status in order to update included worksteps=
id*
uuid
id
of parent Workflow
workstep_id*
uuid
id
of target Workstep
authorization*
string
bearer <JWT> scoped for Organization
name*
string
name of Workstep
desciption
string
brief description of Workstep
status
string
current status of Workstep
. Should be draft
upon creation
require_finality
boolean
when true
, workstep will generate tokenized output to be written to a Network
specified in a Workgroup.
All exit-steps in a Workflow
must be set to true
metadata[]*
object
arbitrary data containing a Prover
object
Deletes a specified Workstep
PUT
https://baseline.provide.services/api/v1/workflows/:id/worksteps/:workstep_id
Deletes a Workstep
within a specified Workflow
. Workflow
must be in draft
status in order to delete included Workstep
id*
uuid
id
of parent Workflow
workstep_id*
uuid
id
of target Workstep
authorization*
string
bearer <JWT> scoped for Organization