{
  "description": "Addon is the Schema for the Addons API",
  "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": "AddonSpec defines the desired state of Addon.\n\nAn Amazon EKS add-on. For more information, see Amazon EKS add-ons (https://docs.aws.amazon.com/eks/latest/userguide/eks-add-ons.html)\nin the Amazon EKS User Guide.",
      "properties": {
        "addonVersion": {
          "description": "The version of the add-on. The version must match one of the versions returned\nby DescribeAddonVersions (https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html).",
          "type": "string"
        },
        "clientRequestToken": {
          "description": "A unique, case-sensitive identifier that you provide to ensurethe idempotency\nof the request.",
          "type": "string"
        },
        "clusterName": {
          "description": "The name of your cluster.",
          "type": "string"
        },
        "clusterRef": {
          "description": "AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\ntype to provide more user friendly syntax for references using 'from' field\nEx:\nAPIIDRef:\n\n\tfrom:\n\t  name: my-api",
          "properties": {
            "from": {
              "description": "AWSResourceReference provides all the values necessary to reference another\nk8s resource for finding the identifier(Id/ARN/Name)",
              "properties": {
                "name": {
                  "type": "string"
                },
                "namespace": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "configurationValues": {
          "description": "The set of configuration values for the add-on that's created. The values\nthat you provide are validated against the schema returned by DescribeAddonConfiguration.",
          "type": "string"
        },
        "name": {
          "description": "The name of the add-on. The name must match one of the names returned by\nDescribeAddonVersions.",
          "type": "string"
        },
        "podIdentityAssociations": {
          "description": "An array of Pod Identity Assocations to be created. Each EKS Pod Identity\nassociation maps a Kubernetes service account to an IAM Role.\n\nFor more information, see Attach an IAM Role to an Amazon EKS add-on using\nPod Identity (https://docs.aws.amazon.com/eks/latest/userguide/add-ons-iam.html)\nin the Amazon EKS User Guide.",
          "items": {
            "description": "A type of Pod Identity Association owned by an Amazon EKS Add-on.\n\nEach EKS Pod Identity Association maps a role to a service account in a namespace\nin the cluster.\n\nFor more information, see Attach an IAM Role to an Amazon EKS add-on using\nPod Identity (https://docs.aws.amazon.com/eks/latest/userguide/add-ons-iam.html)\nin the Amazon EKS User Guide.",
            "properties": {
              "roleARN": {
                "type": "string"
              },
              "serviceAccount": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "resolveConflicts": {
          "description": "How to resolve field value conflicts for an Amazon EKS add-on. Conflicts\nare handled based on the value you choose:\n\n  - None \u2013 If the self-managed version of the add-on is installed on your\n    cluster, Amazon EKS doesn't change the value. Creation of the add-on might\n    fail.\n\n  - Overwrite \u2013 If the self-managed version of the add-on is installed\n    on your cluster and the Amazon EKS default value is different than the\n    existing value, Amazon EKS changes the value to the Amazon EKS default\n    value.\n\n  - Preserve \u2013 This is similar to the NONE option. If the self-managed\n    version of the add-on is installed on your cluster Amazon EKS doesn't\n    change the add-on resource properties. Creation of the add-on might fail\n    if conflicts are detected. This option works differently during the update\n    operation. For more information, see UpdateAddon (https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateAddon.html).\n\nIf you don't currently have the self-managed version of the add-on installed\non your cluster, the Amazon EKS add-on is installed. Amazon EKS sets all\nvalues to default values, regardless of the option that you specify.",
          "type": "string"
        },
        "serviceAccountRoleARN": {
          "description": "The Amazon Resource Name (ARN) of an existing IAM role to bind to the add-on's\nservice account. The role must be assigned the IAM permissions required by\nthe add-on. If you don't specify an existing IAM role, then the add-on uses\nthe permissions assigned to the node IAM role. For more information, see\nAmazon EKS node IAM role (https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html)\nin the Amazon EKS User Guide.\n\nTo specify an existing IAM role, you must have an IAM OpenID Connect (OIDC)\nprovider created for your cluster. For more information, see Enabling IAM\nroles for service accounts on your cluster (https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html)\nin the Amazon EKS User Guide.",
          "type": "string"
        },
        "serviceAccountRoleRef": {
          "description": "AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\ntype to provide more user friendly syntax for references using 'from' field\nEx:\nAPIIDRef:\n\n\tfrom:\n\t  name: my-api",
          "properties": {
            "from": {
              "description": "AWSResourceReference provides all the values necessary to reference another\nk8s resource for finding the identifier(Id/ARN/Name)",
              "properties": {
                "name": {
                  "type": "string"
                },
                "namespace": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata that assists with categorization and organization. Each tag consists\nof a key and an optional value. You define both. Tags don't propagate to\nany other cluster or Amazon Web Services resources.",
          "type": "object"
        }
      },
      "required": [
        "name"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "AddonStatus defines the observed state of Addon",
      "properties": {
        "ackResourceMetadata": {
          "description": "All CRs managed by ACK have a common `Status.ACKResourceMetadata` member\nthat is used to contain resource sync state, account ownership,\nconstructed ARN for the resource",
          "properties": {
            "arn": {
              "description": "ARN is the Amazon Resource Name for the resource. This is a\nglobally-unique identifier and is set only by the ACK service controller\nonce the controller has orchestrated the creation of the resource OR\nwhen it has verified that an \"adopted\" resource (a resource where the\nARN annotation was set by the Kubernetes user on the CR) exists and\nmatches the supplied CR's Spec field values.\nhttps://github.com/aws/aws-controllers-k8s/issues/270",
              "type": "string"
            },
            "ownerAccountID": {
              "description": "OwnerAccountID is the AWS Account ID of the account that owns the\nbackend AWS service API resource.",
              "type": "string"
            },
            "region": {
              "description": "Region is the AWS region in which the resource exists or will exist.",
              "type": "string"
            }
          },
          "required": [
            "ownerAccountID",
            "region"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "conditions": {
          "description": "All CRs managed by ACK have a common `Status.Conditions` member that\ncontains a collection of `ackv1alpha1.Condition` objects that describe\nthe various terminal states of the CR and its backend AWS service API\nresource",
          "items": {
            "description": "Condition is the common struct used by all CRDs managed by ACK service\ncontrollers to indicate terminal states  of the CR and its backend AWS\nservice API resource",
            "properties": {
              "lastTransitionTime": {
                "description": "Last time the condition transitioned from one status to another.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "A human readable message indicating details about the transition.",
                "type": "string"
              },
              "reason": {
                "description": "The reason for the condition's last transition.",
                "type": "string"
              },
              "status": {
                "description": "Status of the condition, one of True, False, Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type is the type of the Condition",
                "type": "string"
              }
            },
            "required": [
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "createdAt": {
          "description": "The Unix epoch timestamp at object creation.",
          "format": "date-time",
          "type": "string"
        },
        "health": {
          "description": "An object that represents the health of the add-on.",
          "properties": {
            "issues": {
              "items": {
                "description": "An issue related to an add-on.",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "resourceIDs": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "marketplaceInformation": {
          "description": "Information about an Amazon EKS add-on from the Amazon Web Services Marketplace.",
          "properties": {
            "productID": {
              "type": "string"
            },
            "productURL": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "modifiedAt": {
          "description": "The Unix epoch timestamp for the last modification to the object.",
          "format": "date-time",
          "type": "string"
        },
        "owner": {
          "description": "The owner of the add-on.",
          "type": "string"
        },
        "publisher": {
          "description": "The publisher of the add-on.",
          "type": "string"
        },
        "status": {
          "description": "The status of the add-on.",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
