{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/shopware-cli-extension-store-configuration/latest.json",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/shopware/shopware-cli/main/shopware-extension-schema.json",
    "sourceSha256": "e1de622e42a584465c0f18747dc2f0df28828a5d3708c67b3bc454c4812535e8",
    "fileMatch": [
      ".shopware-extension.yml",
      ".shopware-extension.yaml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "$ref": "#/$defs/Config",
  "$defs": {
    "ChangelogConfig": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Specifies whether the changelog should be generated."
        },
        "pattern": {
          "type": "string",
          "description": "Specifies the pattern to match the commits."
        },
        "template": {
          "type": "string",
          "description": "Specifies the template to use for the changelog."
        },
        "variables": {
          "description": "Specifies the variables to use for the changelog.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "Config": {
      "properties": {
        "compatibility_date": {
          "type": "string",
          "format": "date",
          "description": "Controls date-based compatibility behavior, formatted as YYYY-MM-DD."
        },
        "store": {
          "$ref": "#/$defs/ConfigStore",
          "description": "Store is the store configuration of the extension."
        },
        "build": {
          "$ref": "#/$defs/ConfigBuild",
          "description": "Build is the build configuration of the extension."
        },
        "changelog": {
          "$ref": "#/$defs/ChangelogConfig",
          "description": "Changelog is the changelog configuration of the extension."
        },
        "validation": {
          "$ref": "#/$defs/ConfigValidation",
          "description": "Validation is the validation configuration of the extension."
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigBuild": {
      "properties": {
        "extraBundles": {
          "items": {
            "$ref": "#/$defs/ConfigExtraBundle"
          },
          "type": "array",
          "description": "ExtraBundles can be used to declare additional bundles to be considered for building"
        },
        "shopwareVersionConstraint": {
          "type": "string",
          "description": "Override the shopware version constraint for building, can be used to specify the version of the shopware to use for building"
        },
        "zip": {
          "$ref": "#/$defs/ConfigBuildZip",
          "description": "Configuration for zipping"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigBuildZip": {
      "properties": {
        "composer": {
          "$ref": "#/$defs/ConfigBuildZipComposer",
          "description": "Configuration for composer"
        },
        "assets": {
          "$ref": "#/$defs/ConfigBuildZipAssets",
          "description": "Configuration for assets"
        },
        "pack": {
          "$ref": "#/$defs/ConfigBuildZipPack",
          "description": "Configuration for packing"
        },
        "checksum": {
          "$ref": "#/$defs/ConfigBuildZipChecksum"
        }
      },
      "description": "Configuration for zipping.",
      "type": "object",
      "additionalProperties": false
    },
    "ConfigBuildZipAssets": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "When enabled, the shopware-cli build the assets"
        },
        "before_hooks": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Commands to run before the assets build"
        },
        "after_hooks": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Commands to run after the assets build"
        },
        "enable_es_build_for_admin": {
          "type": "boolean",
          "description": "When enabled, builtin esbuild will be used for the admin assets"
        },
        "enable_es_build_for_storefront": {
          "type": "boolean",
          "description": "When enabled, builtin esbuild will be used for the storefront assets"
        },
        "disable_sass": {
          "type": "boolean",
          "description": "When disabled, builtin sass support will be disabled"
        },
        "npm_strict": {
          "type": "boolean",
          "description": "When enabled, npm will install only production dependencies"
        },
        "additional_caches": {
          "items": {
            "$ref": "#/$defs/ConfigBuildZipAssetsAdditionalCache"
          },
          "type": "array",
          "description": "Additional paths to include in asset caching"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigBuildZipAssetsAdditionalCache": {
      "properties": {
        "path": {
          "type": "string",
          "description": "The output path to cache, relative to extension root"
        },
        "source_paths": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Source paths to hash for the cache key, relative to extension root"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigBuildZipChecksum": {
      "properties": {
        "ignore": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Following files will be excluded from the checksum calculation"
        }
      },
      "description": "Configuration for checksum calculation.",
      "type": "object",
      "additionalProperties": false
    },
    "ConfigBuildZipComposer": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "When enabled, a vendor folder will be created in the zip build"
        },
        "before_hooks": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Commands to run before the composer install"
        },
        "after_hooks": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Commands to run after the composer install"
        },
        "excluded_packages": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Composer packages to be excluded from the zip build"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigBuildZipPack": {
      "properties": {
        "excludes": {
          "$ref": "#/$defs/ConfigBuildZipPackExcludes",
          "description": "Excludes can be used to exclude files from the zip build"
        },
        "before_hooks": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Commands to run before the pack"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigBuildZipPackExcludes": {
      "properties": {
        "paths": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Paths to exclude from the zip build"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigExtraBundle": {
      "properties": {
        "path": {
          "type": "string",
          "description": "Path to the bundle, relative from the extension root (src folder)"
        },
        "name": {
          "type": "string",
          "description": "Name of the bundle, if empty the folder name of path will be used"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigStore": {
      "properties": {
        "availabilities": {
          "items": {
            "type": "string",
            "enum": [
              "German",
              "International"
            ]
          },
          "type": "array",
          "description": "Specifies the visibility in stores."
        },
        "default_locale": {
          "type": "string",
          "enum": [
            "de_DE",
            "en_GB"
          ],
          "description": "Specifies the default locale."
        },
        "localizations": {
          "items": {
            "type": "string",
            "enum": [
              "de_DE",
              "en_GB",
              "bs_BA",
              "bg_BG",
              "cs_CZ",
              "da_DK",
              "de_CH",
              "el_GR",
              "en_US",
              "es_ES",
              "fi_FI",
              "fr_FR",
              "hi_IN",
              "hr_HR",
              "hu_HU",
              "hy",
              "id_ID",
              "it_IT",
              "ko_KR",
              "lv_LV",
              "ms_MY",
              "nl_NL",
              "pl_PL",
              "pt_BR",
              "pt_PT",
              "ro_RO",
              "ru_RU",
              "sk_SK",
              "sl_SI",
              "sr_RS",
              "sv_SE",
              "th_TH",
              "tr_TR",
              "uk_UA",
              "vi_VN",
              "zh_CN",
              "zh_TW"
            ]
          },
          "type": "array",
          "description": "Specifies the languages the extension is translated."
        },
        "categories": {
          "items": {
            "type": "string",
            "enum": [
              "Administration",
              "SEOOptimierung",
              "Bonitaetsprüfung",
              "Rechtssicherheit",
              "Auswertung",
              "KommentarFeedback",
              "Tracking",
              "Integration",
              "PreissuchmaschinenPortale",
              "Warenwirtschaft",
              "Versand",
              "Bezahlung",
              "StorefrontDetailanpassungen",
              "Sprache",
              "Suche",
              "HeaderFooter",
              "Detailseite",
              "MenueKategorien",
              "Bestellprozess",
              "KundenkontoPersonalisierung",
              "Sonderfunktionen",
              "Themes",
              "Branche",
              "Home+Furnishings",
              "FashionBekleidung",
              "GartenNatur",
              "KosmetikGesundheit",
              "EssenTrinken",
              "KinderPartyGeschenke",
              "SportLifestyleReisen",
              "Bauhaus",
              "Elektronik",
              "Geraete",
              "Heimkueche",
              "Hobby",
              "Kueche",
              "Lebensmittel",
              "Medizin",
              "Mode",
              "Musik",
              "Spiel",
              "Technik",
              "Umweltschutz",
              "Wohnen",
              "Zubehoer"
            ]
          },
          "type": "array",
          "description": "Specifies the categories."
        },
        "type": {
          "type": "string",
          "enum": [
            "extension",
            "theme"
          ],
          "description": "Specifies the type of the extension."
        },
        "icon": {
          "type": "string",
          "description": "Specifies the Path to the icon (256x256 px) for store."
        },
        "automatic_bugfix_version_compatibility": {
          "type": "boolean",
          "description": "Specifies whether the extension should automatically be set compatible with Shopware bugfix versions."
        },
        "meta_title": {
          "$ref": "#/$defs/ConfigTranslated%5Bstring%5D",
          "description": "Specifies the meta title of the extension in store."
        },
        "meta_description": {
          "$ref": "#/$defs/ConfigTranslated%5Bstring%5D",
          "description": "Specifies the meta description of the extension in store."
        },
        "description": {
          "$ref": "#/$defs/ConfigTranslated%5Bstring%5D",
          "description": "Specifies the description of the extension in store."
        },
        "installation_manual": {
          "$ref": "#/$defs/ConfigTranslated%5Bstring%5D",
          "description": "Installation manual of the extension in store."
        },
        "tags": {
          "$ref": "#/$defs/ConfigTranslated%5B%5B%5Dstring%5D",
          "description": "Specifies the tags of the extension."
        },
        "videos": {
          "$ref": "#/$defs/ConfigTranslated%5B%5B%5Dstring%5D",
          "description": "Specifies the links of YouTube-Videos to show or describe the extension."
        },
        "highlights": {
          "$ref": "#/$defs/ConfigTranslated%5B%5B%5Dstring%5D",
          "description": "Specifies the highlights of the extension."
        },
        "features": {
          "$ref": "#/$defs/ConfigTranslated%5B%5B%5Dstring%5D",
          "description": "Specifies the features of the extension."
        },
        "faq": {
          "$ref": "#/$defs/ConfigTranslated%5BConfigStoreFaq%5D",
          "description": "Specifies Frequently Asked Questions for the extension."
        },
        "images": {
          "items": {
            "$ref": "#/$defs/ConfigStoreImage"
          },
          "type": "array",
          "description": "Specifies images for the extension in the store."
        },
        "image_directory": {
          "type": "string",
          "description": "Specifies the directory where the images are located."
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigStoreFaq": {
      "properties": {
        "question": {
          "type": "string"
        },
        "answer": {
          "type": "string"
        },
        "position": {
          "type": "integer"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigStoreImage": {
      "properties": {
        "file": {
          "type": "string",
          "description": "File path to image relative from root of the extension"
        },
        "activate": {
          "$ref": "#/$defs/ConfigStoreImageActivate",
          "description": "Specifies whether the image is active in the language."
        },
        "preview": {
          "$ref": "#/$defs/ConfigStoreImagePreview",
          "description": "Specifies whether the image is a preview in the language."
        },
        "priority": {
          "type": "integer",
          "description": "Specifies the order of the image ascending the given priority."
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigStoreImageActivate": {
      "properties": {
        "de": {
          "type": "boolean"
        },
        "en": {
          "type": "boolean"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigStoreImagePreview": {
      "properties": {
        "de": {
          "type": "boolean"
        },
        "en": {
          "type": "boolean"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigTranslated[ConfigStoreFaq]": {
      "properties": {
        "de": {
          "items": {
            "$ref": "#/$defs/ConfigStoreFaq"
          },
          "type": "array"
        },
        "en": {
          "items": {
            "$ref": "#/$defs/ConfigStoreFaq"
          },
          "type": "array"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigTranslated[[]string]": {
      "properties": {
        "de": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "en": {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigTranslated[string]": {
      "properties": {
        "de": {
          "type": "string"
        },
        "en": {
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigValidation": {
      "properties": {
        "ignore": {
          "$ref": "#/$defs/ConfigValidationList",
          "description": "Ignore items from the validation."
        },
        "store_compliance": {
          "type": "boolean"
        }
      },
      "description": "ConfigValidation is used to configure the extension validation.",
      "type": "object",
      "additionalProperties": false
    },
    "ConfigValidationList": {
      "items": {
        "$ref": "#/$defs/ToolConfigIgnore"
      },
      "type": "array"
    },
    "ToolConfigIgnore": {
      "oneOf": [
        {
          "properties": {
            "identifier": {
              "type": "string",
              "description": "The identifier of the item to ignore."
            },
            "path": {
              "type": "string",
              "description": "The path of the item to ignore."
            }
          },
          "type": "object"
        },
        {
          "type": "string"
        }
      ]
    }
  }
}
