{
  "Comment": "Video approval workflow.",
  "StartAt": "StartWorkflow",
  "TimeoutSeconds": 345600,
  "States": {
    "StartWorkflow": {
      "Type": "Task",
      "Resource": "${daemon_video_start_workflow_arn}",
      "HeartbeatSeconds": 60,
      "TimeoutSeconds": 3600,
      "Retry": [{
        "ErrorEquals": ["States.Timeout"],
        "IntervalSeconds": 60,
        "MaxAttempts": 5,
        "BackoffRate": 2.0
      }],
      "Next": "GetInputs"
    },
    "GetInputs": {
      "Type": "Parallel",
      "Next": "CreateMezzanines",
      "Branches": [
        {
          "StartAt": "GetCreateMezzaninesInputs",
          "States": {
            "GetCreateMezzaninesInputs": {
              "Type": "Task",
              "Resource": "${daemon_video_get_create_mezzanines_inputs_arn}",
              "HeartbeatSeconds": 60,
              "TimeoutSeconds": 3600,
              "Retry": [{
                "ErrorEquals": ["States.Timeout"],
                "IntervalSeconds": 60,
                "MaxAttempts": 5,
                "BackoffRate": 2.0
              }],
              "End": true
            }
          }
        },
        {
          "StartAt": "GetProductMetadata",
          "States": {
            "GetProductMetadata": {
              "Type": "Task",
              "Resource": "${daemon_video_get_product_metadata_arn}",
              "HeartbeatSeconds": 60,
              "TimeoutSeconds": 3600,
              "Retry": [{
                "ErrorEquals": ["States.Timeout"],
                "IntervalSeconds": 60,
                "MaxAttempts": 5,
                "BackoffRate": 2.0
              }],
              "End": true
            }
          }
        }
      ]
    },
    "CreateMezzanines": {
      "Type": "Task",
      "Resource": "${daemon_video_create_mezzanines_arn}",
      "HeartbeatSeconds": 60,
      "TimeoutSeconds": 3600,
      "Retry": [{
        "ErrorEquals": ["States.Timeout"],
        "IntervalSeconds": 60,
        "MaxAttempts": 5,
        "BackoffRate": 2.0
      }],
      "Next": "CheckIfCreateMezzaninesIsDoneAfterDelay"
    },
    "CheckIfCreateMezzaninesIsDone": {
      "Type": "Task",
      "Resource": "${daemon_video_is_create_mezzanines_done_arn}",
      "HeartbeatSeconds": 60,
      "TimeoutSeconds": 3600,
      "Retry": [{
        "ErrorEquals": ["States.Timeout"],
        "IntervalSeconds": 60,
        "MaxAttempts": 5,
        "BackoffRate": 2.0
      }],
      "Next": "ContinueOnlyIfCreateMezzaninesIsDone"
    },
    "ContinueOnlyIfCreateMezzaninesIsDone": {
      "Type" : "Choice",
      "Choices": [
        {
          "Variable": "$.is_create_mezzanines_done",
          "BooleanEquals": true,
          "Next": "ExtractProResMezzanineMetadata"
        },
        {
          "Variable": "$.is_create_mezzanines_done",
          "BooleanEquals": false,
          "Next": "CheckIfCreateMezzaninesIsDoneAfterDelay"
        }
      ]
    },
    "CheckIfCreateMezzaninesIsDoneAfterDelay": {
      "Type": "Wait",
      "Seconds": 60,
      "Next": "CheckIfCreateMezzaninesIsDone"
    },
    "ExtractProResMezzanineMetadata": {
      "Type": "Task",
      "Resource": "${daemon_video_extract_prores_mezzanine_metadata_arn}",
      "HeartbeatSeconds": 60,
      "TimeoutSeconds": 3600,
      "Retry": [{
        "ErrorEquals": ["States.Timeout"],
        "IntervalSeconds": 60,
        "MaxAttempts": 5,
        "BackoffRate": 2.0
      }],
      "Next": "WriteMezzVideoLocationsToVideoAssetTable"
    },
    "WriteMezzVideoLocationsToVideoAssetTable": {
      "Type": "Task",
      "Resource": "${daemon_video_write_mezz_video_locations_to_video_asset_table_arn}",
      "HeartbeatSeconds": 60,
      "TimeoutSeconds": 3600,
      "Retry": [{
        "ErrorEquals": ["States.Timeout"],
        "IntervalSeconds": 60,
        "MaxAttempts": 5,
        "BackoffRate": 2.0
      }],
      "Next": "NewConvertThumbnailsToTIFFs"
    },
    "NewConvertThumbnailsToTIFFs": {
      "Type": "Task",
      "Resource": "${daemon_video_convert_thumbnails_to_tiffs_arn}",
      "HeartbeatSeconds": 60,
      "TimeoutSeconds": 3600,
      "Retry": [{
        "ErrorEquals": ["States.Timeout"],
        "IntervalSeconds": 60,
        "MaxAttempts": 5,
        "BackoffRate": 2.0
      }],
      "Next": "NewWriteThumbnailLocationsToVideoAssetTable"
    },
    "NewWriteThumbnailLocationsToVideoAssetTable": {
      "Type": "Task",
      "Resource": "${daemon_video_write_thumbnail_locations_to_video_asset_table_arn}",
      "HeartbeatSeconds": 60,
      "TimeoutSeconds": 3600,
      "Retry": [{
        "ErrorEquals": ["States.Timeout"],
        "IntervalSeconds": 60,
        "MaxAttempts": 5,
        "BackoffRate": 2.0
      }],
      "Next": "MarkVideoProductAsApproved"
    },
    "MarkVideoProductAsApproved": {
      "Type": "Task",
      "Resource": "${daemon_video_mark_video_product_as_approved_arn}",
      "HeartbeatSeconds": 60,
      "TimeoutSeconds": 3600,
      "Retry": [{
        "ErrorEquals": ["States.Timeout"],
        "IntervalSeconds": 60,
        "MaxAttempts": 5,
        "BackoffRate": 2.0
      }],
      "Next": "EndWorkflow"
    },
    "EndWorkflow": {
      "Type": "Task",
      "Resource": "${daemon_video_end_workflow_arn}",
      "HeartbeatSeconds": 60,
      "TimeoutSeconds": 3600,
      "Retry": [{
        "ErrorEquals": ["States.Timeout"],
        "IntervalSeconds": 60,
        "MaxAttempts": 5,
        "BackoffRate": 2.0
      }],
      "End": true
    }
  }
}
