{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://s3client.com/schemas/s3client-service-profile-v1.schema.json",
  "$ref": "#/$defs/serviceProfile",
  "$defs": {
    "serviceProfile": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "capabilities",
        "serverSideCopyDomain",
        "protocol",
        "port",
        "regions",
        "defaultRegionLocation",
        "storageClassPolicySet"
      ],
      "properties": {
        "capabilities": {
          "type": "array",
          "items": {
            "enum": [
              "object-versions",
              "get-bucket-versioning",
              "put-bucket-versioning",
              "list-objects-v2",
              "multipart-upload",
              "sse-s3",
              "sse-c",
              "bittorrent-delivery",
              "presigned-url",
              "delete-multiple-objects",
              "delete-multiple-object-versions",
              "upload-part-copy",
              "conditional-copy-source",
              "conditional-upload-part-copy-source",
              "conditional-delete-object",
              "conditional-overwrite",
              "conditional-write",
              "list-objects-v2-start-after",
              "get-bucket-object-lock-configuration",
              "enable-bucket-object-lock",
              "put-bucket-object-lock-configuration",
              "create-bucket-object-lock",
              "get-object-retention",
              "put-object-retention",
              "get-object-legal-hold",
              "put-object-legal-hold",
              "put-object-lock",
              "create-multipart-upload-object-lock",
              "copy-object-lock",
              "bypass-governance-retention",
              "list-multipart-uploads",
              "conditional-delete-multiple-objects",
              "head-object-part-number",
              "get-bucket-ownership-controls",
              "list-buckets-pagination",
              "create-bucket-recreation-resets-acl",
              "create-bucket-account-regional-namespace",
              "put-bucket-ownership-controls",
              "create-bucket-object-ownership",
              "standard-s3-resource-arn",
              "get-bucket-lifecycle-configuration",
              "put-bucket-lifecycle-configuration",
              "delete-bucket-lifecycle",
              "sse-kms",
              "dsse-kms",
              "get-bucket-encryption",
              "put-bucket-encryption",
              "delete-bucket-encryption",
              "update-object-encryption",
              "get-bucket-logging",
              "put-bucket-logging",
              "bucket-logging-target-object-key-format",
              "bucket-logging-target-grants"
            ]
          },
          "minItems": 0,
          "maxItems": 53,
          "uniqueItems": true
        },
        "aclPolicy": {
          "$ref": "#/$defs/aclPolicy"
        },
        "serverSideCopyDomain": {
          "type": "string",
          "minLength": 0,
          "maxLength": 4096,
          "pattern": "^(?![\\u0009-\\u000d\\u0020\\u0085\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000])(?![\\s\\S]*\\u0000)(?:[\\s\\S]*[^\\u0009-\\u000d\\u0020\\u0085\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000])?(?![\\s\\S])"
        },
        "protocol": {
          "enum": [
            "http",
            "https"
          ]
        },
        "port": {
          "type": "integer",
          "minimum": 1,
          "maximum": 65535
        },
        "regions": {
          "type": "array",
          "minItems": 1,
          "maxItems": 100,
          "items": {
            "$ref": "#/$defs/region"
          }
        },
        "storageClassPolicySet": {
          "$ref": "#/$defs/storageClassPolicySet"
        },
        "lifecycleCapabilityPolicySet": {
          "$ref": "#/$defs/lifecycleCapabilityPolicySet"
        },
        "bucketTaggingCapabilityPolicy": {
          "enum": [
            "unavailable",
            "bucket-tagging-subresource",
            "s3-control-resource-tagging"
          ]
        },
        "objectTaggingCapabilityPolicy": {
          "$ref": "#/$defs/objectTaggingCapabilityPolicy"
        },
        "websiteCapabilityPolicySet": {
          "$ref": "#/$defs/websiteCapabilityPolicySet"
        },
        "encryptionCapabilityPolicySet": {
          "$ref": "#/$defs/encryptionCapabilityPolicySet"
        },
        "bucketLoggingCompatibilityPolicy": {
          "enum": [
            "strictS3",
            "preserveKnownLoggingAdditions"
          ],
          "default": "strictS3"
        },
        "objectLockActivationToken": {
          "type": "string",
          "maxLength": 4096,
          "pattern": "^[!-~]*(?![\\s\\S])",
          "default": ""
        },
        "defaultRegionLocation": {
          "$ref": "#/$defs/text"
        },
        "requestLimits": {
          "$ref": "#/$defs/requestLimits"
        }
      },
      "allOf": [
        {
          "if": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "contains": {
                  "const": "conditional-delete-multiple-objects"
                }
              }
            }
          },
          "then": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "allOf": [
                  {
                    "contains": {
                      "const": "delete-multiple-objects"
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "contains": {
                  "const": "delete-multiple-object-versions"
                }
              }
            }
          },
          "then": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "allOf": [
                  {
                    "contains": {
                      "const": "delete-multiple-objects"
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "contains": {
                  "const": "upload-part-copy"
                }
              }
            }
          },
          "then": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "allOf": [
                  {
                    "contains": {
                      "const": "multipart-upload"
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "contains": {
                  "const": "conditional-upload-part-copy-source"
                }
              }
            }
          },
          "then": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "allOf": [
                  {
                    "contains": {
                      "const": "upload-part-copy"
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "contains": {
                  "const": "list-multipart-uploads"
                }
              }
            }
          },
          "then": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "allOf": [
                  {
                    "contains": {
                      "const": "multipart-upload"
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "contains": {
                  "const": "list-objects-v2-start-after"
                }
              }
            }
          },
          "then": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "allOf": [
                  {
                    "contains": {
                      "const": "list-objects-v2"
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "contains": {
                  "const": "get-bucket-object-lock-configuration"
                }
              }
            }
          },
          "then": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "allOf": [
                  {
                    "contains": {
                      "const": "object-versions"
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "contains": {
                  "const": "enable-bucket-object-lock"
                }
              }
            }
          },
          "then": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "allOf": [
                  {
                    "contains": {
                      "const": "object-versions"
                    }
                  },
                  {
                    "contains": {
                      "const": "get-bucket-object-lock-configuration"
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "contains": {
                  "const": "put-bucket-object-lock-configuration"
                }
              }
            }
          },
          "then": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "allOf": [
                  {
                    "contains": {
                      "const": "object-versions"
                    }
                  },
                  {
                    "contains": {
                      "const": "get-bucket-object-lock-configuration"
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "contains": {
                  "const": "create-bucket-object-lock"
                }
              }
            }
          },
          "then": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "allOf": [
                  {
                    "contains": {
                      "const": "object-versions"
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "contains": {
                  "const": "get-object-retention"
                }
              }
            }
          },
          "then": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "allOf": [
                  {
                    "contains": {
                      "const": "object-versions"
                    }
                  },
                  {
                    "contains": {
                      "const": "get-bucket-object-lock-configuration"
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "contains": {
                  "const": "put-object-retention"
                }
              }
            }
          },
          "then": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "allOf": [
                  {
                    "contains": {
                      "const": "object-versions"
                    }
                  },
                  {
                    "contains": {
                      "const": "get-bucket-object-lock-configuration"
                    }
                  },
                  {
                    "contains": {
                      "const": "get-object-retention"
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "contains": {
                  "const": "get-object-legal-hold"
                }
              }
            }
          },
          "then": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "allOf": [
                  {
                    "contains": {
                      "const": "object-versions"
                    }
                  },
                  {
                    "contains": {
                      "const": "get-bucket-object-lock-configuration"
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "contains": {
                  "const": "put-object-legal-hold"
                }
              }
            }
          },
          "then": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "allOf": [
                  {
                    "contains": {
                      "const": "object-versions"
                    }
                  },
                  {
                    "contains": {
                      "const": "get-bucket-object-lock-configuration"
                    }
                  },
                  {
                    "contains": {
                      "const": "get-object-legal-hold"
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "contains": {
                  "const": "put-object-lock"
                }
              }
            }
          },
          "then": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "allOf": [
                  {
                    "contains": {
                      "const": "object-versions"
                    }
                  },
                  {
                    "contains": {
                      "const": "get-bucket-object-lock-configuration"
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "contains": {
                  "const": "create-multipart-upload-object-lock"
                }
              }
            }
          },
          "then": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "allOf": [
                  {
                    "contains": {
                      "const": "object-versions"
                    }
                  },
                  {
                    "contains": {
                      "const": "get-bucket-object-lock-configuration"
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "contains": {
                  "const": "copy-object-lock"
                }
              }
            }
          },
          "then": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "allOf": [
                  {
                    "contains": {
                      "const": "object-versions"
                    }
                  },
                  {
                    "contains": {
                      "const": "get-bucket-object-lock-configuration"
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "contains": {
                  "const": "bypass-governance-retention"
                }
              }
            }
          },
          "then": {
            "required": [
              "capabilities"
            ],
            "properties": {
              "capabilities": {
                "allOf": [
                  {
                    "contains": {
                      "const": "object-versions"
                    }
                  },
                  {
                    "contains": {
                      "const": "get-bucket-object-lock-configuration"
                    }
                  }
                ]
              }
            }
          }
        }
      ]
    },
    "encryptionCapabilityPolicy": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "$ref": "#/$defs/identifier"
        },
        "sseS3Operations": {
          "type": "array",
          "items": {
            "enum": [
              "putObject",
              "createMultipartUpload",
              "copyObject"
            ]
          },
          "minItems": 0,
          "maxItems": 3,
          "uniqueItems": true
        },
        "sseKmsOperations": {
          "type": "array",
          "items": {
            "enum": [
              "putObject",
              "createMultipartUpload",
              "copyObject"
            ]
          },
          "minItems": 0,
          "maxItems": 3,
          "uniqueItems": true
        },
        "dsseKmsOperations": {
          "type": "array",
          "items": {
            "enum": [
              "putObject",
              "createMultipartUpload",
              "copyObject"
            ]
          },
          "minItems": 0,
          "maxItems": 3,
          "uniqueItems": true
        },
        "customerKeyOperations": {
          "type": "array",
          "items": {
            "enum": [
              "putObject",
              "createMultipartUpload",
              "copyObject",
              "uploadPart",
              "uploadPartCopy",
              "completeMultipartUpload",
              "getObject",
              "headObject"
            ]
          },
          "minItems": 0,
          "maxItems": 8,
          "uniqueItems": true
        },
        "customerCopySourceOperations": {
          "type": "array",
          "items": {
            "enum": [
              "copyObject",
              "uploadPartCopy"
            ]
          },
          "minItems": 0,
          "maxItems": 2,
          "uniqueItems": true
        },
        "kmsContextOperations": {
          "type": "array",
          "items": {
            "enum": [
              "putObject",
              "createMultipartUpload",
              "copyObject"
            ]
          },
          "minItems": 0,
          "maxItems": 3,
          "uniqueItems": true
        },
        "bucketKeyOperations": {
          "type": "array",
          "items": {
            "enum": [
              "putObject",
              "createMultipartUpload",
              "copyObject"
            ]
          },
          "minItems": 0,
          "maxItems": 3,
          "uniqueItems": true
        },
        "bucketEncryptionModes": {
          "type": "array",
          "items": {
            "enum": [
              "sse-s3",
              "sse-kms",
              "dsse-kms"
            ]
          },
          "minItems": 0,
          "maxItems": 3,
          "uniqueItems": true
        },
        "blockedEncryptionTypes": {
          "type": "boolean"
        },
        "bucketKeyConfiguration": {
          "type": "boolean"
        },
        "updateBucketKeys": {
          "type": "boolean"
        }
      }
    },
    "encryptionCapabilityPolicySet": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "defaultPolicyId": {
          "$ref": "#/$defs/identifier"
        },
        "policies": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/encryptionCapabilityPolicy"
          },
          "minItems": 1,
          "maxItems": 32
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/policyBinding"
          },
          "minItems": 0,
          "maxItems": 1000
        }
      },
      "required": [
        "defaultPolicyId",
        "policies",
        "bindings"
      ]
    },
    "generalPurposeS3ControlRoute": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "hostTemplate",
        "protocol",
        "port",
        "signingRegion",
        "signingService",
        "arnPartition"
      ],
      "properties": {
        "hostTemplate": {
          "type": "string",
          "minLength": 1,
          "maxLength": 252,
          "pattern": "^\\{accountId\\}\\.[^{}]+$"
        },
        "protocol": {
          "enum": [
            "http",
            "https"
          ]
        },
        "port": {
          "type": "integer",
          "minimum": 1,
          "maximum": 65535
        },
        "signingRegion": {
          "type": "string",
          "minLength": 1,
          "maxLength": 4096
        },
        "signingService": {
          "const": "s3"
        },
        "arnPartition": {
          "type": "string",
          "pattern": "^[a-z0-9-]+$",
          "maxLength": 64
        }
      }
    },
    "directoryBucketS3ControlRoute": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "hostTemplate",
        "protocol",
        "port",
        "signingRegion",
        "signingService",
        "arnPartition"
      ],
      "properties": {
        "hostTemplate": {
          "type": "string",
          "minLength": 1,
          "maxLength": 253,
          "pattern": "^[^{}]+$"
        },
        "protocol": {
          "enum": [
            "http",
            "https"
          ]
        },
        "port": {
          "type": "integer",
          "minimum": 1,
          "maximum": 65535
        },
        "signingRegion": {
          "type": "string",
          "minLength": 1,
          "maxLength": 4096
        },
        "signingService": {
          "const": "s3express"
        },
        "arnPartition": {
          "type": "string",
          "pattern": "^[a-z0-9-]+$",
          "maxLength": 64
        }
      }
    },
    "region": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "name": {
          "$ref": "#/$defs/text"
        },
        "location": {
          "$ref": "#/$defs/text"
        },
        "endpoint": {
          "type": "string",
          "minLength": 1,
          "maxLength": 253,
          "pattern": "^(?![\\u0009-\\u000d\\u0020\\u0085\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000])(?![\\s\\S]*\\u0000)(?:[\\s\\S]*[^\\u0009-\\u000d\\u0020\\u0085\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000])?(?![\\s\\S])"
        },
        "authentication": {
          "enum": [
            "sigv2",
            "sigv4"
          ]
        },
        "accessStyle": {
          "enum": [
            "path",
            "virtual-hosted",
            "virtual-hosted-with-path-fallback"
          ]
        },
        "serverSideCopyDomain": {
          "type": "string",
          "minLength": 0,
          "maxLength": 4096,
          "pattern": "^(?![\\u0009-\\u000d\\u0020\\u0085\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000])(?![\\s\\S]*\\u0000)(?:[\\s\\S]*[^\\u0009-\\u000d\\u0020\\u0085\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000])?(?![\\s\\S])"
        },
        "accountRegionalBucketNamespaceAvailable": {
          "type": "boolean"
        },
        "s3ControlRouting": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "generalPurposeRoute": {
              "$ref": "#/$defs/generalPurposeS3ControlRoute"
            },
            "directoryBucketRoute": {
              "$ref": "#/$defs/directoryBucketS3ControlRoute"
            }
          }
        }
      },
      "required": [
        "name",
        "location",
        "endpoint",
        "authentication",
        "accessStyle",
        "serverSideCopyDomain",
        "accountRegionalBucketNamespaceAvailable",
        "s3ControlRouting"
      ]
    },
    "objectTaggingCapabilityPolicy": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "readScope": {
          "enum": [
            "unavailable",
            "current-object",
            "object-and-versions"
          ],
          "default": "unavailable"
        },
        "editingScope": {
          "enum": [
            "unavailable",
            "current-object",
            "object-and-versions"
          ],
          "default": "unavailable"
        },
        "clearMethod": {
          "enum": [
            "deleteTagging",
            "putEmptyTagSet"
          ],
          "default": "deleteTagging"
        },
        "contentOperations": {
          "type": "array",
          "uniqueItems": true,
          "maxItems": 3,
          "items": {
            "enum": [
              "putObject",
              "createMultipartUpload",
              "copyObject"
            ]
          },
          "default": []
        },
        "copyMode": {
          "enum": [
            "unavailable",
            "independentDirectives",
            "coupledToMetadata"
          ],
          "default": "unavailable"
        },
        "currentObjectVerification": {
          "enum": [
            "response-version-header",
            "versioned-read-then-head"
          ],
          "default": "response-version-header"
        }
      },
      "allOf": [
        {
          "if": {
            "required": [
              "currentObjectVerification"
            ],
            "properties": {
              "currentObjectVerification": {
                "const": "versioned-read-then-head"
              }
            }
          },
          "then": {
            "required": [
              "readScope"
            ],
            "properties": {
              "readScope": {
                "const": "object-and-versions"
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "editingScope"
            ],
            "properties": {
              "editingScope": {
                "const": "current-object"
              }
            }
          },
          "then": {
            "required": [
              "readScope"
            ],
            "properties": {
              "readScope": {
                "enum": [
                  "current-object",
                  "object-and-versions"
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "editingScope"
            ],
            "properties": {
              "editingScope": {
                "const": "object-and-versions"
              }
            }
          },
          "then": {
            "required": [
              "readScope"
            ],
            "properties": {
              "readScope": {
                "enum": [
                  "object-and-versions"
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "contentOperations"
            ],
            "properties": {
              "contentOperations": {
                "contains": {
                  "const": "copyObject"
                }
              }
            }
          },
          "then": {
            "required": [
              "copyMode"
            ],
            "properties": {
              "copyMode": {
                "enum": [
                  "independentDirectives",
                  "coupledToMetadata"
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "copyMode"
            ],
            "properties": {
              "copyMode": {
                "enum": [
                  "independentDirectives",
                  "coupledToMetadata"
                ]
              }
            }
          },
          "then": {
            "required": [
              "contentOperations"
            ],
            "properties": {
              "contentOperations": {
                "contains": {
                  "const": "copyObject"
                }
              }
            }
          }
        }
      ]
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096,
      "pattern": "^(?![\\u0009-\\u000d\\u0020\\u0085\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000])(?![\\s\\S]*\\u0000)(?:[\\s\\S]*[^\\u0009-\\u000d\\u0020\\u0085\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000])?(?![\\s\\S])"
    },
    "identifier": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "pattern": "^(?![\\u0009-\\u000d\\u0020\\u0085\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000])(?![\\s\\S]*\\u0000)(?:[\\s\\S]*[^\\u0009-\\u000d\\u0020\\u0085\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000])?(?![\\s\\S])"
    },
    "className": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "pattern": "^[A-Za-z0-9!#$%&'*+.^_`|~-]+(?![\\s\\S])"
    },
    "positiveInt64": {
      "oneOf": [
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "$integer": {
              "type": "string",
              "pattern": "^(0|[1-9][0-9]{0,18})(?![\\s\\S])"
            }
          },
          "required": [
            "$integer"
          ]
        }
      ]
    },
    "requestLimits": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "maximumPutHeaderBytes": {
          "type": "integer",
          "minimum": 0,
          "maximum": 2147483647
        },
        "maximumPostHeaderBytes": {
          "type": "integer",
          "minimum": 0,
          "maximum": 2147483647
        }
      },
      "required": []
    },
    "policyBinding": {
      "description": "The codec additionally validates canonical selector values, unique bindings, and references to existing policy identifiers.",
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "selectorKind",
            "policyId",
            "endpoint",
            "bucketName"
          ],
          "properties": {
            "selectorKind": {
              "const": "exactBucket"
            },
            "policyId": {
              "$ref": "#/$defs/identifier"
            },
            "endpoint": {
              "type": "string",
              "minLength": 1,
              "maxLength": 253
            },
            "bucketName": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "selectorKind",
            "policyId",
            "endpoint",
            "bucketKind"
          ],
          "properties": {
            "selectorKind": {
              "const": "endpointAndBucketKind"
            },
            "policyId": {
              "$ref": "#/$defs/identifier"
            },
            "endpoint": {
              "type": "string",
              "minLength": 1,
              "maxLength": 253
            },
            "bucketKind": {
              "enum": [
                "generalPurpose",
                "directory",
                "outposts"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "selectorKind",
            "policyId",
            "regionLocation",
            "bucketKind"
          ],
          "properties": {
            "selectorKind": {
              "const": "regionAndBucketKind"
            },
            "policyId": {
              "$ref": "#/$defs/identifier"
            },
            "regionLocation": {
              "type": "string",
              "minLength": 1,
              "maxLength": 4096
            },
            "bucketKind": {
              "enum": [
                "generalPurpose",
                "directory",
                "outposts"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "selectorKind",
            "policyId",
            "bucketKind"
          ],
          "properties": {
            "selectorKind": {
              "const": "bucketKind"
            },
            "policyId": {
              "$ref": "#/$defs/identifier"
            },
            "bucketKind": {
              "enum": [
                "generalPurpose",
                "directory",
                "outposts"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "selectorKind",
            "policyId",
            "endpoint"
          ],
          "properties": {
            "selectorKind": {
              "const": "endpoint"
            },
            "policyId": {
              "$ref": "#/$defs/identifier"
            },
            "endpoint": {
              "type": "string",
              "minLength": 1,
              "maxLength": 253
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "selectorKind",
            "policyId",
            "regionLocation"
          ],
          "properties": {
            "selectorKind": {
              "const": "region"
            },
            "policyId": {
              "$ref": "#/$defs/identifier"
            },
            "regionLocation": {
              "type": "string",
              "minLength": 1,
              "maxLength": 4096
            }
          }
        }
      ]
    },
    "restoreDays": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "mode": {
          "enum": [
            "forbidden",
            "optional",
            "required"
          ]
        },
        "minimum": {
          "type": "integer",
          "minimum": 1,
          "maximum": 2147483647
        },
        "maximum": {
          "type": "integer",
          "minimum": 1,
          "maximum": 2147483647
        }
      },
      "required": [
        "mode"
      ],
      "allOf": [
        {
          "if": {
            "required": [
              "mode"
            ],
            "properties": {
              "mode": {
                "const": "forbidden"
              }
            }
          },
          "then": {
            "not": {
              "anyOf": [
                {
                  "required": [
                    "minimum"
                  ]
                },
                {
                  "required": [
                    "maximum"
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    "retrievalTier": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "mode": {
          "enum": [
            "forbidden",
            "optional",
            "required"
          ]
        },
        "acceptedTiers": {
          "type": "array",
          "items": {
            "enum": [
              "expedited",
              "standard",
              "bulk"
            ]
          },
          "minItems": 0,
          "maxItems": 3,
          "uniqueItems": true
        }
      },
      "required": [
        "mode",
        "acceptedTiers"
      ],
      "allOf": [
        {
          "if": {
            "properties": {
              "mode": {
                "const": "forbidden"
              }
            }
          },
          "then": {
            "properties": {
              "acceptedTiers": {
                "maxItems": 0
              }
            }
          },
          "else": {
            "properties": {
              "acceptedTiers": {
                "minItems": 1
              }
            }
          }
        }
      ]
    },
    "restorePolicy": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "semantics": {
          "enum": [
            "unsupported",
            "temporaryReadableCopy",
            "rehydrateToDirectTier"
          ]
        },
        "days": {
          "$ref": "#/$defs/restoreDays"
        },
        "retrievalTier": {
          "$ref": "#/$defs/retrievalTier"
        },
        "versionSupported": {
          "type": "boolean"
        }
      },
      "required": [
        "semantics",
        "days",
        "retrievalTier",
        "versionSupported"
      ],
      "allOf": [
        {
          "if": {
            "required": [
              "semantics"
            ],
            "properties": {
              "semantics": {
                "const": "unsupported"
              }
            }
          },
          "then": {
            "properties": {
              "days": {
                "properties": {
                  "mode": {
                    "const": "forbidden"
                  }
                }
              },
              "retrievalTier": {
                "properties": {
                  "mode": {
                    "const": "forbidden"
                  }
                }
              },
              "versionSupported": {
                "const": false
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "semantics"
            ],
            "properties": {
              "semantics": {
                "const": "temporaryReadableCopy"
              }
            }
          },
          "then": {
            "properties": {
              "days": {
                "properties": {
                  "mode": {
                    "enum": [
                      "optional",
                      "required"
                    ]
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "semantics"
            ],
            "properties": {
              "semantics": {
                "const": "rehydrateToDirectTier"
              }
            }
          },
          "then": {
            "properties": {
              "days": {
                "properties": {
                  "mode": {
                    "const": "forbidden"
                  }
                }
              }
            }
          }
        }
      ]
    },
    "storageClass": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "name": {
          "$ref": "#/$defs/className"
        },
        "placementPaths": {
          "type": "array",
          "items": {
            "enum": [
              "putObject",
              "createMultipartUpload",
              "copyObject"
            ]
          },
          "minItems": 0,
          "maxItems": 3,
          "uniqueItems": true
        },
        "accessStrategy": {
          "enum": [
            "alwaysDirect",
            "restoreRequired",
            "archiveStateDependent"
          ]
        },
        "restorePolicy": {
          "$ref": "#/$defs/restorePolicy"
        },
        "archiveStateHeaders": {
          "type": "array",
          "items": {
            "enum": [
              "restore",
              "archiveStatus"
            ]
          },
          "minItems": 0,
          "maxItems": 2,
          "uniqueItems": true
        },
        "sameObjectStorageClassChange": {
          "type": "boolean"
        }
      },
      "required": [
        "name",
        "placementPaths",
        "accessStrategy",
        "restorePolicy",
        "archiveStateHeaders"
      ],
      "allOf": [
        {
          "if": {
            "required": [
              "accessStrategy"
            ],
            "properties": {
              "accessStrategy": {
                "const": "archiveStateDependent"
              }
            }
          },
          "then": {
            "properties": {
              "archiveStateHeaders": {
                "minItems": 1
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "sameObjectStorageClassChange"
            ],
            "properties": {
              "sameObjectStorageClassChange": {
                "const": true
              }
            }
          },
          "then": {
            "properties": {
              "placementPaths": {
                "minItems": 1
              }
            }
          }
        }
      ]
    },
    "transitionConstraints": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "minimumCurrentAgeDays": {
          "type": "integer",
          "minimum": 0,
          "maximum": 2147483647
        },
        "minimumNoncurrentAgeDays": {
          "type": "integer",
          "minimum": 0,
          "maximum": 2147483647
        },
        "minimumSourceResidenceDays": {
          "type": "integer",
          "minimum": 0,
          "maximum": 2147483647
        },
        "defaultMinimumObjectSize": {
          "$ref": "#/$defs/positiveInt64"
        },
        "objectSizeFilterMayOverrideDefault": {
          "type": "boolean"
        },
        "compatibleVersioningStates": {
          "type": "array",
          "items": {
            "enum": [
              "neverEnabled",
              "suspended",
              "enabled"
            ]
          },
          "minItems": 1,
          "maxItems": 3,
          "uniqueItems": true
        }
      },
      "required": [
        "objectSizeFilterMayOverrideDefault",
        "compatibleVersioningStates"
      ],
      "allOf": [
        {
          "if": {
            "required": [
              "objectSizeFilterMayOverrideDefault"
            ],
            "properties": {
              "objectSizeFilterMayOverrideDefault": {
                "const": true
              }
            }
          },
          "then": {
            "required": [
              "defaultMinimumObjectSize"
            ]
          }
        }
      ]
    },
    "transition": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "sourceClassName": {
          "$ref": "#/$defs/className"
        },
        "targetClassName": {
          "$ref": "#/$defs/className"
        },
        "scopes": {
          "type": "array",
          "items": {
            "enum": [
              "currentVersion",
              "noncurrentVersion"
            ]
          },
          "minItems": 1,
          "maxItems": 2,
          "uniqueItems": true
        },
        "constraints": {
          "$ref": "#/$defs/transitionConstraints"
        }
      },
      "required": [
        "sourceClassName",
        "targetClassName",
        "scopes",
        "constraints"
      ]
    },
    "storageClassPolicy": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "id": {
          "$ref": "#/$defs/identifier"
        },
        "defaultClassName": {
          "$ref": "#/$defs/className"
        },
        "classes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/storageClass"
          },
          "minItems": 1,
          "maxItems": 100
        },
        "transitions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/transition"
          },
          "minItems": 0,
          "maxItems": 1000
        },
        "restoreStatusListingOperations": {
          "type": "array",
          "items": {
            "enum": [
              "listObjects",
              "listObjectsV2",
              "listObjectVersions"
            ]
          },
          "minItems": 0,
          "maxItems": 3,
          "uniqueItems": true
        },
        "intelligentTieringOperations": {
          "type": "array",
          "items": {
            "enum": [
              "get",
              "put",
              "list",
              "delete"
            ]
          },
          "minItems": 0,
          "maxItems": 4,
          "uniqueItems": true
        }
      },
      "required": [
        "id",
        "defaultClassName",
        "classes",
        "transitions",
        "restoreStatusListingOperations",
        "intelligentTieringOperations"
      ]
    },
    "storageClassPolicySet": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "defaultPolicyId": {
          "$ref": "#/$defs/identifier"
        },
        "policies": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/storageClassPolicy"
          },
          "minItems": 1,
          "maxItems": 32
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/policyBinding"
          },
          "minItems": 0,
          "maxItems": 1000
        }
      },
      "required": [
        "defaultPolicyId",
        "policies",
        "bindings"
      ]
    },
    "lifecycleCapabilityPolicy": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "id": {
          "$ref": "#/$defs/identifier"
        },
        "filters": {
          "type": "array",
          "items": {
            "enum": [
              "empty",
              "prefix",
              "tag",
              "objectSizeGreaterThan",
              "objectSizeLessThan",
              "and"
            ]
          },
          "minItems": 0,
          "maxItems": 6,
          "uniqueItems": true
        },
        "allowedRuleStatuses": {
          "type": "array",
          "items": {
            "enum": [
              "enabled",
              "disabled"
            ]
          },
          "minItems": 0,
          "maxItems": 2,
          "uniqueItems": true
        },
        "allowedVersioningStates": {
          "type": "array",
          "items": {
            "enum": [
              "neverEnabled",
              "suspended",
              "enabled"
            ]
          },
          "minItems": 0,
          "maxItems": 3,
          "uniqueItems": true
        },
        "pairedExpirationRules": {
          "type": "boolean"
        },
        "combinedObjectSizeBounds": {
          "type": "boolean"
        },
        "maximumTags": {
          "type": "integer",
          "minimum": 1,
          "maximum": 10
        },
        "currentExpirations": {
          "type": "array",
          "items": {
            "enum": [
              "days",
              "date",
              "expiredObjectDeleteMarker"
            ]
          },
          "minItems": 0,
          "maxItems": 3,
          "uniqueItems": true
        },
        "noncurrentVersions": {
          "type": "array",
          "items": {
            "enum": [
              "expiration",
              "newerNoncurrentVersionsForExpiration",
              "newerNoncurrentVersionsForTransition"
            ]
          },
          "minItems": 0,
          "maxItems": 3,
          "uniqueItems": true
        },
        "abortIncompleteMultipartUpload": {
          "type": "boolean"
        },
        "transitionTriggers": {
          "type": "array",
          "items": {
            "enum": [
              "currentDays",
              "currentDate",
              "noncurrentDays"
            ]
          },
          "minItems": 0,
          "maxItems": 3,
          "uniqueItems": true
        },
        "combinations": {
          "type": "array",
          "items": {
            "enum": [
              "multipleActionTypes",
              "multipleCurrentTransitions",
              "multipleNoncurrentTransitions"
            ]
          },
          "minItems": 0,
          "maxItems": 3,
          "uniqueItems": true
        },
        "maximumActionsPerRule": {
          "type": "integer",
          "minimum": 1,
          "maximum": 2147483647
        },
        "transitionDefaultMinimumObjectSizeModes": {
          "type": "array",
          "items": {
            "enum": [
              "all_storage_classes_128K",
              "varies_by_storage_class"
            ]
          },
          "minItems": 0,
          "maxItems": 2,
          "uniqueItems": true
        }
      },
      "required": [
        "id",
        "filters",
        "currentExpirations",
        "noncurrentVersions",
        "abortIncompleteMultipartUpload",
        "transitionTriggers",
        "combinations",
        "transitionDefaultMinimumObjectSizeModes"
      ],
      "allOf": [
        {
          "if": {
            "required": [
              "noncurrentVersions"
            ],
            "properties": {
              "noncurrentVersions": {
                "contains": {
                  "const": "newerNoncurrentVersionsForExpiration"
                }
              }
            }
          },
          "then": {
            "required": [
              "noncurrentVersions"
            ],
            "properties": {
              "noncurrentVersions": {
                "allOf": [
                  {
                    "contains": {
                      "const": "expiration"
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "noncurrentVersions"
            ],
            "properties": {
              "noncurrentVersions": {
                "contains": {
                  "const": "newerNoncurrentVersionsForTransition"
                }
              }
            }
          },
          "then": {
            "required": [
              "transitionTriggers"
            ],
            "properties": {
              "transitionTriggers": {
                "allOf": [
                  {
                    "contains": {
                      "const": "noncurrentDays"
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "combinations"
            ],
            "properties": {
              "combinations": {
                "contains": {
                  "const": "multipleNoncurrentTransitions"
                }
              }
            }
          },
          "then": {
            "required": [
              "transitionTriggers"
            ],
            "properties": {
              "transitionTriggers": {
                "allOf": [
                  {
                    "contains": {
                      "const": "noncurrentDays"
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "combinedObjectSizeBounds"
            ],
            "properties": {
              "combinedObjectSizeBounds": {
                "const": true
              }
            }
          },
          "then": {
            "properties": {
              "filters": {
                "allOf": [
                  {
                    "contains": {
                      "const": "objectSizeGreaterThan"
                    }
                  },
                  {
                    "contains": {
                      "const": "objectSizeLessThan"
                    }
                  },
                  {
                    "contains": {
                      "const": "and"
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "maximumTags"
            ],
            "properties": {
              "maximumTags": {}
            }
          },
          "then": {
            "properties": {
              "filters": {
                "contains": {
                  "const": "tag"
                }
              }
            }
          }
        }
      ]
    },
    "lifecycleCapabilityPolicySet": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "defaultPolicyId": {
          "$ref": "#/$defs/identifier"
        },
        "policies": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/lifecycleCapabilityPolicy"
          },
          "minItems": 1,
          "maxItems": 32
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/policyBinding"
          },
          "minItems": 0,
          "maxItems": 1000
        }
      },
      "required": [
        "defaultPolicyId",
        "policies",
        "bindings"
      ]
    },
    "websiteCapabilityPolicy": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "id": {
          "$ref": "#/$defs/identifier"
        },
        "getBucketWebsite": {
          "type": "boolean"
        },
        "putBucketWebsite": {
          "type": "boolean"
        },
        "deleteBucketWebsite": {
          "type": "boolean"
        },
        "redirectAllRequestsTo": {
          "type": "boolean"
        },
        "routingRules": {
          "type": "boolean"
        }
      },
      "required": [
        "id",
        "getBucketWebsite",
        "putBucketWebsite",
        "deleteBucketWebsite",
        "redirectAllRequestsTo",
        "routingRules"
      ]
    },
    "websiteCapabilityPolicySet": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "defaultPolicyId": {
          "$ref": "#/$defs/identifier"
        },
        "policies": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/websiteCapabilityPolicy"
          },
          "minItems": 1,
          "maxItems": 32
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/policyBinding"
          },
          "minItems": 0,
          "maxItems": 1000
        }
      },
      "required": [
        "defaultPolicyId",
        "policies",
        "bindings"
      ]
    },
    "aclWritePolicy": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "formSupport": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "cannedHeader": {
              "type": "boolean"
            },
            "grantHeaders": {
              "type": "boolean"
            },
            "xmlBody": {
              "type": "boolean"
            }
          },
          "required": []
        },
        "allowedCannedAcls": {
          "type": "array",
          "items": {
            "enum": [
              "private",
              "public-read",
              "public-read-write",
              "authenticated-read",
              "aws-exec-read",
              "bucket-owner-read",
              "bucket-owner-full-control"
            ]
          },
          "minItems": 0,
          "maxItems": 7,
          "uniqueItems": true
        },
        "allowedPermissions": {
          "type": "array",
          "items": {
            "enum": [
              "READ",
              "WRITE",
              "READ_ACP",
              "WRITE_ACP"
            ]
          },
          "minItems": 0,
          "maxItems": 4,
          "uniqueItems": true
        },
        "allowedGroupGrantees": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/text"
          },
          "minItems": 0,
          "maxItems": 1000,
          "uniqueItems": true
        },
        "preferredExplicitGrantEncoding": {
          "enum": [
            null,
            "grantHeaders",
            "xmlBody",
            "adaptive"
          ]
        }
      },
      "required": [
        "formSupport",
        "allowedCannedAcls",
        "allowedPermissions",
        "allowedGroupGrantees",
        "preferredExplicitGrantEncoding"
      ],
      "allOf": [
        {
          "if": {
            "required": [
              "formSupport"
            ],
            "properties": {
              "formSupport": {
                "required": [
                  "cannedHeader"
                ],
                "properties": {
                  "cannedHeader": {
                    "const": true
                  }
                }
              }
            }
          },
          "then": {
            "properties": {
              "allowedCannedAcls": {
                "minItems": 1
              }
            }
          }
        }
      ]
    },
    "aclErrorRule": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "operation": {
          "enum": [
            "getBucketAcl",
            "putBucketAcl",
            "getObjectAcl",
            "putObjectAcl",
            "putObject",
            "copyObject",
            "createMultipartUpload"
          ]
        },
        "writeForm": {
          "enum": [
            null,
            "cannedHeader",
            "grantHeaders",
            "xmlBody"
          ]
        },
        "errorCode": {
          "$ref": "#/$defs/text"
        },
        "minimumHttpStatus": {
          "type": "integer",
          "minimum": 100,
          "maximum": 599
        },
        "maximumHttpStatus": {
          "type": "integer",
          "minimum": 100,
          "maximum": 599
        },
        "action": {
          "enum": [
            "requireOwnershipObservation",
            "markOperationUnsupported",
            "markFormUnsupported"
          ]
        }
      },
      "required": [
        "operation",
        "writeForm",
        "errorCode",
        "minimumHttpStatus",
        "maximumHttpStatus",
        "action"
      ]
    },
    "aclCompatibility": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "ownerXmlPolicy": {
          "enum": [
            "omit",
            "echoKnownTargetOwner"
          ]
        },
        "maximumGrants": {
          "type": "integer",
          "minimum": 1,
          "maximum": 1000
        },
        "predefinedGroups": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "id": {
                "$ref": "#/$defs/text"
              },
              "displayName": {
                "type": "string",
                "minLength": 0,
                "maxLength": 4096,
                "pattern": "^(?![\\u0009-\\u000d\\u0020\\u0085\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000])(?![\\s\\S]*\\u0000)(?:[\\s\\S]*[^\\u0009-\\u000d\\u0020\\u0085\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000])?(?![\\s\\S])"
              }
            },
            "required": [
              "id",
              "displayName"
            ]
          },
          "minItems": 0,
          "maxItems": 1000
        },
        "ownershipControlsNotFoundErrorCodes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/text"
          },
          "minItems": 0,
          "maxItems": 1000,
          "uniqueItems": true
        },
        "ownershipControlsUnsupportedErrorCodes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/text"
          },
          "minItems": 0,
          "maxItems": 1000,
          "uniqueItems": true
        },
        "aclErrorRules": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/aclErrorRule"
          },
          "minItems": 0,
          "maxItems": 7000
        }
      },
      "required": [
        "ownerXmlPolicy",
        "maximumGrants",
        "predefinedGroups",
        "ownershipControlsNotFoundErrorCodes",
        "ownershipControlsUnsupportedErrorCodes",
        "aclErrorRules"
      ]
    },
    "aclPolicy": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "activation": {
          "enum": [
            "enabled",
            "disabled"
          ]
        },
        "apiSupport": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "getBucketAcl": {
              "type": "boolean"
            },
            "putBucketAcl": {
              "type": "boolean"
            },
            "getObjectAcl": {
              "type": "boolean"
            },
            "putObjectAcl": {
              "type": "boolean"
            }
          },
          "required": []
        },
        "objectAclScope": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "get": {
              "enum": [
                "none",
                "currentObject",
                "objectAndVersions"
              ]
            },
            "put": {
              "enum": [
                "none",
                "currentObject",
                "objectAndVersions"
              ]
            }
          },
          "required": [
            "get",
            "put"
          ]
        },
        "readSemantics": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "bucket": {
              "enum": [
                "storedExact",
                "effectivePotentiallyFiltered",
                "synthetic"
              ]
            },
            "object": {
              "enum": [
                "storedExact",
                "effectivePotentiallyFiltered",
                "bucketProjection",
                "synthetic"
              ]
            }
          },
          "required": [
            "bucket",
            "object"
          ]
        },
        "operationPolicies": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "putBucketAcl": {
              "$ref": "#/$defs/aclWritePolicy"
            },
            "putObject": {
              "$ref": "#/$defs/aclWritePolicy"
            },
            "copyObject": {
              "$ref": "#/$defs/aclWritePolicy"
            },
            "createMultipartUpload": {
              "$ref": "#/$defs/aclWritePolicy"
            },
            "putObjectAcl": {
              "$ref": "#/$defs/aclWritePolicy"
            }
          },
          "required": []
        },
        "compatibility": {
          "$ref": "#/$defs/aclCompatibility"
        }
      },
      "required": [
        "activation",
        "apiSupport",
        "objectAclScope",
        "readSemantics",
        "operationPolicies",
        "compatibility"
      ]
    }
  }
}
