{
  "StartAt": "ChooseHasher",
  "States": {
    "ChooseHasher": {
      "Type": "Choice",
      "Default": "StartHasherTask",
      "Choices": [
        {
          "Variable": "$.hasher_task_type",
          "StringEquals": "HASHER_LONG",
          "Next": "StartHasherTaskLong"
        }
      ]
    },
    "StartHasherTaskLong": {
      "Type": "Task",
      "Next": "Success",
      "TimeoutSeconds": 25200,
      "Resource": "arn:aws:states:::batch:submitJob.sync",
      "Parameters": {
        "JobDefinition.$": "$.config.JobDefinition",
        "JobName.$": "$.name",
        "JobQueue.$": "$.config.JobQueue",
        "ContainerOverrides": {
          "Command.$": "$.command",
          "Environment": []
        }
      },
      "ResultPath": "$.result",
      "Retry": [
        {
          "ErrorEquals": ["States.TaskFailed", "States.Timeout"],
          "IntervalSeconds": 3,
          "MaxAttempts": 3,
          "BackoffRate": 2
        }
      ],
      "Catch": [
        {
          "ErrorEquals": ["States.ALL"],
          "ResultPath": "$.error",
          "Next": "MetaContentStatusReset"
        }
      ]
    },
    "StartHasherTask": {
      "Type": "Task",
      "Next": "Success",
      "TimeoutSeconds": 7200,
      "Resource": "arn:aws:states:::batch:submitJob.sync",
      "Parameters": {
        "JobDefinition.$": "$.config.JobDefinition",
        "JobName.$": "$.name",
        "JobQueue.$": "$.config.JobQueue",
        "ContainerOverrides": {
          "Command.$": "$.command",
          "Environment": []
        }
      },
      "ResultPath": "$.result",
      "Retry": [
        {
          "ErrorEquals": ["States.TaskFailed", "States.Timeout"],
          "IntervalSeconds": 3,
          "MaxAttempts": 3,
          "BackoffRate": 2
        }
      ],
      "Catch": [
        {
          "ErrorEquals": ["States.ALL"],
          "ResultPath": "$.error",
          "Next": "MetaContentStatusReset"
        }
      ]
    },
    "MetaContentStatusReset": {
      "Type": "Task",
      "Resource": "#{slzMetaContentStatusReset}",
      "Parameters": {
        "uow_id.$": "$.uow_id",
        "unit_of_work_id.$": "$.unit_of_work_id",
        "content_name.$": "$.content_name",
        "context.$": "$.context",
        "optional_config.$": "$.optional_config"
      },
      "Next": "Failed",
      "Retry": [
        {
          "ErrorEquals": ["States.TaskFailed"],
          "IntervalSeconds": 3,
          "MaxAttempts": 3,
          "BackoffRate": 2
        }
      ],
      "Catch": [
        {
          "ErrorEquals": [ "States.ALL" ],
          "ResultPath": "$.info.error",
          "Next": "Failed"
        }
      ]
    },
    "Failed": {
      "Type": "Fail"
    },
    "Success": {
      "Type": "Succeed"
    }
  }
}
