{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://api.apis.io/schemas/amazon-ebs-volume.json",
  "title": "Amazon EBS Volume",
  "description": "Schema representing an Amazon Elastic Block Store volume, which provides persistent block-level storage for use with Amazon EC2 instances.",
  "type": "object",
  "required": [
    "availabilityZone"
  ],
  "properties": {
    "volumeId": {
      "type": "string",
      "description": "The ID of the volume.",
      "pattern": "^vol-[a-f0-9]+$"
    },
    "size": {
      "type": "integer",
      "description": "The size of the volume, in GiBs.",
      "minimum": 1,
      "maximum": 16384
    },
    "volumeType": {
      "type": "string",
      "description": "The volume type.",
      "enum": [
        "gp2",
        "gp3",
        "io1",
        "io2",
        "st1",
        "sc1",
        "standard"
      ],
      "default": "gp3"
    },
    "state": {
      "type": "string",
      "description": "The volume state.",
      "enum": [
        "creating",
        "available",
        "in-use",
        "deleting",
        "deleted",
        "error"
      ]
    },
    "availabilityZone": {
      "type": "string",
      "description": "The Availability Zone for the volume."
    },
    "createTime": {
      "type": "string",
      "format": "date-time",
      "description": "The time stamp when volume creation was initiated."
    },
    "encrypted": {
      "type": "boolean",
      "description": "Indicates whether the volume is encrypted.",
      "default": false
    },
    "kmsKeyId": {
      "type": "string",
      "description": "The Amazon Resource Name (ARN) of the AWS KMS key that was used to protect the volume encryption key."
    },
    "iops": {
      "type": "integer",
      "description": "The number of I/O operations per second (IOPS). For gp3, io1, and io2 volumes only.",
      "minimum": 100,
      "maximum": 256000
    },
    "throughput": {
      "type": "integer",
      "description": "The throughput that the volume supports, in MiB/s. For gp3 volumes only.",
      "minimum": 125,
      "maximum": 1000
    },
    "snapshotId": {
      "type": "string",
      "description": "The snapshot from which the volume was created, if applicable.",
      "pattern": "^snap-[a-f0-9]*$"
    },
    "multiAttachEnabled": {
      "type": "boolean",
      "description": "Indicates whether Amazon EBS Multi-Attach is enabled. For io1 and io2 volumes only.",
      "default": false
    },
    "attachments": {
      "type": "array",
      "description": "Information about the volume attachments.",
      "items": {
        "type": "object",
        "properties": {
          "volumeId": {
            "type": "string",
            "description": "The ID of the volume."
          },
          "instanceId": {
            "type": "string",
            "description": "The ID of the instance.",
            "pattern": "^i-[a-f0-9]+$"
          },
          "device": {
            "type": "string",
            "description": "The device name."
          },
          "state": {
            "type": "string",
            "description": "The attachment state of the volume.",
            "enum": [
              "attaching",
              "attached",
              "detaching",
              "detached",
              "busy"
            ]
          },
          "attachTime": {
            "type": "string",
            "format": "date-time",
            "description": "The time stamp when the attachment initiated."
          },
          "deleteOnTermination": {
            "type": "boolean",
            "description": "Indicates whether the EBS volume is deleted on instance termination."
          }
        }
      }
    },
    "tags": {
      "type": "array",
      "description": "Any tags assigned to the volume.",
      "items": {
        "type": "object",
        "properties": {
          "Key": {
            "type": "string",
            "description": "The key of the tag."
          },
          "Value": {
            "type": "string",
            "description": "The value of the tag."
          }
        }
      }
    }
  }
}
