{
  "name"      : "Amazon S3",
  "desc"      : "Forwards data to Amazon S3.",
  "help_token": "ICDX_Configuration_Forwarders_AMAZONS3",
  "attributes": {
    "config": {
      "attributes": {
        "amazon_s3": {
          "name"       : "Amazon S3 Destination",
          "desc"       : "The configuration for forwarding to Amazon S3.",
          "requirement": "required",
          "type"       : "object",
          "attributes" : {
            "aws_region"                 : {
              "name"       : "Region",
              "desc"       : "The AWS region where the Amazon S3 bucket is located.",
              "requirement": "required",
              "max_len"    : 64,
              "type"       : "string"
            },
            "aws_access_key_id"          : {
              "name"       : "Access Key ID",
              "desc"       : "The AWS access key identifier part of the security credential.",
              "requirement": "required",
              "type"       : "string"
            },
            "aws_secret_access_key"      : {
              "name"       : "Secret Access Key",
              "desc"       : "The AWS secret access key part of the security credential.",
              "requirement": "required",
              "type"       : "string",
              "subtype"    : "password"
            },
            "aws_s3_bucket"              : {
              "name"       : "S3 Bucket",
              "desc"       : "The Amazon S3 bucket to use for uploading events. The bucket must already exist.",
              "requirement": "required",
              "max_len"    : 64,
              "type"       : "string"
            },
            "aws_s3_object_key_prefix"   : {
              "name"       : "Object Key Prefix",
              "desc"       : "Optional prefix for each Amazon S3 object key. Only \"safe characters\" are allowed.",
              "requirement": "optional",
              "advanced"   : false,
              "type"       : "string",
              "default"    : "events/"
            },
            "aws_s3_object_tags"         : {
              "name"       : "Object Tags",
              "desc"       : "Optional comma-separated list of tags of form \"tag=value\" to add to uploaded objects.",
              "requirement": "optional",
              "advanced"   : false,
              "type"       : "string"
            },
            "aws_s3_object_user_metadata": {
              "name"       : "Object User-Defined Metadata",
              "desc"       : "Optional comma-separated list of user-defined metadata of form \"key=value\" to add to uploaded objects. Key-value pairs must conform to US-ASCII.",
              "requirement": "optional",
              "advanced"   : false,
              "type"       : "string"
            },
            /*
            "aws_s3_endpoint_url"             : {
              "name"       : "S3 Endpoint URL",
              "desc"       : "Set a specific Amazon S3 endpoint URL. This is only needed for a non-standard service endpoint.",
              "requirement": "optional",
              "type"       : "string"
            },
            "aws_s3_path_style_access_enabled": {
              "name"       : "Enable S3 Path-Style Access",
              "desc"       : "Set this to force path-style access. The default behavior is to detect which access style to use (path-style or virtual-hosted-style) based on the endpoint and bucket.",
              "requirement": "optional",
              "type"       : "boolean",
              "default"    : false
            },
            "aws_signer_override"             : {
              "name"       : "Signer Override",
              "desc"       : "Set the class name of the signer to use for signing requests. Normally the defaults are sufficient.",
              "requirement": "optional",
              "type"       : "string"
            },
            */
            "buffer_threshold_size_mb"   : {
              "name"       : "Buffer Threshold Size",
              "desc"       : "After at least this much data has been buffered, it will be uploaded.",
              "requirement": "optional",
              "type"       : "integer",
              "enum"       : {
                "5"  : {"name": "5 MB"},
                "10" : {"name": "10 MB"},
                "100": {"name": "100 MB"},
                "200": {"name": "200 MB"}
              },
              "default"    : 100
            },
            "max_age_seconds"            : {
              "name"       : "Maximum Age",
              "desc"       : "The maximum age after data is first buffered before it is uploaded.",
              "requirement": "optional",
              "type"       : "integer",
              "enum"       : {
                "10"   : {"name": "10 seconds"},
                "60"   : {"name": "1 minute"},
                "600"  : {"name": "10 minutes"},
                "3600" : {"name": "1 hour"},
                "28800": {"name": "8 hours"},
                "86400": {"name": "1 day"}
              },
              "default"    : 600
            },
            "idle_timeout_seconds"       : {
              "name"       : "Idle Timeout",
              "desc"       : "The idle time after which buffered data is uploaded.",
              "requirement": "optional",
              "type"       : "integer",
              "enum"       : {
                "10"   : {"name": "10 seconds"},
                "60"   : {"name": "1 minute"},
                "600"  : {"name": "10 minutes"},
                "3600" : {"name": "1 hour"},
                "28800": {"name": "8 hours"},
                "86400": {"name": "1 day"}
              },
              "default"    : 600
            },
            "use_proxy"                  : {
              "name"       : "Use Proxy Settings",
              "desc"       : "Use system proxy settings.",
              "requirement": "optional",
              "type"       : "boolean",
              "default"    : true
            }
          }
        }
      }
    }
  }
}
