{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/spectro-cloud/main/json-schema/spectro-cloud-v1-pack-tag-entity-schema.json",
  "title": "v1PackTagEntity",
  "description": "Pack object",
  "x-generated": "2026-10-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/spectro-cloud-packs-api-openapi.yml#/components/schemas/v1PackTagEntity",
  "properties": {
    "addonSubType": {
      "description": "Pack add-on sub type such as monitoring, db etc",
      "type": "string"
    },
    "addonType": {
      "description": "Pack add-on type such as logging, monitoring, security etc",
      "type": "string"
    },
    "cloudTypes": {
      "description": "Pack supported cloud types",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "displayName": {
      "description": "Pack display name",
      "type": "string"
    },
    "layer": {
      "$ref": "#/$defs/v1PackLayer"
    },
    "logoUrl": {
      "description": "Pack logo url",
      "type": "string"
    },
    "name": {
      "description": "Pack name",
      "type": "string"
    },
    "packValues": {
      "description": "Pack values array",
      "items": {
        "$ref": "#/$defs/v1PackUidValues"
      },
      "type": "array"
    },
    "registryUid": {
      "description": "Pack registry uid",
      "type": "string"
    },
    "tags": {
      "description": "Pack version tags array",
      "items": {
        "$ref": "#/$defs/v1PackTags"
      },
      "type": "array"
    }
  },
  "type": "object",
  "$defs": {
    "v1PackDependency": {
      "description": "Pack template dependency",
      "properties": {
        "layer": {
          "description": "Pack template dependency pack layer",
          "type": "string"
        },
        "name": {
          "description": "Pack template dependency pack name",
          "type": "string"
        },
        "readOnly": {
          "description": "If true then dependency pack values can't be overridden",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "v1PackDependencyMeta": {
      "description": "Pack dependency metadata",
      "properties": {
        "displayName": {
          "description": "Pack display name",
          "type": "string"
        },
        "logoUrl": {
          "description": "Pack logo url",
          "type": "string"
        },
        "name": {
          "description": "Pack name",
          "type": "string"
        },
        "registryUid": {
          "description": "Pack registry uid",
          "type": "string"
        },
        "uid": {
          "description": "Pack uid",
          "type": "string"
        },
        "version": {
          "description": "Pack version",
          "type": "string"
        }
      },
      "type": "object"
    },
    "v1PackLayer": {
      "enum": [
        "kernel",
        "os",
        "k8s",
        "cni",
        "csi",
        "addon"
      ],
      "type": "string"
    },
    "v1PackPreset": {
      "description": "PackPreset defines the preset pack values",
      "properties": {
        "add": {
          "type": "string",
          "x-omitempty": false
        },
        "displayName": {
          "type": "string",
          "x-omitempty": false
        },
        "group": {
          "type": "string",
          "x-omitempty": false
        },
        "name": {
          "type": "string",
          "x-omitempty": false
        },
        "remove": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "x-omitempty": false
        }
      },
      "type": "object"
    },
    "v1PackSchema": {
      "description": "PackSchema defines the schema definition, hints for the pack values",
      "properties": {
        "format": {
          "type": "string",
          "x-omitempty": false
        },
        "hints": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "x-omitempty": false
        },
        "listOptions": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "x-omitempty": false
        },
        "name": {
          "type": "string",
          "x-omitempty": false
        },
        "readonly": {
          "type": "boolean",
          "x-omitempty": false
        },
        "regex": {
          "type": "string",
          "x-omitempty": false
        },
        "required": {
          "type": "boolean",
          "x-omitempty": false
        },
        "type": {
          "type": "string",
          "x-omitempty": false
        }
      },
      "type": "object"
    },
    "v1PackTags": {
      "properties": {
        "group": {
          "description": "Pack group",
          "type": "string"
        },
        "packUid": {
          "description": "Pack uid",
          "type": "string"
        },
        "parentTags": {
          "description": "Pack version parent tags",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "tag": {
          "description": "Pack version tag",
          "type": "string"
        },
        "version": {
          "description": "Pack version",
          "type": "string"
        }
      },
      "type": "object"
    },
    "v1PackTemplate": {
      "description": "Pack template configuration",
      "properties": {
        "manifest": {
          "description": "Pack template manifest content",
          "type": "string"
        },
        "parameters": {
          "$ref": "#/$defs/v1PackTemplateParameters"
        },
        "values": {
          "description": "Pack template values",
          "type": "string"
        }
      }
    },
    "v1PackTemplateParameter": {
      "description": "Pack template parameter",
      "properties": {
        "description": {
          "description": "Pack template parameter description",
          "type": "string"
        },
        "displayName": {
          "description": "Pack template parameter display name",
          "type": "string"
        },
        "format": {
          "description": "Pack template parameter format",
          "type": "string"
        },
        "hidden": {
          "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI",
          "type": "boolean"
        },
        "listOptions": {
          "description": "Pack template parameter list options as string array",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "name": {
          "description": "Pack template parameter name",
          "type": "string"
        },
        "optional": {
          "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory",
          "type": "boolean"
        },
        "options": {
          "additionalProperties": {
            "$ref": "#/$defs/v1PackTemplateParameterOption",
            "type": "object"
          },
          "description": "Pack template parameter options array",
          "type": "object"
        },
        "readOnly": {
          "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden",
          "type": "boolean"
        },
        "regex": {
          "description": "Pack template parameter regex, if set then parameter value must match with specified regex",
          "type": "string"
        },
        "targetKey": {
          "description": "Pack template parameter target key which is mapped to the key defined in the pack values",
          "type": "string"
        },
        "type": {
          "description": "Pack template parameter data type",
          "type": "string"
        },
        "value": {
          "description": "Pack template parameter value",
          "type": "string"
        }
      }
    },
    "v1PackTemplateParameterOption": {
      "description": "Pack template parameter option",
      "properties": {
        "dependencies": {
          "description": "Pack template parameter dependencies",
          "items": {
            "$ref": "#/$defs/v1PackDependency"
          },
          "type": "array"
        },
        "description": {
          "description": "Pack template parameter description",
          "type": "string"
        },
        "label": {
          "description": "Pack template parameter label",
          "type": "string"
        }
      },
      "type": "object"
    },
    "v1PackTemplateParameters": {
      "description": "Pack template parameters",
      "properties": {
        "inputParameters": {
          "description": "Pack template input parameters array",
          "items": {
            "$ref": "#/$defs/v1PackTemplateParameter"
          },
          "type": "array"
        },
        "outputParameters": {
          "description": "Pack template output parameters array",
          "items": {
            "$ref": "#/$defs/v1PackTemplateParameter"
          },
          "type": "array"
        }
      }
    },
    "v1PackUidValues": {
      "properties": {
        "annotations": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Pack annotations is used to allow pack to add more arbitrary configurations",
          "type": "object"
        },
        "dependencies": {
          "description": "Pack dependencies array",
          "items": {
            "$ref": "#/$defs/v1PackDependencyMeta"
          },
          "type": "array"
        },
        "packUid": {
          "description": "Pack uid",
          "type": "string"
        },
        "presets": {
          "description": "Pack presets are the set of configurations applied on user selection of presets",
          "items": {
            "$ref": "#/$defs/v1PackPreset"
          },
          "type": "array"
        },
        "readme": {
          "description": "Readme describes the documentation of the specified pack",
          "type": "string"
        },
        "schema": {
          "description": "Pack schema contains constraints such as data type, format, hints for the pack values",
          "items": {
            "$ref": "#/$defs/v1PackSchema"
          },
          "type": "array"
        },
        "template": {
          "$ref": "#/$defs/v1PackTemplate"
        },
        "values": {
          "description": "Pack values represents the values.yaml used as input parameters",
          "type": "string"
        }
      },
      "type": "object"
    }
  }
}