{
  "type": "object",
  "properties": {
    "buildkit": {
      "type": [
        "null",
        "object"
      ],
      "properties": {
        "address": {
          "type": "string",
          "description": "BuildKit daemon address (e.g. tcp://127.0.0.1:8502)"
        }
      },
      "description": "BuildKit daemon configuration",
      "required": [
        "address"
      ],
      "additionalProperties": false
    },
    "cache": {
      "type": [
        "null",
        "object"
      ],
      "properties": {
        "type": {
          "type": "string",
          "description": "Cache type (s3, registry),required"
        },
        "endpoint": {
          "type": "string",
          "description": "S3 endpoint URL"
        },
        "bucket": {
          "type": "string",
          "description": "S3 bucket name"
        },
        "region": {
          "type": "string",
          "description": "S3 region"
        },
        "access_key_id": {
          "type": "string",
          "description": "S3 access key ID"
        },
        "secret_access_key": {
          "type": "string",
          "description": "S3 secret access key"
        },
        "use_path_style": {
          "type": "boolean",
          "description": "Use path-style S3 URLs"
        },
        "ref": {
          "type": "string",
          "description": "Registry cache ref (e.g. registry:5000/cache)"
        },
        "insecure": {
          "type": "boolean",
          "description": "Allow insecure registry connections"
        }
      },
      "description": "Build cache configuration",
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "registry": {
      "type": [
        "null",
        "object"
      ],
      "properties": {
        "address": {
          "type": "string",
          "description": "Container registry address"
        },
        "docker_media_types": {
          "type": [
            "null",
            "boolean"
          ],
          "description": "Force Docker-scheme media types. Omit for auto-detect (Docker Hub auto-enables)."
        }
      },
      "description": "Container registry configuration",
      "required": [
        "address"
      ],
      "additionalProperties": false
    },
    "platforms": {
      "type": [
        "null",
        "array"
      ],
      "items": {
        "type": "string"
      },
      "description": "Default target platforms for all images (e.g. linux/amd64)"
    },
    "template_options": {
      "type": "object",
      "description": "Custom template variables available via the option function in CI and custom templates",
      "additionalProperties": {
        "type": "string"
      }
    },
    "labels": {
      "type": [
        "null",
        "object"
      ],
      "properties": {
        "vendor": {
          "type": "string",
          "description": "Vendor name applied as org.opencontainers.image.vendor"
        },
        "authors": {
          "type": "string",
          "description": "Authors applied as org.opencontainers.image.authors"
        },
        "url": {
          "type": "string",
          "description": "URL applied as org.opencontainers.image.url. Supports %image% and %tag% placeholders."
        },
        "documentation": {
          "type": "string",
          "description": "Documentation URL applied as org.opencontainers.image.documentation. Supports %image% and %tag% placeholders."
        },
        "custom": {
          "type": "object",
          "description": "Arbitrary custom labels applied to every built image. Standard OCI keys are reserved and override these.",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "description": "Project-level OCI image labels applied to every built image",
      "additionalProperties": false
    },
    "lint": {
      "type": [
        "null",
        "object"
      ],
      "properties": {
        "ignored": {
          "type": [
            "null",
            "array"
          ],
          "items": {
            "type": "string"
          },
          "description": "Rule IDs to ignore (e.g. DL3000)"
        },
        "trusted_registries": {
          "type": [
            "null",
            "array"
          ],
          "items": {
            "type": "string"
          },
          "description": "Registries hadolint treats as trusted (suppresses DL3026)"
        },
        "label_schema": {
          "type": "object",
          "description": "Expected LABEL keys and their validation types",
          "additionalProperties": {
            "type": "string"
          }
        },
        "strict_labels": {
          "type": [
            "null",
            "boolean"
          ],
          "description": "Fail on labels missing from label_schema"
        },
        "failure_threshold": {
          "type": "string",
          "description": "Lowest severity that causes a non-zero exit (error, warning, info, style, ignore). Defaults to error."
        }
      },
      "description": "Dockerfile linting configuration (hadolint)",
      "additionalProperties": false
    },
    "report": {
      "type": "object",
      "properties": {
        "styleSheet": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "cache_dir": {
      "type": "string",
      "description": "Directory for ContainerHive's local caches (tag_ranges external version lookups). Overridden by CONTAINER_HIVE_CACHE_DIR. Defaults to the XDG cache directory. Not the build cache configured by 'cache'."
    },
    "version_cache_ttl": {
      "type": "string",
      "description": "Default TTL for cached tag_ranges external version lookups, as a Go duration (e.g. 6h). Defaults to 1h."
    }
  },
  "$id": "https://schema-nest.timo-reymann.de/api/schema/json-schema/containerhive-project/latest",
  "title": "Project configuration",
  "description": "Project-level configuration schema for ContainerHive.",
  "required": [
    "report"
  ],
  "additionalProperties": false
}