{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/shopware-cli-project-store-configuration/latest.json",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/shopware/shopware-cli/main/shopware-project-schema.json",
    "sourceSha256": "81f4d7a1c7c71727524643599db617b3c0c260c9cf5356ea011202df60f80a06",
    "fileMatch": [
      ".shopware-project.yml",
      ".shopware-project.yaml",
      ".shopware-project.local.yml",
      ".shopware-project.local.yaml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "$ref": "#/$defs/Config",
  "$defs": {
    "Config": {
      "properties": {
        "include": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "url": {
          "type": "string",
          "description": "The URL of the Shopware instance"
        },
        "compatibility_date": {
          "type": "string",
          "format": "date",
          "description": "Controls date-based compatibility behavior, formatted as YYYY-MM-DD."
        },
        "build": {
          "$ref": "#/$defs/ConfigBuild"
        },
        "admin_api": {
          "$ref": "#/$defs/ConfigAdminApi"
        },
        "dump": {
          "$ref": "#/$defs/ConfigDump"
        },
        "deployment": {
          "$ref": "#/$defs/ConfigDeployment"
        },
        "validation": {
          "$ref": "#/$defs/ConfigValidation"
        },
        "image_proxy": {
          "$ref": "#/$defs/ConfigImageProxy"
        },
        "disable_composer_scripts": {
          "type": "boolean",
          "description": "When enabled, composer scripts will be disabled during CI builds"
        },
        "disable_composer_install": {
          "type": "boolean",
          "description": "When enabled, composer install will be skipped during CI builds"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigAdminApi": {
      "properties": {
        "client_id": {
          "type": "string",
          "description": "Client ID of integration"
        },
        "client_secret": {
          "type": "string",
          "description": "Client Secret of integration"
        },
        "username": {
          "type": "string",
          "description": "Username of admin user"
        },
        "password": {
          "type": "string",
          "description": "Password of admin user"
        },
        "disable_ssl_check": {
          "type": "boolean",
          "description": "Disable SSL certificate check"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigBuild": {
      "properties": {
        "disable_asset_copy": {
          "type": "boolean",
          "description": "When enabled, the assets will not be copied to the public folder"
        },
        "remove_extension_assets": {
          "type": "boolean",
          "description": "When enabled, the assets of extensions will be removed from the extension public folder. (Requires Shopware 6.5.2.0)"
        },
        "keep_extension_source": {
          "type": "boolean",
          "description": "When enabled, the extensions source code will be keep in the final build"
        },
        "keep_source_maps": {
          "type": "boolean",
          "description": "When enabled, the source maps will not be removed from the final build"
        },
        "cleanup_paths": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Paths to delete for the final build"
        },
        "browserslist": {
          "type": "string",
          "description": "Browserslist configuration for the Storefront build"
        },
        "exclude_extensions": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Extensions to exclude from the build"
        },
        "disable_storefront_build": {
          "type": "boolean",
          "description": "When enabled, the storefront build will be skipped"
        },
        "force_extension_build": {
          "items": {
            "$ref": "#/$defs/ConfigBuildExtension"
          },
          "type": "array",
          "description": "Extensions to force build for, even if they have compiled files"
        },
        "force_admin_build": {
          "type": "boolean",
          "description": "When enabled, the shopware admin will be built"
        },
        "keep_node_modules": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Keep following node_modules in the final build"
        },
        "mjml": {
          "$ref": "#/$defs/ConfigBuildMJML",
          "description": "MJML email template compilation configuration"
        },
        "asset_caching": {
          "type": "boolean",
          "description": "When enabled, built assets are cached locally and restored on subsequent builds when sources haven't changed"
        },
        "hooks": {
          "$ref": "#/$defs/ConfigBuildHooks",
          "description": "Hooks to run at specific points during CI builds"
        },
        "bundles": {
          "items": {
            "$ref": "#/$defs/ConfigProjectBundle"
          },
          "type": "array",
          "description": "Shopware bundles to include in builds (alternative to composer.json extra.shopware-bundles)"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigBuildExtension": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the extension"
        }
      },
      "description": "ConfigBuildExtension defines the configuration for forcing extension builds.",
      "type": "object",
      "required": [
        "name"
      ],
      "additionalProperties": false
    },
    "ConfigBuildHooks": {
      "properties": {
        "pre": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Commands to run before anything runs"
        },
        "post": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Commands to run after everything completes"
        },
        "pre-composer": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Commands to run before composer install"
        },
        "post-composer": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Commands to run after composer install"
        },
        "pre-assets": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Commands to run before asset build"
        },
        "post-assets": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Commands to run after asset build"
        }
      },
      "description": "ConfigBuildHooks defines hooks to run at specific points during CI builds.",
      "type": "object",
      "additionalProperties": false
    },
    "ConfigBuildMJML": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether to enable MJML compilation"
        },
        "search_paths": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Directories to search for MJML files"
        }
      },
      "description": "ConfigBuildMJML defines the configuration for MJML email template compilation.",
      "type": "object",
      "additionalProperties": false
    },
    "ConfigDeployment": {
      "properties": {
        "hooks": {
          "properties": {
            "pre": {
              "type": "string"
            },
            "post": {
              "type": "string"
            },
            "pre-install": {
              "type": "string"
            },
            "post-install": {
              "type": "string"
            },
            "pre-update": {
              "type": "string"
            },
            "post-update": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "store": {
          "properties": {
            "license-domain": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "cache": {
          "properties": {
            "always_clear": {
              "type": "boolean"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "extension-management": {
          "properties": {
            "enabled": {
              "type": "boolean"
            },
            "exclude": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "overrides": {
              "$ref": "#/$defs/ConfigDeploymentOverrides"
            },
            "force_updates": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "force-update": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "description": "The extension management of the deployment",
          "type": "object",
          "additionalProperties": false
        },
        "one-time-tasks": {
          "items": {
            "properties": {
              "id": {
                "type": "string"
              },
              "script": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "script"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigDeploymentOverrides": {
      "title": "Extension overrides",
      "type": "object",
      "additionalProperties": {
        "properties": {
          "state": {
            "type": "string",
            "enum": [
              "inactive",
              "remove",
              "ignore",
              "installed"
            ]
          },
          "keepUserData": {
            "type": "boolean"
          }
        },
        "type": "object",
        "required": [
          "state"
        ]
      }
    },
    "ConfigDump": {
      "properties": {
        "rewrite": {
          "description": "Allows to rewrite single columns, perfect for GDPR compliance",
          "type": "object",
          "additionalProperties": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          }
        },
        "nodata": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Only export the schema of these tables"
        },
        "ignore": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Ignore these tables from export"
        },
        "where": {
          "description": "Add an where condition to that table, schema is table name as key, and where statement as value",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigImageProxy": {
      "properties": {
        "url": {
          "type": "string",
          "description": "The URL of the upstream server to proxy requests to when files are not found locally"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigProjectBundle": {
      "properties": {
        "path": {
          "type": "string",
          "description": "Relative path from project root to the bundle directory"
        },
        "name": {
          "type": "string",
          "description": "Optional override for the bundle name; defaults to the directory basename"
        }
      },
      "description": "ConfigProjectBundle defines a project-level Shopware bundle.",
      "type": "object",
      "required": [
        "path"
      ],
      "additionalProperties": false
    },
    "ConfigValidation": {
      "properties": {
        "ignore": {
          "items": {
            "$ref": "#/$defs/ConfigValidationIgnoreItem"
          },
          "type": "array",
          "description": "Ignore items from the validation."
        },
        "ignore_extensions": {
          "items": {
            "$ref": "#/$defs/ConfigValidationIgnoreExtension"
          },
          "type": "array"
        }
      },
      "description": "ConfigValidation is used to configure the project validation.",
      "type": "object",
      "additionalProperties": false
    },
    "ConfigValidationIgnoreExtension": {
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the extension to ignore."
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ConfigValidationIgnoreItem": {
      "properties": {
        "identifier": {
          "type": "string",
          "description": "The identifier of the item to ignore."
        },
        "path": {
          "type": "string",
          "description": "The path of the item to ignore."
        },
        "message": {
          "type": "string",
          "description": "The message of the item to ignore."
        }
      },
      "description": "ConfigValidationIgnoreItem is used to ignore items from the validation.",
      "type": "object",
      "additionalProperties": false
    }
  }
}
