{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/aws-backup/json-schema/aws-backup-start-search-job-input-schema.json",
  "title": "StartSearchJobInput",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/aws-backup-search-jobs-api-openapi.yml#/components/schemas/StartSearchJobInput",
  "type": "object",
  "properties": {
    "Tags": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "List of tags returned by the operation."
    },
    "Name": {
      "type": "string",
      "description": "Include alphanumeric characters to create a name for this search job."
    },
    "EncryptionKeyArn": {
      "type": "string",
      "description": "The encryption key for the specified search job."
    },
    "ClientToken": {
      "type": "string",
      "description": "Include this parameter to allow multiple identical calls for idempotency. A client token is valid for 8 hours after the first request that uses it is completed. After this time, any request with the same token is treated as a new request."
    },
    "SearchScope": {
      "$ref": "#/$defs/SearchScope"
    },
    "ItemFilters": {
      "$ref": "#/$defs/ItemFilters"
    }
  },
  "required": [
    "SearchScope"
  ],
  "$defs": {
    "BackupCreationTimeFilter": {
      "type": "object",
      "properties": {
        "CreatedAfter": {
          "type": "string",
          "description": "This timestamp includes recovery points only created after the specified time."
        },
        "CreatedBefore": {
          "type": "string",
          "description": "This timestamp includes recovery points only created before the specified time."
        }
      }
    },
    "EBSItemFilter": {
      "type": "object",
      "properties": {
        "FilePaths": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/StringCondition"
          },
          "description": "You can include 1 to 10 values. If one file path is included, the results will return only items that match the file path. If more than one file path is included, the results will return all items that match any of the file paths."
        },
        "Sizes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/LongCondition"
          },
          "description": "You can include 1 to 10 values. If one is included, the results will return only items that match. If more than one is included, the results will return all items that match any of the included values."
        },
        "CreationTimes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/TimeCondition"
          },
          "description": "You can include 1 to 10 values. If one is included, the results will return only items that match. If more than one is included, the results will return all items that match any of the included values."
        },
        "LastModificationTimes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/TimeCondition"
          },
          "description": "You can include 1 to 10 values. If one is included, the results will return only items that match. If more than one is included, the results will return all items that match any of the included values."
        }
      }
    },
    "ItemFilters": {
      "type": "object",
      "properties": {
        "S3ItemFilters": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/S3ItemFilter"
          },
          "description": "This array can contain CreationTimes, ETags, ObjectKeys, Sizes, or VersionIds objects."
        },
        "EBSItemFilters": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EBSItemFilter"
          },
          "description": "This array can contain CreationTimes, FilePaths, LastModificationTimes, or Sizes objects."
        }
      }
    },
    "LongCondition": {
      "type": "object",
      "properties": {
        "Value": {
          "type": "integer",
          "description": "The value of an item included in one of the search item filters."
        },
        "Operator": {
          "type": "string",
          "enum": [
            "EQUALS_TO",
            "NOT_EQUALS_TO",
            "LESS_THAN_EQUAL_TO",
            "GREATER_THAN_EQUAL_TO"
          ],
          "description": "A string that defines what values will be returned. If this is included, avoid combinations of operators that will return all possible values. For example, including both EQUALS_TO and NOT_EQUALS_TO with a value of 4 will return all values."
        }
      },
      "required": [
        "Value"
      ]
    },
    "S3ItemFilter": {
      "type": "object",
      "properties": {
        "ObjectKeys": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/StringCondition"
          },
          "description": "You can include 1 to 10 values. If one value is included, the results will return only items that match the value. If more than one value is included, the results will return all items that match any of the values."
        },
        "Sizes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/LongCondition"
          },
          "description": "You can include 1 to 10 values. If one value is included, the results will return only items that match the value. If more than one value is included, the results will return all items that match any of the values."
        },
        "CreationTimes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/TimeCondition"
          },
          "description": "You can include 1 to 10 values. If one value is included, the results will return only items that match the value. If more than one value is included, the results will return all items that match any of the values."
        },
        "VersionIds": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/StringCondition"
          },
          "description": "You can include 1 to 10 values. If one value is included, the results will return only items that match the value. If more than one value is included, the results will return all items that match any of the values."
        },
        "ETags": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/StringCondition"
          },
          "description": "You can include 1 to 10 values. If one value is included, the results will return only items that match the value. If more than one value is included, the results will return all items that match any of the values."
        }
      }
    },
    "SearchScope": {
      "type": "object",
      "properties": {
        "BackupResourceTypes": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "S3",
              "EBS"
            ]
          },
          "description": "The resource types included in a search. Eligible resource types include S3 and EBS."
        },
        "BackupResourceCreationTime": {
          "$ref": "#/$defs/BackupCreationTimeFilter"
        },
        "SourceResourceArns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Amazon Resource Name (ARN) that uniquely identifies the source resources."
        },
        "BackupResourceArns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Amazon Resource Name (ARN) that uniquely identifies the backup resources."
        },
        "BackupResourceTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "These are one or more tags on the backup (recovery point)."
        }
      },
      "required": [
        "BackupResourceTypes"
      ]
    },
    "StringCondition": {
      "type": "object",
      "properties": {
        "Value": {
          "type": "string",
          "description": "The value of the string."
        },
        "Operator": {
          "type": "string",
          "enum": [
            "EQUALS_TO",
            "NOT_EQUALS_TO",
            "CONTAINS",
            "DOES_NOT_CONTAIN",
            "BEGINS_WITH",
            "ENDS_WITH",
            "DOES_NOT_BEGIN_WITH",
            "DOES_NOT_END_WITH"
          ],
          "description": "A string that defines what values will be returned. If this is included, avoid combinations of operators that will return all possible values. For example, including both EQUALS_TO and NOT_EQUALS_TO with a value of 4 will return all values."
        }
      },
      "required": [
        "Value"
      ]
    },
    "TimeCondition": {
      "type": "object",
      "properties": {
        "Value": {
          "type": "string",
          "description": "This is the timestamp value of the time condition."
        },
        "Operator": {
          "type": "string",
          "enum": [
            "EQUALS_TO",
            "NOT_EQUALS_TO",
            "LESS_THAN_EQUAL_TO",
            "GREATER_THAN_EQUAL_TO"
          ],
          "description": "A string that defines what values will be returned. If this is included, avoid combinations of operators that will return all possible values. For example, including both EQUALS_TO and NOT_EQUALS_TO with a value of 4 will return all values."
        }
      },
      "required": [
        "Value"
      ]
    }
  }
}