{
"type": "object",
"properties": {
"id":{
"type": "string"
},
"data":{
"type": "object",
"properties": {
"path":{
"type": "string",
"description": "URL path from which the saga is called, in a single /Path format"
},
"name":{
"type": "string",
"description": "Logical name of the saga"
},
"description":{
"type": "string",
"description": "Logical description of what the saga does"
},
"allowedFor":{
"type": "array",
"description": "List of runners on which the saga is allowed to run",
"items": {
"type": "string",
"description": "ID of the runner"
}
},
"schema":{
"type": "object",
"properties": {
"input": {
"type": "object",
"description": "JSON schema representing input data model and validation rules"
},
"output": {
"type": "object",
"description": "JSON schema representing output data model and example values for mocking APIs"
}
}
},
"steps":{
"type": "array",
"description": "List of connected steps in saga, which create a sequential execution logic for the flow",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Unique ID of the step inside the saga, typically assigned in a sequential manner"
},
"name":{
"type": "string",
"description": "Logical name of the step"
},
"description": {
"type": "string",
"description": "Logical description of the step"
},
"type": {
"type": "string",
"description": "Type of the step",
"enum": ["START", "FINISH", "FAIL", "EVENT", "CONDITION", "TRANSFORM"]
},
"position": {
"type": "object",
"description": "Visual positioning of the step in flow diagram. Try to use a logical layout, where the steps have spacing between them. Each step has 100 width and 50 height.",
"properties":{
"x":{
"type": "number",
"description": "X position on the diagram"
},
"y":{
"type": "number",
"description": "Y position on the diagram"
}
}
},
"links": {
"type": "array",
"description": "Links from this step to others defining next step to execute after this step".
"items":{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Unique ID of the condition inside the saga, typically assigned in a sequential manner"
},
"toStepID": {
"type": "integer",
"description": "Next step to execute"
},
"conditionValues":{
"type": "array",
"description": "Value for which this link should be traversed. This value depends on the output produced by conditionClass of the originating step. * can be used as a wildcard for a default 'else' branch. If the previous step is an event type step, SUCCESS and FAIL values can be used to route failed events to a different next step, but only if the user explicitly mentions following a different flow on failure. You do not need to provide conditionValues if there is a single next step and it will always be executed."
}
}
}
}
}
}
},
}
}
}
}