{
  "description": "Generator information:\n- Generated from: /kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/stable/2023-05-01/extensions.json\n- ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/extensions/{extensionName}",
  "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": {
      "properties": {
        "aksAssignedIdentity": {
          "description": "AksAssignedIdentity: Identity of the Extension resource in an AKS cluster",
          "properties": {
            "type": {
              "description": "Type: The identity type.",
              "enum": [
                "SystemAssigned",
                "UserAssigned"
              ],
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "autoUpgradeMinorVersion": {
          "description": "AutoUpgradeMinorVersion: Flag to note if this extension participates in auto upgrade of minor version, or not.",
          "type": "boolean"
        },
        "azureName": {
          "description": "AzureName: The name of the resource in Azure. This is often the same as the name of the resource in Kubernetes but it\ndoesn't have to be.",
          "type": "string"
        },
        "configurationProtectedSettings": {
          "description": "ConfigurationProtectedSettings: Configuration settings that are sensitive, as name-value pairs for configuring this\nextension.",
          "properties": {
            "name": {
              "description": "Name is the name of the Kubernetes secret being referenced.\nThe secret must be in the same namespace as the resource",
              "type": "string"
            }
          },
          "required": [
            "name"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "configurationSettings": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "ConfigurationSettings: Configuration settings, as name-value pairs for configuring this extension.",
          "type": "object"
        },
        "extensionType": {
          "description": "ExtensionType: Type of the Extension, of which this resource is an instance of.  It must be one of the Extension Types\nregistered with Microsoft.KubernetesConfiguration by the Extension publisher.",
          "type": "string"
        },
        "identity": {
          "description": "Identity: Identity of the Extension resource",
          "properties": {
            "type": {
              "description": "Type: The identity type.",
              "enum": [
                "SystemAssigned"
              ],
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "operatorSpec": {
          "description": "OperatorSpec: The specification for configuring operator behavior. This field is interpreted by the operator and not\npassed directly to Azure",
          "properties": {
            "configMapExpressions": {
              "description": "ConfigMapExpressions: configures where to place operator written dynamic ConfigMaps (created with CEL expressions).",
              "items": {
                "description": "DestinationExpression is a CEL expression and a destination to store the result in. The destination may\nbe a secret or a configmap. The value of the expression is stored at the specified location in\nthe destination.",
                "properties": {
                  "key": {
                    "description": "Key is the key in the ConfigMap or Secret being written to. If the CEL expression in Value returns a string\nthis is required to identify what key to write to. If the CEL expression in Value returns a map[string]string\nKey must not be set, instead the keys written will be determined dynamically based on the keys of the resulting\nmap[string]string.",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name is the name of the Kubernetes configmap or secret to write to.\nThe configmap or secret will be created in the same namespace as the resource.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value is a CEL expression. The CEL expression may return a string or a map[string]string. For more information\non CEL in ASO see https://azure.github.io/azure-service-operator/guide/expressions/",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "value"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "configMaps": {
              "description": "ConfigMaps: configures where to place operator written ConfigMaps.",
              "properties": {
                "principalId": {
                  "description": "PrincipalId: indicates where the PrincipalId config map should be placed. If omitted, no config map will be created.",
                  "properties": {
                    "key": {
                      "description": "Key is the key in the ConfigMap being referenced",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name is the name of the Kubernetes ConfigMap to write to.\nThe ConfigMap will be created in the same namespace as the resource.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "secretExpressions": {
              "description": "SecretExpressions: configures where to place operator written dynamic secrets (created with CEL expressions).",
              "items": {
                "description": "DestinationExpression is a CEL expression and a destination to store the result in. The destination may\nbe a secret or a configmap. The value of the expression is stored at the specified location in\nthe destination.",
                "properties": {
                  "key": {
                    "description": "Key is the key in the ConfigMap or Secret being written to. If the CEL expression in Value returns a string\nthis is required to identify what key to write to. If the CEL expression in Value returns a map[string]string\nKey must not be set, instead the keys written will be determined dynamically based on the keys of the resulting\nmap[string]string.",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name is the name of the Kubernetes configmap or secret to write to.\nThe configmap or secret will be created in the same namespace as the resource.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value is a CEL expression. The CEL expression may return a string or a map[string]string. For more information\non CEL in ASO see https://azure.github.io/azure-service-operator/guide/expressions/",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "value"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "owner": {
          "description": "Owner: The owner of the resource. The owner controls where the resource goes when it is deployed. The owner also\ncontrols the resources lifecycle. When the owner is deleted the resource will also be deleted. This resource is an\nextension resource, which means that any other Azure resource can be its owner.",
          "properties": {
            "armId": {
              "description": "Ownership across namespaces is not supported.",
              "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
              "type": "string"
            },
            "group": {
              "description": "Group is the Kubernetes group of the resource.",
              "type": "string"
            },
            "kind": {
              "description": "Kind is the Kubernetes kind of the resource.",
              "type": "string"
            },
            "name": {
              "description": "This is the name of the Kubernetes resource to reference.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "plan": {
          "description": "Plan: The plan information.",
          "properties": {
            "name": {
              "description": "Name: A user defined name of the 3rd Party Artifact that is being procured.",
              "type": "string"
            },
            "product": {
              "description": "Product: The 3rd Party artifact that is being procured. E.g. NewRelic. Product maps to the OfferID specified for the\nartifact at the time of Data Market onboarding.",
              "type": "string"
            },
            "promotionCode": {
              "description": "PromotionCode: A publisher provided promotion code as provisioned in Data Market for the said product/artifact.",
              "type": "string"
            },
            "publisher": {
              "description": "Publisher: The publisher of the 3rd Party Artifact that is being bought. E.g. NewRelic",
              "type": "string"
            },
            "version": {
              "description": "Version: The version of the desired product/artifact.",
              "type": "string"
            }
          },
          "required": [
            "name",
            "product",
            "publisher"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "releaseTrain": {
          "description": "ReleaseTrain: ReleaseTrain this extension participates in for auto-upgrade (e.g. Stable, Preview, etc.) - only if\nautoUpgradeMinorVersion is 'true'.",
          "type": "string"
        },
        "scope": {
          "description": "Scope: Scope at which the extension is installed.",
          "properties": {
            "cluster": {
              "description": "Cluster: Specifies that the scope of the extension is Cluster",
              "properties": {
                "releaseNamespace": {
                  "description": "ReleaseNamespace: Namespace where the extension Release must be placed, for a Cluster scoped extension.  If this\nnamespace does not exist, it will be created",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "namespace": {
              "description": "Namespace: Specifies that the scope of the extension is Namespace",
              "properties": {
                "targetNamespace": {
                  "description": "TargetNamespace: Namespace where the extension will be created for an Namespace scoped extension.  If this namespace\ndoes not exist, it will be created",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "systemData": {
          "description": "SystemData: Top level metadata\nhttps://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/common-api-contracts.md#system-metadata-for-all-azure-resources",
          "properties": {
            "createdAt": {
              "description": "CreatedAt: The timestamp of resource creation (UTC).",
              "type": "string"
            },
            "createdBy": {
              "description": "CreatedBy: The identity that created the resource.",
              "type": "string"
            },
            "createdByType": {
              "description": "CreatedByType: The type of identity that created the resource.",
              "enum": [
                "Application",
                "Key",
                "ManagedIdentity",
                "User"
              ],
              "type": "string"
            },
            "lastModifiedAt": {
              "description": "LastModifiedAt: The timestamp of resource last modification (UTC)",
              "type": "string"
            },
            "lastModifiedBy": {
              "description": "LastModifiedBy: The identity that last modified the resource.",
              "type": "string"
            },
            "lastModifiedByType": {
              "description": "LastModifiedByType: The type of identity that last modified the resource.",
              "enum": [
                "Application",
                "Key",
                "ManagedIdentity",
                "User"
              ],
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "version": {
          "description": "Version: User-specified version of the extension for this extension to 'pin'. To use 'version', autoUpgradeMinorVersion\nmust be 'false'.",
          "type": "string"
        }
      },
      "required": [
        "owner"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "The Extension object.",
      "properties": {
        "aksAssignedIdentity": {
          "description": "AksAssignedIdentity: Identity of the Extension resource in an AKS cluster",
          "properties": {
            "principalId": {
              "description": "PrincipalId: The principal ID of resource identity.",
              "type": "string"
            },
            "tenantId": {
              "description": "TenantId: The tenant ID of resource.",
              "type": "string"
            },
            "type": {
              "description": "Type: The identity type.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "autoUpgradeMinorVersion": {
          "description": "AutoUpgradeMinorVersion: Flag to note if this extension participates in auto upgrade of minor version, or not.",
          "type": "boolean"
        },
        "conditions": {
          "description": "Conditions: The observed state of the resource",
          "items": {
            "description": "Condition defines an extension to status (an observation) of a resource",
            "properties": {
              "lastTransitionTime": {
                "description": "LastTransitionTime is the last time the condition transitioned from one status to another.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "Message is a human readable message indicating details about the transition. This field may be empty.",
                "type": "string"
              },
              "observedGeneration": {
                "description": "ObservedGeneration is the .metadata.generation that the condition was set based upon. For instance, if\n.metadata.generation is currently 12, but the .status.condition[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": "Reason for the condition's last transition.\nReasons are upper CamelCase (PascalCase) with no spaces. A reason is always provided, this field will not be empty.",
                "type": "string"
              },
              "severity": {
                "description": "Severity with which to treat failures of this type of condition.\nFor conditions which have positive polarity (Status == True is their normal/healthy state), this will be omitted when Status == True\nFor conditions which have negative polarity (Status == False is their normal/healthy state), this will be omitted when Status == False.\nThis is omitted in all cases when Status == Unknown",
                "type": "string"
              },
              "status": {
                "description": "Status of the condition, one of True, False, or Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type of condition.",
                "type": "string"
              }
            },
            "required": [
              "lastTransitionTime",
              "reason",
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "configurationProtectedSettings": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "ConfigurationProtectedSettings: Configuration settings that are sensitive, as name-value pairs for configuring this\nextension.",
          "type": "object"
        },
        "configurationSettings": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "ConfigurationSettings: Configuration settings, as name-value pairs for configuring this extension.",
          "type": "object"
        },
        "currentVersion": {
          "description": "CurrentVersion: Currently installed version of the extension.",
          "type": "string"
        },
        "customLocationSettings": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "CustomLocationSettings: Custom Location settings properties.",
          "type": "object"
        },
        "errorInfo": {
          "description": "ErrorInfo: Error information from the Agent - e.g. errors during installation.",
          "properties": {
            "additionalInfo": {
              "description": "AdditionalInfo: The error additional info.",
              "items": {
                "description": "The resource management error additional info.",
                "properties": {
                  "info": {
                    "additionalProperties": {
                      "x-kubernetes-preserve-unknown-fields": true
                    },
                    "description": "Info: The additional info.",
                    "type": "object"
                  },
                  "type": {
                    "description": "Type: The additional info type.",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "code": {
              "description": "Code: The error code.",
              "type": "string"
            },
            "details": {
              "description": "Details: The error details.",
              "items": {
                "properties": {
                  "additionalInfo": {
                    "description": "AdditionalInfo: The error additional info.",
                    "items": {
                      "description": "The resource management error additional info.",
                      "properties": {
                        "info": {
                          "additionalProperties": {
                            "x-kubernetes-preserve-unknown-fields": true
                          },
                          "description": "Info: The additional info.",
                          "type": "object"
                        },
                        "type": {
                          "description": "Type: The additional info type.",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array"
                  },
                  "code": {
                    "description": "Code: The error code.",
                    "type": "string"
                  },
                  "message": {
                    "description": "Message: The error message.",
                    "type": "string"
                  },
                  "target": {
                    "description": "Target: The error target.",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "message": {
              "description": "Message: The error message.",
              "type": "string"
            },
            "target": {
              "description": "Target: The error target.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "extensionType": {
          "description": "ExtensionType: Type of the Extension, of which this resource is an instance of.  It must be one of the Extension Types\nregistered with Microsoft.KubernetesConfiguration by the Extension publisher.",
          "type": "string"
        },
        "id": {
          "description": "Id: Fully qualified resource ID for the resource. Ex -\n/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}",
          "type": "string"
        },
        "identity": {
          "description": "Identity: Identity of the Extension resource",
          "properties": {
            "principalId": {
              "description": "PrincipalId: The principal ID of resource identity.",
              "type": "string"
            },
            "tenantId": {
              "description": "TenantId: The tenant ID of resource.",
              "type": "string"
            },
            "type": {
              "description": "Type: The identity type.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "isSystemExtension": {
          "description": "IsSystemExtension: Flag to note if this extension is a system extension",
          "type": "boolean"
        },
        "name": {
          "description": "Name: The name of the resource",
          "type": "string"
        },
        "packageUri": {
          "description": "PackageUri: Uri of the Helm package",
          "type": "string"
        },
        "plan": {
          "description": "Plan: The plan information.",
          "properties": {
            "name": {
              "description": "Name: A user defined name of the 3rd Party Artifact that is being procured.",
              "type": "string"
            },
            "product": {
              "description": "Product: The 3rd Party artifact that is being procured. E.g. NewRelic. Product maps to the OfferID specified for the\nartifact at the time of Data Market onboarding.",
              "type": "string"
            },
            "promotionCode": {
              "description": "PromotionCode: A publisher provided promotion code as provisioned in Data Market for the said product/artifact.",
              "type": "string"
            },
            "publisher": {
              "description": "Publisher: The publisher of the 3rd Party Artifact that is being bought. E.g. NewRelic",
              "type": "string"
            },
            "version": {
              "description": "Version: The version of the desired product/artifact.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "provisioningState": {
          "description": "ProvisioningState: Status of installation of this extension.",
          "type": "string"
        },
        "releaseTrain": {
          "description": "ReleaseTrain: ReleaseTrain this extension participates in for auto-upgrade (e.g. Stable, Preview, etc.) - only if\nautoUpgradeMinorVersion is 'true'.",
          "type": "string"
        },
        "scope": {
          "description": "Scope: Scope at which the extension is installed.",
          "properties": {
            "cluster": {
              "description": "Cluster: Specifies that the scope of the extension is Cluster",
              "properties": {
                "releaseNamespace": {
                  "description": "ReleaseNamespace: Namespace where the extension Release must be placed, for a Cluster scoped extension.  If this\nnamespace does not exist, it will be created",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "namespace": {
              "description": "Namespace: Specifies that the scope of the extension is Namespace",
              "properties": {
                "targetNamespace": {
                  "description": "TargetNamespace: Namespace where the extension will be created for an Namespace scoped extension.  If this namespace\ndoes not exist, it will be created",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "statuses": {
          "description": "Statuses: Status from this extension.",
          "items": {
            "description": "Status from the extension.",
            "properties": {
              "code": {
                "description": "Code: Status code provided by the Extension",
                "type": "string"
              },
              "displayStatus": {
                "description": "DisplayStatus: Short description of status of the extension.",
                "type": "string"
              },
              "level": {
                "description": "Level: Level of the status.",
                "type": "string"
              },
              "message": {
                "description": "Message: Detailed message of the status from the Extension.",
                "type": "string"
              },
              "time": {
                "description": "Time: DateLiteral (per ISO8601) noting the time of installation status.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "systemData": {
          "description": "SystemData: Top level metadata\nhttps://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/common-api-contracts.md#system-metadata-for-all-azure-resources",
          "properties": {
            "createdAt": {
              "description": "CreatedAt: The timestamp of resource creation (UTC).",
              "type": "string"
            },
            "createdBy": {
              "description": "CreatedBy: The identity that created the resource.",
              "type": "string"
            },
            "createdByType": {
              "description": "CreatedByType: The type of identity that created the resource.",
              "type": "string"
            },
            "lastModifiedAt": {
              "description": "LastModifiedAt: The timestamp of resource last modification (UTC)",
              "type": "string"
            },
            "lastModifiedBy": {
              "description": "LastModifiedBy: The identity that last modified the resource.",
              "type": "string"
            },
            "lastModifiedByType": {
              "description": "LastModifiedByType: The type of identity that last modified the resource.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "type": {
          "description": "Type: The type of the resource. E.g. \"Microsoft.Compute/virtualMachines\" or \"Microsoft.Storage/storageAccounts\"",
          "type": "string"
        },
        "version": {
          "description": "Version: User-specified version of the extension for this extension to 'pin'. To use 'version', autoUpgradeMinorVersion\nmust be 'false'.",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
