asl-validator
Version:
Amazon States Language validator
221 lines (220 loc) • 8.11 kB
JSON
{
"$id": "http://asl-validator.cloud/map.json#",
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"Type": {
"type": "string",
"enum": ["Map"]
},
"Next": {
"type": "string"
},
"End": {
"enum": [true]
},
"Comment": {
"type": "string"
},
"OutputPath": {
"$ref": "paths.json#/definitions/asl_path"
},
"InputPath": {
"$ref": "paths.json#/definitions/asl_path"
},
"ResultPath": {
"$ref": "paths.json#/definitions/asl_result_path"
},
"ItemsPath": {
"$ref": "paths.json#/definitions/asl_ref_path"
},
"Label": {
"type": "string"
},
"MaxConcurrency": {
"type": "number",
"minimum": 0
},
"MaxConcurrencyPath": {
"$ref": "paths.json#/definitions/asl_ref_path"
},
"ItemReader": {
"$comment": "A Map State MAY have an \"ItemReader\" field, whose value MUST be a JSON object and is called the ItemReader Configuration",
"type": "object",
"properties": {
"Resource": {
"$comment": "The ItemReader Configuration MUST have a \"Resource\" field, whose value MUST be a URI that uniquely identifies the specific task to execute. The States language does not constrain the URI scheme nor any other part of the URI.",
"type": "string"
},
"Parameters": {
"$comment": "The ItemReader Configuration MAY have a \"Parameters\" field, whose value MUST be a Payload Template.",
"$ref": "paths.json#/definitions/asl_payload_template"
},
"ReaderConfig": {
"$comment": "The ItemReader Configuration MAY have a \"ReaderConfig\" field whose value is a JSON object which MAY have a \"MaxItems\" field which MUST be a positive integer.",
"type": "object",
"properties": {
"MaxItems": {
"$comment": "MAY have a \"MaxItems\" field which MUST be a positive integer",
"type": "integer",
"minimum": 1
},
"MaxItemsPath": {
"$comment": "A \"ReaderConfig\" field MAY have \"MaxItemsPath\" field which MUST be a Reference Path which, when resolved, MUST select a field whose value is a positive integer.",
"$ref": "paths.json#/definitions/asl_ref_path"
},
"Arguments": {
"$ref": "jsonata.json#/definitions/arguments"
}
},
"additionalProperties": true
}
},
"required": ["Resource"]
},
"ItemProcessor": {
"type": "object",
"allOf": [{ "$ref": "base-state-machine.json#" }],
"$comment": "The \"ItemProcessor\" field MAY contain a field named \"ProcessorConfig\", whose value MUST be a JSON object whose value is defined by the interpreter.",
"properties": {
"ProcessorConfig": {
"type": "object",
"oneOf": [
{
"properties": {
"Mode": {
"type": "string",
"enum": ["INLINE"]
}
},
"required": ["Mode"]
},
{
"properties": {
"Mode": {
"type": "string",
"enum": ["DISTRIBUTED"]
},
"ExecutionType": {
"type": "string",
"enum": ["EXPRESS", "STANDARD"]
}
},
"required": ["Mode", "ExecutionType"]
}
]
}
}
},
"Iterator": {
"$ref": "base-state-machine.json#"
},
"Parameters": {
"$ref": "paths.json#/definitions/asl_payload_template"
},
"ItemSelector": {
"$ref": "paths.json#/definitions/asl_payload_template"
},
"ItemBatcher": {
"type": "object",
"properties": {
"MaxItemsPerBatch": {
"type": "number",
"minimum": 0
},
"MaxItemsPerBatchPath": {
"$ref": "paths.json#/definitions/asl_ref_path"
},
"MaxInputBytesPerBatch": {
"type": "number",
"minimum": 0,
"maximum": 262144
},
"MaxInputBytesPerBatchPath": {
"$ref": "paths.json#/definitions/asl_ref_path"
},
"BatchInput": {
"$ref": "paths.json#/definitions/asl_payload_template"
}
}
},
"ResultSelector": {
"$ref": "paths.json#/definitions/asl_payload_template"
},
"ResultWriter": {
"$comment": "Allow any object for now and update in a subsequent PR to support S3 buckets and other outputs",
"type": "object"
},
"Retry": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ErrorEquals": {
"type": "array",
"items": {
"$ref": "errors.json#"
}
},
"IntervalSeconds": {
"type": "number",
"minimum": 0
},
"MaxAttempts": {
"type": "number",
"minimum": 0
},
"BackoffRate": {
"type": "number",
"minimum": 0
}
},
"required": ["ErrorEquals"]
}
},
"Catch": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ErrorEquals": {
"type": "array",
"items": {
"$ref": "errors.json#"
}
},
"Next": {
"type": "string"
}
},
"required": ["ErrorEquals", "Next"]
}
},
"ToleratedFailureCount": {
"type": "integer",
"minimum": 0
},
"ToleratedFailureCountPath": {
"$ref": "paths.json#/definitions/asl_ref_path"
},
"ToleratedFailurePercentage": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"ToleratedFailurePercentagePath": {
"$ref": "paths.json#/definitions/asl_ref_path"
},
"Output": {
"$ref": "jsonata.json#/definitions/output"
},
"Assign": {
"$ref": "jsonata.json#/definitions/assign"
},
"QueryLanguage": {
"$ref": "jsonata.json#/definitions/queryLanguage"
}
},
"required": ["Type"],
"additionalProperties": false
}