{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://docs.renovatebot.com/schemas/renovate-config",
  "title": "Renovate Configuration",
  "description": "JSON configuration schema for the Renovate dependency automation tool (renovate.json)",
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string",
      "description": "JSON Schema reference for IDE validation",
      "example": "https://docs.renovatebot.com/renovate-schema.json"
    },
    "extends": {
      "type": "array",
      "description": "Preset configurations to extend. Common: config:recommended, config:base",
      "items": { "type": "string" },
      "example": ["config:recommended"]
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether Renovate is enabled for the repository"
    },
    "timezone": {
      "type": "string",
      "description": "IANA timezone for scheduling",
      "example": "America/New_York"
    },
    "schedule": {
      "type": "array",
      "description": "Array of cron expressions or natural language schedules",
      "items": { "type": "string" },
      "example": ["before 6am on Monday"]
    },
    "prConcurrentLimit": {
      "type": "integer",
      "description": "Maximum number of open PRs at any time",
      "example": 10
    },
    "prHourlyLimit": {
      "type": "integer",
      "description": "Maximum number of PRs to create per hour",
      "example": 2
    },
    "branchPrefix": {
      "type": "string",
      "description": "Prefix for Renovate-created branches",
      "example": "renovate/"
    },
    "commitMessagePrefix": {
      "type": "string",
      "description": "Prefix for commit messages",
      "example": "chore(deps):"
    },
    "labels": {
      "type": "array",
      "description": "Labels to apply to created PRs",
      "items": { "type": "string" },
      "example": ["dependencies", "renovate"]
    },
    "assignees": {
      "type": "array",
      "description": "GitHub usernames to assign to PRs",
      "items": { "type": "string" }
    },
    "reviewers": {
      "type": "array",
      "description": "GitHub usernames to request review from",
      "items": { "type": "string" }
    },
    "automerge": {
      "type": "boolean",
      "description": "Whether to automatically merge passing PRs",
      "example": false
    },
    "automergeType": {
      "type": "string",
      "description": "Automerge strategy: pr, branch, or pr-comment",
      "enum": ["pr", "branch", "pr-comment"]
    },
    "packageRules": {
      "type": "array",
      "description": "Rules to apply to specific packages or package groups",
      "items": {
        "type": "object",
        "properties": {
          "matchPackageNames": {
            "type": "array",
            "items": { "type": "string" }
          },
          "matchPackagePatterns": {
            "type": "array",
            "items": { "type": "string" }
          },
          "matchManagers": {
            "type": "array",
            "items": { "type": "string" }
          },
          "matchUpdateTypes": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": ["major", "minor", "patch", "pin", "digest", "pinDigest", "rollback", "bump", "replacement"]
            }
          },
          "enabled": { "type": "boolean" },
          "automerge": { "type": "boolean" },
          "groupName": { "type": "string" },
          "schedule": { "type": "array", "items": { "type": "string" } }
        }
      }
    },
    "ignoreDeps": {
      "type": "array",
      "description": "List of dependency names to ignore completely",
      "items": { "type": "string" }
    },
    "ignorePaths": {
      "type": "array",
      "description": "File paths to exclude from updates",
      "items": { "type": "string" }
    },
    "enabledManagers": {
      "type": "array",
      "description": "Explicitly enabled package managers",
      "items": { "type": "string" }
    },
    "rangeStrategy": {
      "type": "string",
      "description": "How to handle version range updates",
      "enum": ["auto", "pin", "bump", "replace", "widen", "update-lockfile", "in-range-only"]
    },
    "semanticCommits": {
      "type": "string",
      "description": "Use semantic commit messages",
      "enum": ["auto", "enabled", "disabled"]
    },
    "dependencyDashboard": {
      "type": "boolean",
      "description": "Create a Dependency Dashboard issue in the repository",
      "example": true
    },
    "vulnerabilityAlerts": {
      "type": "object",
      "description": "Configuration for security vulnerability update PRs"
    },
    "lockFileMaintenance": {
      "type": "object",
      "description": "Configuration for periodic lock file maintenance PRs"
    }
  }
}
