{
  "description": "BucketReplicationConfiguration is the Schema for the BucketReplicationConfigurations API. Provides a S3 bucket replication configuration resource.",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": "string"
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "BucketReplicationConfigurationSpec defines the desired state of BucketReplicationConfiguration",
      "properties": {
        "deletionPolicy": {
          "default": "Delete",
          "description": "DeletionPolicy specifies what will happen to the underlying external\nwhen this managed resource is deleted - either \"Delete\" or \"Orphan\" the\nexternal resource.\nThis field is planned to be deprecated in favor of the ManagementPolicies\nfield in a future release. Currently, both could be set independently and\nnon-default values would be honored if the feature flag is enabled.\nSee the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223",
          "enum": [
            "Orphan",
            "Delete"
          ],
          "type": "string"
        },
        "forProvider": {
          "properties": {
            "bucket": {
              "description": "Name of the source S3 bucket you want Amazon S3 to monitor.",
              "type": "string"
            },
            "bucketRef": {
              "description": "Reference to a Bucket in s3 to populate bucket.",
              "properties": {
                "name": {
                  "description": "Name of the referenced object.",
                  "type": "string"
                },
                "policy": {
                  "description": "Policies for referencing.",
                  "properties": {
                    "resolution": {
                      "default": "Required",
                      "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
                      "enum": [
                        "Required",
                        "Optional"
                      ],
                      "type": "string"
                    },
                    "resolve": {
                      "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
                      "enum": [
                        "Always",
                        "IfNotPresent"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "required": [
                "name"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "bucketSelector": {
              "description": "Selector for a Bucket in s3 to populate bucket.",
              "properties": {
                "matchControllerRef": {
                  "description": "MatchControllerRef ensures an object with the same controller reference\nas the selecting object is selected.",
                  "type": "boolean"
                },
                "matchLabels": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "MatchLabels ensures an object with matching labels is selected.",
                  "type": "object"
                },
                "policy": {
                  "description": "Policies for selection.",
                  "properties": {
                    "resolution": {
                      "default": "Required",
                      "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
                      "enum": [
                        "Required",
                        "Optional"
                      ],
                      "type": "string"
                    },
                    "resolve": {
                      "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
                      "enum": [
                        "Always",
                        "IfNotPresent"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "region": {
              "description": "Region where this resource will be managed. Defaults to the Region set in the provider configuration.\nRegion is the region you'd like your resource to be created in.",
              "type": "string"
            },
            "role": {
              "description": "ARN of the IAM role for Amazon S3 to assume when replicating the objects.",
              "type": "string"
            },
            "roleRef": {
              "description": "Reference to a Role in iam to populate role.",
              "properties": {
                "name": {
                  "description": "Name of the referenced object.",
                  "type": "string"
                },
                "policy": {
                  "description": "Policies for referencing.",
                  "properties": {
                    "resolution": {
                      "default": "Required",
                      "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
                      "enum": [
                        "Required",
                        "Optional"
                      ],
                      "type": "string"
                    },
                    "resolve": {
                      "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
                      "enum": [
                        "Always",
                        "IfNotPresent"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "required": [
                "name"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "roleSelector": {
              "description": "Selector for a Role in iam to populate role.",
              "properties": {
                "matchControllerRef": {
                  "description": "MatchControllerRef ensures an object with the same controller reference\nas the selecting object is selected.",
                  "type": "boolean"
                },
                "matchLabels": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "MatchLabels ensures an object with matching labels is selected.",
                  "type": "object"
                },
                "policy": {
                  "description": "Policies for selection.",
                  "properties": {
                    "resolution": {
                      "default": "Required",
                      "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
                      "enum": [
                        "Required",
                        "Optional"
                      ],
                      "type": "string"
                    },
                    "resolve": {
                      "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
                      "enum": [
                        "Always",
                        "IfNotPresent"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "rule": {
              "description": "List of configuration blocks describing the rules managing the replication. See below.",
              "items": {
                "properties": {
                  "deleteMarkerReplication": {
                    "description": "Whether delete markers are replicated. This argument is only valid with V2 replication configurations (i.e., when filter is used)documented below.",
                    "properties": {
                      "status": {
                        "description": "Whether delete markers should be replicated. Either \"Enabled\" or \"Disabled\".",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "destination": {
                    "description": "Specifies the destination for the rule. See below.",
                    "properties": {
                      "accessControlTranslation": {
                        "description": "Configuration block that specifies the overrides to use for object owners on replication. See below. Specify this only in a cross-account scenario (where source and destination bucket owners are not the same), and you want to change replica ownership to the AWS account that owns the destination bucket. If this is not specified in the replication configuration, the replicas are owned by same AWS account that owns the source object. Must be used in conjunction with account owner override configuration.",
                        "properties": {
                          "owner": {
                            "description": "Specifies the replica ownership. For default and valid values, see PUT bucket replication in the Amazon S3 API Reference. Valid values: Destination.",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "account": {
                        "description": "Account ID to specify the replica ownership. Must be used in conjunction with access_control_translation override configuration.",
                        "type": "string"
                      },
                      "bucket": {
                        "description": "ARN of the bucket where you want Amazon S3 to store the results.",
                        "type": "string"
                      },
                      "bucketRef": {
                        "description": "Reference to a Bucket in s3 to populate bucket.",
                        "properties": {
                          "name": {
                            "description": "Name of the referenced object.",
                            "type": "string"
                          },
                          "policy": {
                            "description": "Policies for referencing.",
                            "properties": {
                              "resolution": {
                                "default": "Required",
                                "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
                                "enum": [
                                  "Required",
                                  "Optional"
                                ],
                                "type": "string"
                              },
                              "resolve": {
                                "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
                                "enum": [
                                  "Always",
                                  "IfNotPresent"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "name"
                        ],
                        "type": "object",
                        "additionalProperties": false
                      },
                      "bucketSelector": {
                        "description": "Selector for a Bucket in s3 to populate bucket.",
                        "properties": {
                          "matchControllerRef": {
                            "description": "MatchControllerRef ensures an object with the same controller reference\nas the selecting object is selected.",
                            "type": "boolean"
                          },
                          "matchLabels": {
                            "additionalProperties": {
                              "type": "string"
                            },
                            "description": "MatchLabels ensures an object with matching labels is selected.",
                            "type": "object"
                          },
                          "policy": {
                            "description": "Policies for selection.",
                            "properties": {
                              "resolution": {
                                "default": "Required",
                                "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
                                "enum": [
                                  "Required",
                                  "Optional"
                                ],
                                "type": "string"
                              },
                              "resolve": {
                                "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
                                "enum": [
                                  "Always",
                                  "IfNotPresent"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "encryptionConfiguration": {
                        "description": "Configuration block that provides information about encryption. See below. If source_selection_criteria is specified, you must specify this element.",
                        "properties": {
                          "replicaKmsKeyId": {
                            "description": "ID (Key ARN or Alias ARN) of the customer managed AWS KMS key stored in AWS Key Management Service (KMS) for the destination bucket.",
                            "type": "string"
                          },
                          "replicaKmsKeyIdRef": {
                            "description": "Reference to a Key in kms to populate replicaKmsKeyId.",
                            "properties": {
                              "name": {
                                "description": "Name of the referenced object.",
                                "type": "string"
                              },
                              "policy": {
                                "description": "Policies for referencing.",
                                "properties": {
                                  "resolution": {
                                    "default": "Required",
                                    "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
                                    "enum": [
                                      "Required",
                                      "Optional"
                                    ],
                                    "type": "string"
                                  },
                                  "resolve": {
                                    "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
                                    "enum": [
                                      "Always",
                                      "IfNotPresent"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "type": "object",
                                "additionalProperties": false
                              }
                            },
                            "required": [
                              "name"
                            ],
                            "type": "object",
                            "additionalProperties": false
                          },
                          "replicaKmsKeyIdSelector": {
                            "description": "Selector for a Key in kms to populate replicaKmsKeyId.",
                            "properties": {
                              "matchControllerRef": {
                                "description": "MatchControllerRef ensures an object with the same controller reference\nas the selecting object is selected.",
                                "type": "boolean"
                              },
                              "matchLabels": {
                                "additionalProperties": {
                                  "type": "string"
                                },
                                "description": "MatchLabels ensures an object with matching labels is selected.",
                                "type": "object"
                              },
                              "policy": {
                                "description": "Policies for selection.",
                                "properties": {
                                  "resolution": {
                                    "default": "Required",
                                    "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
                                    "enum": [
                                      "Required",
                                      "Optional"
                                    ],
                                    "type": "string"
                                  },
                                  "resolve": {
                                    "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
                                    "enum": [
                                      "Always",
                                      "IfNotPresent"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "type": "object",
                                "additionalProperties": false
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "metrics": {
                        "description": "Configuration block that specifies replication metrics-related settings enabling replication metrics and events. See below.",
                        "properties": {
                          "eventThreshold": {
                            "description": "Configuration block that specifies the time threshold for emitting the s3:Replication:OperationMissedThreshold event. See below.",
                            "properties": {
                              "minutes": {
                                "description": "Time in minutes. Valid values: 15.",
                                "type": "number"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "status": {
                            "description": "Whether the existing objects should be replicated. Either \"Enabled\" or \"Disabled\".",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "replicationTime": {
                        "description": "Configuration block that specifies S3 Replication Time Control (S3 RTC), including whether S3 RTC is enabled and the time when all objects and operations on objects must be replicated. See below. Replication Time Control must be used in conjunction with metrics.",
                        "properties": {
                          "status": {
                            "description": "Whether the existing objects should be replicated. Either \"Enabled\" or \"Disabled\".",
                            "type": "string"
                          },
                          "time": {
                            "description": "Configuration block specifying the time by which replication should be complete for all objects and operations on objects. See below.",
                            "properties": {
                              "minutes": {
                                "description": "Time in minutes. Valid values: 15.",
                                "type": "number"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "storageClass": {
                        "description": "The storage class used to store the object. By default, Amazon S3 uses the storage class of the source object to create the object replica.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "existingObjectReplication": {
                    "description": "Replicate existing objects in the source bucket according to the rule configurations. See below.",
                    "properties": {
                      "status": {
                        "description": "Whether the existing objects should be replicated. Either \"Enabled\" or \"Disabled\".",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "filter": {
                    "description": "Filter that identifies subset of objects to which the replication rule applies. See below. If not specified, the rule will default to using prefix.",
                    "properties": {
                      "and": {
                        "description": "Configuration block for specifying rule filters. This element is required only if you specify more than one filter. See and below for more details.",
                        "properties": {
                          "prefix": {
                            "description": "Object key name prefix identifying one or more objects to which the rule applies. Must be less than or equal to 1024 characters in length. Defaults to an empty string (\"\") if filter is not specified.",
                            "type": "string"
                          },
                          "tags": {
                            "additionalProperties": {
                              "type": "string"
                            },
                            "description": "Map of tags (key and value pairs) that identifies a subset of objects to which the rule applies. The rule applies only to objects having all the tags in its tagset.",
                            "type": "object",
                            "x-kubernetes-map-type": "granular"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "prefix": {
                        "description": "Object key name prefix identifying one or more objects to which the rule applies. Must be less than or equal to 1024 characters in length. Defaults to an empty string (\"\") if filter is not specified.",
                        "type": "string"
                      },
                      "tag": {
                        "description": "Configuration block for specifying a tag key and value. See below.",
                        "properties": {
                          "key": {
                            "description": "Name of the object key.",
                            "type": "string"
                          },
                          "value": {
                            "description": "Value of the tag.",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "id": {
                    "description": "Unique identifier for the rule. Must be less than or equal to 255 characters in length.",
                    "type": "string"
                  },
                  "prefix": {
                    "description": "Object key name prefix identifying one or more objects to which the rule applies. Must be less than or equal to 1024 characters in length. Defaults to an empty string (\"\") if filter is not specified.",
                    "type": "string"
                  },
                  "priority": {
                    "description": "Priority associated with the rule. Priority should only be set if filter is configured. If not provided, defaults to 0. Priority must be unique between multiple rules.",
                    "type": "number"
                  },
                  "sourceSelectionCriteria": {
                    "description": "Specifies special object selection criteria. See below.",
                    "properties": {
                      "replicaModifications": {
                        "description": "Configuration block that you can specify for selections for modifications on replicas. Amazon S3 doesn't replicate replica modifications by default. In the latest version of replication configuration (when filter is specified), you can specify this element and set the status to Enabled to replicate modifications on replicas.",
                        "properties": {
                          "status": {
                            "description": "Whether the existing objects should be replicated. Either \"Enabled\" or \"Disabled\".",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "sseKmsEncryptedObjects": {
                        "description": "Configuration block for filter information for the selection of Amazon S3 objects encrypted with AWS KMS. If specified, replica_kms_key_id in destination encryption_configuration must be specified as well.",
                        "properties": {
                          "status": {
                            "description": "Whether the existing objects should be replicated. Either \"Enabled\" or \"Disabled\".",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "status": {
                    "description": "Status of the rule. Either \"Enabled\" or \"Disabled\". The rule is ignored if status is not \"Enabled\".",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "tokenSecretRef": {
              "description": "Token to allow replication to be enabled on an Object Lock-enabled bucket. You must contact AWS support for the bucket's \"Object Lock token\".\nFor more details, see Using S3 Object Lock with replication.",
              "properties": {
                "key": {
                  "description": "The key to select.",
                  "type": "string"
                },
                "name": {
                  "description": "Name of the secret.",
                  "type": "string"
                },
                "namespace": {
                  "description": "Namespace of the secret.",
                  "type": "string"
                }
              },
              "required": [
                "key",
                "name",
                "namespace"
              ],
              "type": "object",
              "additionalProperties": false
            }
          },
          "required": [
            "region"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "initProvider": {
          "description": "THIS IS A BETA FIELD. It will be honored\nunless the Management Policies feature flag is disabled.\nInitProvider holds the same fields as ForProvider, with the exception\nof Identifier and other resource reference fields. The fields that are\nin InitProvider are merged into ForProvider when the resource is created.\nThe same fields are also added to the terraform ignore_changes hook, to\navoid updating them after creation. This is useful for fields that are\nrequired on creation, but we do not desire to update them after creation,\nfor example because of an external controller is managing them, like an\nautoscaler.",
          "properties": {
            "bucket": {
              "description": "Name of the source S3 bucket you want Amazon S3 to monitor.",
              "type": "string"
            },
            "bucketRef": {
              "description": "Reference to a Bucket in s3 to populate bucket.",
              "properties": {
                "name": {
                  "description": "Name of the referenced object.",
                  "type": "string"
                },
                "policy": {
                  "description": "Policies for referencing.",
                  "properties": {
                    "resolution": {
                      "default": "Required",
                      "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
                      "enum": [
                        "Required",
                        "Optional"
                      ],
                      "type": "string"
                    },
                    "resolve": {
                      "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
                      "enum": [
                        "Always",
                        "IfNotPresent"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "required": [
                "name"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "bucketSelector": {
              "description": "Selector for a Bucket in s3 to populate bucket.",
              "properties": {
                "matchControllerRef": {
                  "description": "MatchControllerRef ensures an object with the same controller reference\nas the selecting object is selected.",
                  "type": "boolean"
                },
                "matchLabels": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "MatchLabels ensures an object with matching labels is selected.",
                  "type": "object"
                },
                "policy": {
                  "description": "Policies for selection.",
                  "properties": {
                    "resolution": {
                      "default": "Required",
                      "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
                      "enum": [
                        "Required",
                        "Optional"
                      ],
                      "type": "string"
                    },
                    "resolve": {
                      "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
                      "enum": [
                        "Always",
                        "IfNotPresent"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "role": {
              "description": "ARN of the IAM role for Amazon S3 to assume when replicating the objects.",
              "type": "string"
            },
            "roleRef": {
              "description": "Reference to a Role in iam to populate role.",
              "properties": {
                "name": {
                  "description": "Name of the referenced object.",
                  "type": "string"
                },
                "policy": {
                  "description": "Policies for referencing.",
                  "properties": {
                    "resolution": {
                      "default": "Required",
                      "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
                      "enum": [
                        "Required",
                        "Optional"
                      ],
                      "type": "string"
                    },
                    "resolve": {
                      "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
                      "enum": [
                        "Always",
                        "IfNotPresent"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "required": [
                "name"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "roleSelector": {
              "description": "Selector for a Role in iam to populate role.",
              "properties": {
                "matchControllerRef": {
                  "description": "MatchControllerRef ensures an object with the same controller reference\nas the selecting object is selected.",
                  "type": "boolean"
                },
                "matchLabels": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "MatchLabels ensures an object with matching labels is selected.",
                  "type": "object"
                },
                "policy": {
                  "description": "Policies for selection.",
                  "properties": {
                    "resolution": {
                      "default": "Required",
                      "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
                      "enum": [
                        "Required",
                        "Optional"
                      ],
                      "type": "string"
                    },
                    "resolve": {
                      "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
                      "enum": [
                        "Always",
                        "IfNotPresent"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "rule": {
              "description": "List of configuration blocks describing the rules managing the replication. See below.",
              "items": {
                "properties": {
                  "deleteMarkerReplication": {
                    "description": "Whether delete markers are replicated. This argument is only valid with V2 replication configurations (i.e., when filter is used)documented below.",
                    "properties": {
                      "status": {
                        "description": "Whether delete markers should be replicated. Either \"Enabled\" or \"Disabled\".",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "destination": {
                    "description": "Specifies the destination for the rule. See below.",
                    "properties": {
                      "accessControlTranslation": {
                        "description": "Configuration block that specifies the overrides to use for object owners on replication. See below. Specify this only in a cross-account scenario (where source and destination bucket owners are not the same), and you want to change replica ownership to the AWS account that owns the destination bucket. If this is not specified in the replication configuration, the replicas are owned by same AWS account that owns the source object. Must be used in conjunction with account owner override configuration.",
                        "properties": {
                          "owner": {
                            "description": "Specifies the replica ownership. For default and valid values, see PUT bucket replication in the Amazon S3 API Reference. Valid values: Destination.",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "account": {
                        "description": "Account ID to specify the replica ownership. Must be used in conjunction with access_control_translation override configuration.",
                        "type": "string"
                      },
                      "bucket": {
                        "description": "ARN of the bucket where you want Amazon S3 to store the results.",
                        "type": "string"
                      },
                      "bucketRef": {
                        "description": "Reference to a Bucket in s3 to populate bucket.",
                        "properties": {
                          "name": {
                            "description": "Name of the referenced object.",
                            "type": "string"
                          },
                          "policy": {
                            "description": "Policies for referencing.",
                            "properties": {
                              "resolution": {
                                "default": "Required",
                                "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
                                "enum": [
                                  "Required",
                                  "Optional"
                                ],
                                "type": "string"
                              },
                              "resolve": {
                                "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
                                "enum": [
                                  "Always",
                                  "IfNotPresent"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "name"
                        ],
                        "type": "object",
                        "additionalProperties": false
                      },
                      "bucketSelector": {
                        "description": "Selector for a Bucket in s3 to populate bucket.",
                        "properties": {
                          "matchControllerRef": {
                            "description": "MatchControllerRef ensures an object with the same controller reference\nas the selecting object is selected.",
                            "type": "boolean"
                          },
                          "matchLabels": {
                            "additionalProperties": {
                              "type": "string"
                            },
                            "description": "MatchLabels ensures an object with matching labels is selected.",
                            "type": "object"
                          },
                          "policy": {
                            "description": "Policies for selection.",
                            "properties": {
                              "resolution": {
                                "default": "Required",
                                "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
                                "enum": [
                                  "Required",
                                  "Optional"
                                ],
                                "type": "string"
                              },
                              "resolve": {
                                "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
                                "enum": [
                                  "Always",
                                  "IfNotPresent"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "encryptionConfiguration": {
                        "description": "Configuration block that provides information about encryption. See below. If source_selection_criteria is specified, you must specify this element.",
                        "properties": {
                          "replicaKmsKeyId": {
                            "description": "ID (Key ARN or Alias ARN) of the customer managed AWS KMS key stored in AWS Key Management Service (KMS) for the destination bucket.",
                            "type": "string"
                          },
                          "replicaKmsKeyIdRef": {
                            "description": "Reference to a Key in kms to populate replicaKmsKeyId.",
                            "properties": {
                              "name": {
                                "description": "Name of the referenced object.",
                                "type": "string"
                              },
                              "policy": {
                                "description": "Policies for referencing.",
                                "properties": {
                                  "resolution": {
                                    "default": "Required",
                                    "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
                                    "enum": [
                                      "Required",
                                      "Optional"
                                    ],
                                    "type": "string"
                                  },
                                  "resolve": {
                                    "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
                                    "enum": [
                                      "Always",
                                      "IfNotPresent"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "type": "object",
                                "additionalProperties": false
                              }
                            },
                            "required": [
                              "name"
                            ],
                            "type": "object",
                            "additionalProperties": false
                          },
                          "replicaKmsKeyIdSelector": {
                            "description": "Selector for a Key in kms to populate replicaKmsKeyId.",
                            "properties": {
                              "matchControllerRef": {
                                "description": "MatchControllerRef ensures an object with the same controller reference\nas the selecting object is selected.",
                                "type": "boolean"
                              },
                              "matchLabels": {
                                "additionalProperties": {
                                  "type": "string"
                                },
                                "description": "MatchLabels ensures an object with matching labels is selected.",
                                "type": "object"
                              },
                              "policy": {
                                "description": "Policies for selection.",
                                "properties": {
                                  "resolution": {
                                    "default": "Required",
                                    "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
                                    "enum": [
                                      "Required",
                                      "Optional"
                                    ],
                                    "type": "string"
                                  },
                                  "resolve": {
                                    "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
                                    "enum": [
                                      "Always",
                                      "IfNotPresent"
                                    ],
                                    "type": "string"
                                  }
                                },
                                "type": "object",
                                "additionalProperties": false
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "metrics": {
                        "description": "Configuration block that specifies replication metrics-related settings enabling replication metrics and events. See below.",
                        "properties": {
                          "eventThreshold": {
                            "description": "Configuration block that specifies the time threshold for emitting the s3:Replication:OperationMissedThreshold event. See below.",
                            "properties": {
                              "minutes": {
                                "description": "Time in minutes. Valid values: 15.",
                                "type": "number"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "status": {
                            "description": "Whether the existing objects should be replicated. Either \"Enabled\" or \"Disabled\".",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "replicationTime": {
                        "description": "Configuration block that specifies S3 Replication Time Control (S3 RTC), including whether S3 RTC is enabled and the time when all objects and operations on objects must be replicated. See below. Replication Time Control must be used in conjunction with metrics.",
                        "properties": {
                          "status": {
                            "description": "Whether the existing objects should be replicated. Either \"Enabled\" or \"Disabled\".",
                            "type": "string"
                          },
                          "time": {
                            "description": "Configuration block specifying the time by which replication should be complete for all objects and operations on objects. See below.",
                            "properties": {
                              "minutes": {
                                "description": "Time in minutes. Valid values: 15.",
                                "type": "number"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "storageClass": {
                        "description": "The storage class used to store the object. By default, Amazon S3 uses the storage class of the source object to create the object replica.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "existingObjectReplication": {
                    "description": "Replicate existing objects in the source bucket according to the rule configurations. See below.",
                    "properties": {
                      "status": {
                        "description": "Whether the existing objects should be replicated. Either \"Enabled\" or \"Disabled\".",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "filter": {
                    "description": "Filter that identifies subset of objects to which the replication rule applies. See below. If not specified, the rule will default to using prefix.",
                    "properties": {
                      "and": {
                        "description": "Configuration block for specifying rule filters. This element is required only if you specify more than one filter. See and below for more details.",
                        "properties": {
                          "prefix": {
                            "description": "Object key name prefix identifying one or more objects to which the rule applies. Must be less than or equal to 1024 characters in length. Defaults to an empty string (\"\") if filter is not specified.",
                            "type": "string"
                          },
                          "tags": {
                            "additionalProperties": {
                              "type": "string"
                            },
                            "description": "Map of tags (key and value pairs) that identifies a subset of objects to which the rule applies. The rule applies only to objects having all the tags in its tagset.",
                            "type": "object",
                            "x-kubernetes-map-type": "granular"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "prefix": {
                        "description": "Object key name prefix identifying one or more objects to which the rule applies. Must be less than or equal to 1024 characters in length. Defaults to an empty string (\"\") if filter is not specified.",
                        "type": "string"
                      },
                      "tag": {
                        "description": "Configuration block for specifying a tag key and value. See below.",
                        "properties": {
                          "key": {
                            "description": "Name of the object key.",
                            "type": "string"
                          },
                          "value": {
                            "description": "Value of the tag.",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "id": {
                    "description": "Unique identifier for the rule. Must be less than or equal to 255 characters in length.",
                    "type": "string"
                  },
                  "prefix": {
                    "description": "Object key name prefix identifying one or more objects to which the rule applies. Must be less than or equal to 1024 characters in length. Defaults to an empty string (\"\") if filter is not specified.",
                    "type": "string"
                  },
                  "priority": {
                    "description": "Priority associated with the rule. Priority should only be set if filter is configured. If not provided, defaults to 0. Priority must be unique between multiple rules.",
                    "type": "number"
                  },
                  "sourceSelectionCriteria": {
                    "description": "Specifies special object selection criteria. See below.",
                    "properties": {
                      "replicaModifications": {
                        "description": "Configuration block that you can specify for selections for modifications on replicas. Amazon S3 doesn't replicate replica modifications by default. In the latest version of replication configuration (when filter is specified), you can specify this element and set the status to Enabled to replicate modifications on replicas.",
                        "properties": {
                          "status": {
                            "description": "Whether the existing objects should be replicated. Either \"Enabled\" or \"Disabled\".",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "sseKmsEncryptedObjects": {
                        "description": "Configuration block for filter information for the selection of Amazon S3 objects encrypted with AWS KMS. If specified, replica_kms_key_id in destination encryption_configuration must be specified as well.",
                        "properties": {
                          "status": {
                            "description": "Whether the existing objects should be replicated. Either \"Enabled\" or \"Disabled\".",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "status": {
                    "description": "Status of the rule. Either \"Enabled\" or \"Disabled\". The rule is ignored if status is not \"Enabled\".",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "tokenSecretRef": {
              "description": "Token to allow replication to be enabled on an Object Lock-enabled bucket. You must contact AWS support for the bucket's \"Object Lock token\".\nFor more details, see Using S3 Object Lock with replication.",
              "properties": {
                "key": {
                  "description": "The key to select.",
                  "type": "string"
                },
                "name": {
                  "description": "Name of the secret.",
                  "type": "string"
                },
                "namespace": {
                  "description": "Namespace of the secret.",
                  "type": "string"
                }
              },
              "required": [
                "key",
                "name",
                "namespace"
              ],
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "managementPolicies": {
          "default": [
            "*"
          ],
          "description": "THIS IS A BETA FIELD. It is on by default but can be opted out\nthrough a Crossplane feature flag.\nManagementPolicies specify the array of actions Crossplane is allowed to\ntake on the managed and external resources.\nThis field is planned to replace the DeletionPolicy field in a future\nrelease. Currently, both could be set independently and non-default\nvalues would be honored if the feature flag is enabled. If both are\ncustom, the DeletionPolicy field will be ignored.\nSee the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223\nand this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md",
          "items": {
            "description": "A ManagementAction represents an action that the Crossplane controllers\ncan take on an external resource.",
            "enum": [
              "Observe",
              "Create",
              "Update",
              "Delete",
              "LateInitialize",
              "*"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "providerConfigRef": {
          "default": {
            "name": "default"
          },
          "description": "ProviderConfigReference specifies how the provider that will be used to\ncreate, observe, update, and delete this managed resource should be\nconfigured.",
          "properties": {
            "name": {
              "description": "Name of the referenced object.",
              "type": "string"
            },
            "policy": {
              "description": "Policies for referencing.",
              "properties": {
                "resolution": {
                  "default": "Required",
                  "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
                  "enum": [
                    "Required",
                    "Optional"
                  ],
                  "type": "string"
                },
                "resolve": {
                  "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
                  "enum": [
                    "Always",
                    "IfNotPresent"
                  ],
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "required": [
            "name"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "writeConnectionSecretToRef": {
          "description": "WriteConnectionSecretToReference specifies the namespace and name of a\nSecret to which any connection details for this managed resource should\nbe written. Connection details frequently include the endpoint, username,\nand password required to connect to the managed resource.",
          "properties": {
            "name": {
              "description": "Name of the secret.",
              "type": "string"
            },
            "namespace": {
              "description": "Namespace of the secret.",
              "type": "string"
            }
          },
          "required": [
            "name",
            "namespace"
          ],
          "type": "object",
          "additionalProperties": false
        }
      },
      "required": [
        "forProvider"
      ],
      "type": "object",
      "x-kubernetes-validations": [
        {
          "message": "spec.forProvider.rule is a required parameter",
          "rule": "!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.rule) || (has(self.initProvider) && has(self.initProvider.rule))"
        }
      ],
      "additionalProperties": false
    },
    "status": {
      "description": "BucketReplicationConfigurationStatus defines the observed state of BucketReplicationConfiguration.",
      "properties": {
        "atProvider": {
          "properties": {
            "bucket": {
              "description": "Name of the source S3 bucket you want Amazon S3 to monitor.",
              "type": "string"
            },
            "id": {
              "description": "S3 source bucket name.",
              "type": "string"
            },
            "region": {
              "description": "Region where this resource will be managed. Defaults to the Region set in the provider configuration.\nRegion is the region you'd like your resource to be created in.",
              "type": "string"
            },
            "role": {
              "description": "ARN of the IAM role for Amazon S3 to assume when replicating the objects.",
              "type": "string"
            },
            "rule": {
              "description": "List of configuration blocks describing the rules managing the replication. See below.",
              "items": {
                "properties": {
                  "deleteMarkerReplication": {
                    "description": "Whether delete markers are replicated. This argument is only valid with V2 replication configurations (i.e., when filter is used)documented below.",
                    "properties": {
                      "status": {
                        "description": "Whether delete markers should be replicated. Either \"Enabled\" or \"Disabled\".",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "destination": {
                    "description": "Specifies the destination for the rule. See below.",
                    "properties": {
                      "accessControlTranslation": {
                        "description": "Configuration block that specifies the overrides to use for object owners on replication. See below. Specify this only in a cross-account scenario (where source and destination bucket owners are not the same), and you want to change replica ownership to the AWS account that owns the destination bucket. If this is not specified in the replication configuration, the replicas are owned by same AWS account that owns the source object. Must be used in conjunction with account owner override configuration.",
                        "properties": {
                          "owner": {
                            "description": "Specifies the replica ownership. For default and valid values, see PUT bucket replication in the Amazon S3 API Reference. Valid values: Destination.",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "account": {
                        "description": "Account ID to specify the replica ownership. Must be used in conjunction with access_control_translation override configuration.",
                        "type": "string"
                      },
                      "bucket": {
                        "description": "ARN of the bucket where you want Amazon S3 to store the results.",
                        "type": "string"
                      },
                      "encryptionConfiguration": {
                        "description": "Configuration block that provides information about encryption. See below. If source_selection_criteria is specified, you must specify this element.",
                        "properties": {
                          "replicaKmsKeyId": {
                            "description": "ID (Key ARN or Alias ARN) of the customer managed AWS KMS key stored in AWS Key Management Service (KMS) for the destination bucket.",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "metrics": {
                        "description": "Configuration block that specifies replication metrics-related settings enabling replication metrics and events. See below.",
                        "properties": {
                          "eventThreshold": {
                            "description": "Configuration block that specifies the time threshold for emitting the s3:Replication:OperationMissedThreshold event. See below.",
                            "properties": {
                              "minutes": {
                                "description": "Time in minutes. Valid values: 15.",
                                "type": "number"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "status": {
                            "description": "Whether the existing objects should be replicated. Either \"Enabled\" or \"Disabled\".",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "replicationTime": {
                        "description": "Configuration block that specifies S3 Replication Time Control (S3 RTC), including whether S3 RTC is enabled and the time when all objects and operations on objects must be replicated. See below. Replication Time Control must be used in conjunction with metrics.",
                        "properties": {
                          "status": {
                            "description": "Whether the existing objects should be replicated. Either \"Enabled\" or \"Disabled\".",
                            "type": "string"
                          },
                          "time": {
                            "description": "Configuration block specifying the time by which replication should be complete for all objects and operations on objects. See below.",
                            "properties": {
                              "minutes": {
                                "description": "Time in minutes. Valid values: 15.",
                                "type": "number"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "storageClass": {
                        "description": "The storage class used to store the object. By default, Amazon S3 uses the storage class of the source object to create the object replica.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "existingObjectReplication": {
                    "description": "Replicate existing objects in the source bucket according to the rule configurations. See below.",
                    "properties": {
                      "status": {
                        "description": "Whether the existing objects should be replicated. Either \"Enabled\" or \"Disabled\".",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "filter": {
                    "description": "Filter that identifies subset of objects to which the replication rule applies. See below. If not specified, the rule will default to using prefix.",
                    "properties": {
                      "and": {
                        "description": "Configuration block for specifying rule filters. This element is required only if you specify more than one filter. See and below for more details.",
                        "properties": {
                          "prefix": {
                            "description": "Object key name prefix identifying one or more objects to which the rule applies. Must be less than or equal to 1024 characters in length. Defaults to an empty string (\"\") if filter is not specified.",
                            "type": "string"
                          },
                          "tags": {
                            "additionalProperties": {
                              "type": "string"
                            },
                            "description": "Map of tags (key and value pairs) that identifies a subset of objects to which the rule applies. The rule applies only to objects having all the tags in its tagset.",
                            "type": "object",
                            "x-kubernetes-map-type": "granular"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "prefix": {
                        "description": "Object key name prefix identifying one or more objects to which the rule applies. Must be less than or equal to 1024 characters in length. Defaults to an empty string (\"\") if filter is not specified.",
                        "type": "string"
                      },
                      "tag": {
                        "description": "Configuration block for specifying a tag key and value. See below.",
                        "properties": {
                          "key": {
                            "description": "Name of the object key.",
                            "type": "string"
                          },
                          "value": {
                            "description": "Value of the tag.",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "id": {
                    "description": "Unique identifier for the rule. Must be less than or equal to 255 characters in length.",
                    "type": "string"
                  },
                  "prefix": {
                    "description": "Object key name prefix identifying one or more objects to which the rule applies. Must be less than or equal to 1024 characters in length. Defaults to an empty string (\"\") if filter is not specified.",
                    "type": "string"
                  },
                  "priority": {
                    "description": "Priority associated with the rule. Priority should only be set if filter is configured. If not provided, defaults to 0. Priority must be unique between multiple rules.",
                    "type": "number"
                  },
                  "sourceSelectionCriteria": {
                    "description": "Specifies special object selection criteria. See below.",
                    "properties": {
                      "replicaModifications": {
                        "description": "Configuration block that you can specify for selections for modifications on replicas. Amazon S3 doesn't replicate replica modifications by default. In the latest version of replication configuration (when filter is specified), you can specify this element and set the status to Enabled to replicate modifications on replicas.",
                        "properties": {
                          "status": {
                            "description": "Whether the existing objects should be replicated. Either \"Enabled\" or \"Disabled\".",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "sseKmsEncryptedObjects": {
                        "description": "Configuration block for filter information for the selection of Amazon S3 objects encrypted with AWS KMS. If specified, replica_kms_key_id in destination encryption_configuration must be specified as well.",
                        "properties": {
                          "status": {
                            "description": "Whether the existing objects should be replicated. Either \"Enabled\" or \"Disabled\".",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "status": {
                    "description": "Status of the rule. Either \"Enabled\" or \"Disabled\". The rule is ignored if status is not \"Enabled\".",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "conditions": {
          "description": "Conditions of the resource.",
          "items": {
            "description": "A Condition that may apply to a resource.",
            "properties": {
              "lastTransitionTime": {
                "description": "LastTransitionTime is the last time this condition transitioned from one\nstatus to another.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "A Message containing details about this condition's last transition from\none status to another, if any.",
                "type": "string"
              },
              "observedGeneration": {
                "description": "ObservedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.",
                "format": "int64",
                "type": "integer"
              },
              "reason": {
                "description": "A Reason for this condition's last transition from one status to another.",
                "type": "string"
              },
              "status": {
                "description": "Status of this condition; is it currently True, False, or Unknown?",
                "type": "string"
              },
              "type": {
                "description": "Type of this condition. At most one of each condition type may apply to\na resource at any point in time.",
                "type": "string"
              }
            },
            "required": [
              "lastTransitionTime",
              "reason",
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array",
          "x-kubernetes-list-map-keys": [
            "type"
          ],
          "x-kubernetes-list-type": "map"
        },
        "observedGeneration": {
          "description": "ObservedGeneration is the latest metadata.generation\nwhich resulted in either a ready state, or stalled due to error\nit can not recover from without human intervention.",
          "format": "int64",
          "type": "integer"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}
