{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/yappy-biz/json-schema/yappy-biz-requirements-schema.json",
  "title": "Requirements",
  "description": "What a Mac needs before Yappy will run on it.",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/yappy-biz-openapi.json#/components/schemas/Requirements",
  "type": "object",
  "required": [
    "object",
    "os",
    "minimum_os_version",
    "architectures",
    "permissions"
  ],
  "properties": {
    "object": {
      "type": "string",
      "const": "requirements",
      "description": "Type discriminator."
    },
    "os": {
      "type": "string",
      "description": "Operating system name."
    },
    "minimum_os_version": {
      "type": "string",
      "description": "Lowest supported version."
    },
    "architectures": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Supported CPU architectures."
    },
    "disk_space_mb": {
      "type": "integer",
      "description": "Approximate install size in megabytes."
    },
    "app_store": {
      "type": "boolean",
      "description": "Whether it is distributed via the Mac App Store."
    },
    "permissions": {
      "type": "array",
      "description": "Each macOS permission, what it unlocks, and what breaks without it.",
      "items": {
        "type": "object",
        "required": [
          "name",
          "required",
          "purpose"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The permission as macOS names it."
          },
          "required": {
            "type": "boolean",
            "description": "Whether Yappy is unusable without it."
          },
          "purpose": {
            "type": "string",
            "description": "What it is used for."
          },
          "if_denied": {
            "type": "string",
            "description": "What stops working."
          }
        }
      }
    }
  }
}