{
  "Service": {
    "resourceType": "Docker::Compose::Service",
    "kind": "resource",
    "description": "A containerized service definition in Docker Compose",
    "properties": {
      "image": {
        "type": "string",
        "description": "Container image to use"
      },
      "build": {
        "type": "object",
        "description": "Build configuration"
      },
      "command": {
        "type": "string | string[]",
        "description": "Override the default command"
      },
      "entrypoint": {
        "type": "string | string[]",
        "description": "Override the default entrypoint"
      },
      "environment": {
        "type": "Record<string, string>",
        "description": "Environment variables"
      },
      "ports": {
        "type": "string[]",
        "description": "Published ports"
      },
      "volumes": {
        "type": "string[]",
        "description": "Volume mounts"
      },
      "networks": {
        "type": "string[]",
        "description": "Networks to attach"
      },
      "depends_on": {
        "type": "string[] | Record<string, { condition: \"service_started\" | \"service_healthy\" | \"service_completed_successfully\"; restart?: boolean; required?: boolean }>",
        "description": "Service dependencies (short list-form, or long form with a wait condition)"
      },
      "restart": {
        "type": "string",
        "description": "Restart policy"
      },
      "labels": {
        "type": "Record<string, string>",
        "description": "Container labels"
      },
      "healthcheck": {
        "type": "object",
        "description": "Health check configuration"
      },
      "deploy": {
        "type": "object",
        "description": "Swarm deployment configuration"
      },
      "secrets": {
        "type": "string[]",
        "description": "Secrets to expose"
      },
      "configs": {
        "type": "string[]",
        "description": "Configs to expose"
      }
    }
  },
  "Volume": {
    "resourceType": "Docker::Compose::Volume",
    "kind": "resource",
    "description": "A named volume definition in Docker Compose",
    "properties": {
      "driver": {
        "type": "string",
        "description": "Volume driver"
      },
      "driver_opts": {
        "type": "Record<string, string>",
        "description": "Driver options"
      },
      "external": {
        "type": "boolean",
        "description": "Whether the volume is external"
      },
      "labels": {
        "type": "Record<string, string>",
        "description": "Volume labels"
      },
      "name": {
        "type": "string",
        "description": "Custom volume name"
      }
    }
  },
  "Network": {
    "resourceType": "Docker::Compose::Network",
    "kind": "resource",
    "description": "A network definition in Docker Compose",
    "properties": {
      "driver": {
        "type": "string",
        "description": "Network driver"
      },
      "driver_opts": {
        "type": "Record<string, string>",
        "description": "Driver options"
      },
      "external": {
        "type": "boolean",
        "description": "Whether the network is external"
      },
      "labels": {
        "type": "Record<string, string>",
        "description": "Network labels"
      },
      "internal": {
        "type": "boolean",
        "description": "Restrict external access"
      },
      "ipam": {
        "type": "object",
        "description": "IP address management"
      }
    }
  },
  "DockerConfig": {
    "resourceType": "Docker::Compose::Config",
    "kind": "resource",
    "description": "A config definition in Docker Compose",
    "properties": {
      "file": {
        "type": "string",
        "description": "Path to the config file"
      },
      "external": {
        "type": "boolean",
        "description": "Whether the config is external"
      },
      "labels": {
        "type": "Record<string, string>",
        "description": "Config labels"
      },
      "name": {
        "type": "string",
        "description": "Custom config name"
      }
    }
  },
  "DockerSecret": {
    "resourceType": "Docker::Compose::Secret",
    "kind": "resource",
    "description": "A secret definition in Docker Compose",
    "properties": {
      "file": {
        "type": "string",
        "description": "Path to the secret file"
      },
      "external": {
        "type": "boolean",
        "description": "Whether the secret is external"
      },
      "labels": {
        "type": "Record<string, string>",
        "description": "Secret labels"
      },
      "name": {
        "type": "string",
        "description": "Custom secret name"
      }
    }
  },
  "Dockerfile": {
    "resourceType": "Docker::Dockerfile",
    "kind": "resource",
    "description": "A Dockerfile definition with ordered build instructions",
    "properties": {
      "from": {
        "description": "Base image (required first instruction)"
      },
      "arg": {
        "description": "Build-time argument"
      },
      "env": {
        "description": "Environment variable"
      },
      "run": {
        "description": "Run a command during build"
      },
      "copy": {
        "description": "Copy files from build context"
      },
      "add": {
        "description": "Add files (supports URLs and archives)"
      },
      "workdir": {
        "description": "Set working directory"
      },
      "user": {
        "description": "Set user for subsequent instructions"
      },
      "expose": {
        "description": "Document exposed ports"
      },
      "volume": {
        "description": "Create mount points"
      },
      "label": {
        "description": "Add metadata labels"
      },
      "entrypoint": {
        "description": "Set the entrypoint executable"
      },
      "cmd": {
        "description": "Default command arguments"
      },
      "healthcheck": {
        "description": "Health check instruction"
      }
    }
  }
}