{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/amazon-neptune/json-schema/amazon-neptune-start-export-task-input-schema.json",
  "title": "StartExportTaskInput",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/amazon-neptune-exporttasks-api-openapi.yml#/components/schemas/StartExportTaskInput",
  "type": "object",
  "properties": {
    "graphIdentifier": {
      "type": "string",
      "description": "The source graph identifier of the export task."
    },
    "roleArn": {
      "type": "string",
      "description": "The ARN of the IAM role that will allow data to be exported to the destination."
    },
    "format": {
      "type": "string",
      "enum": [
        "PARQUET",
        "CSV"
      ],
      "description": "The format of the export task."
    },
    "destination": {
      "type": "string",
      "description": "The Amazon S3 URI where data will be exported to."
    },
    "kmsKeyIdentifier": {
      "type": "string",
      "description": "The KMS key identifier of the export task."
    },
    "parquetType": {
      "type": "string",
      "enum": [
        "COLUMNAR"
      ],
      "description": "The parquet type of the export task."
    },
    "exportFilter": {
      "$ref": "#/$defs/ExportFilter"
    },
    "tags": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "Tags to be applied to the export task."
    }
  },
  "required": [
    "graphIdentifier",
    "roleArn",
    "format",
    "destination",
    "kmsKeyIdentifier"
  ],
  "$defs": {
    "ExportFilter": {
      "type": "object",
      "properties": {
        "vertexFilter": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/ExportFilterElement"
          },
          "description": "Used to specify filters on a per-label basis for vertices. This allows you to control which vertex labels and properties are included in the export."
        },
        "edgeFilter": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/ExportFilterElement"
          },
          "description": "Used to specify filters on a per-label basis for edges. This allows you to control which edge labels and properties are included in the export."
        }
      }
    },
    "ExportFilterElement": {
      "type": "object",
      "properties": {
        "properties": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/ExportFilterPropertyAttributes"
          },
          "description": "Each property is defined by a key-value pair, where the key is the desired output property name (e.g. \"name\"), and the value is an object."
        }
      }
    },
    "ExportFilterPropertyAttributes": {
      "type": "object",
      "properties": {
        "outputType": {
          "type": "string",
          "description": "Specifies the data type to use for the property in the exported data (e.g. \"String\", \"Int\", \"Float\"). If a type is not provided, the export process will determine the type. If a given property is present as multiple types (e.g. one vertex has \"height\" stored as a double, and another edge has it stored as a string), the type will be of Any type, otherwise, it will be the type of the property as present in vertices."
        },
        "sourcePropertyName": {
          "type": "string",
          "description": "The name of the property as it exists in the original graph data. If not provided, it is assumed that the key matches the desired sourcePropertyName."
        },
        "multiValueHandling": {
          "type": "string",
          "enum": [
            "TO_LIST",
            "PICK_FIRST"
          ],
          "description": "Specifies how to handle properties that have multiple values. Can be either TO_LIST to export all values as a list, or PICK_FIRST to export the first value encountered. If not specified, the default value is PICK_FIRST."
        }
      }
    }
  }
}