{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "schema:SoftwareApplication",
  "title": "SoftwareApplication",
  "description": "A software application.",
  "type": "object",
  "allOf": [
    {
      "description": "The most generic kind of creative work, including books, movies, photographs, software programs, etc.",
      "$ref": "schema:CreativeWork"
    }
  ],
  "properties": {
    "applicationCategory": {
      "description": "Type of software application, e.g. 'Game, Multimedia'.",
      "anyOf": [{ "type": "string", "format": "uri" }, { "type": "string" }]
    },
    "applicationSubCategory": {
      "description": "Subcategory of the application, e.g. 'Arcade Game'.",
      "anyOf": [{ "type": "string", "format": "uri" }, { "type": "string" }]
    },
    "applicationSuite": {
      "description": "The name of the application suite to which the application belongs (e.g. Excel belongs to Office).",
      "type": "string"
    },
    "availableOnDevice": {
      "description": "Device required to run the application. Used in cases where a specific make/model is required to run the application.",
      "oneOf": [
        { "type": "string" },
        { "type": "array", "items": { "type": "string" } }
      ]
    },
    "countriesNotSupported": {
      "description": "Countries for which the application is not supported. You can also provide the two-letter ISO 3166-1 alpha-2 country code.",
      "oneOf": [
        { "type": "string" },
        { "type": "array", "items": { "type": "string" } }
      ]
    },
    "countriesSupported": {
      "description": "Countries for which the application is supported. You can also provide the two-letter ISO 3166-1 alpha-2 country code.",
      "oneOf": [
        { "type": "string" },
        { "type": "array", "items": { "type": "string" } }
      ]
    },
    "device": {
      "description": "Device required to run the application. Used in cases where a specific make/model is required to run the application.",
      "type": "string"
    },
    "downloadUrl": {
      "description": "If the file can be downloaded, URL to download the binary.",
      "type": "string",
      "format": "uri"
    },
    "featureList": {
      "description": "Features or modules provided by this application (and possibly required by other applications).",
      "oneOf": [
        {
          "anyOf": [{ "type": "string", "format": "uri" }, { "type": "string" }]
        },
        {
          "type": "array",
          "items": {
            "anyOf": [
              { "type": "string", "format": "uri" },
              { "type": "string" }
            ]
          }
        }
      ]
    },
    "fileSize": {
      "description": "Size of the application / package (e.g. 18MB). In the absence of a unit (MB, KB etc.), KB will be assumed.",
      "type": "string"
    },
    "installUrl": {
      "description": "URL at which the app may be installed, if different from the URL of the item.",
      "type": "string",
      "format": "uri"
    },
    "memoryRequirements": {
      "description": "Minimum memory requirements.",
      "anyOf": [{ "type": "string", "format": "uri" }, { "type": "string" }]
    },
    "operatingSystem": {
      "description": "Operating systems supported (Windows 7, OS X 10.6, Android 1.6).",
      "oneOf": [
        { "type": "string" },
        { "type": "array", "items": { "type": "string" } }
      ]
    },
    "permissions": {
      "description": "Permission(s) required to run the app (for example, a mobile app may require full internet access or may run only on wifi).",
      "oneOf": [
        { "type": "string" },
        { "type": "array", "items": { "type": "string" } }
      ]
    },
    "processorRequirements": {
      "description": "Processor architecture required to run the application (e.g. IA64).",
      "type": "string"
    },
    "releaseNotes": {
      "description": "Description of what changed in this version.",
      "anyOf": [{ "type": "string", "format": "uri" }, { "type": "string" }]
    },
    "requirements": {
      "description": "Component dependency requirements for application. This includes runtime environments and shared libraries that are not included in the application distribution package, but required to run the application (examples: DirectX, Java or .NET runtime).",
      "oneOf": [
        {
          "anyOf": [{ "type": "string", "format": "uri" }, { "type": "string" }]
        },
        {
          "type": "array",
          "items": {
            "anyOf": [
              { "type": "string", "format": "uri" },
              { "type": "string" }
            ]
          }
        }
      ]
    },
    "screenshot": {
      "description": "A link to a screenshot image of the app.",
      "oneOf": [
        {
          "anyOf": [
            { "type": "string", "format": "uri" },
            { "$ref": "schema:ImageObject" }
          ]
        },
        {
          "type": "array",
          "items": {
            "anyOf": [
              { "type": "string", "format": "uri" },
              { "$ref": "schema:ImageObject" }
            ]
          }
        }
      ]
    },
    "softwareAddOn": {
      "description": "Additional content for a software application.",
      "oneOf": [
        { "$ref": "schema:SoftwareApplication" },
        { "type": "array", "items": { "$ref": "schema:SoftwareApplication" } }
      ]
    },
    "softwareHelp": {
      "description": "Software application help.",
      "oneOf": [
        { "$ref": "schema:CreativeWork" },
        { "type": "array", "items": { "$ref": "schema:CreativeWork" } }
      ]
    },
    "softwareRequirements": {
      "description": "Component dependency requirements for application. This includes runtime environments and shared libraries that are not included in the application distribution package, but required to run the application (examples: DirectX, Java or .NET runtime).",
      "oneOf": [
        {
          "anyOf": [{ "type": "string", "format": "uri" }, { "type": "string" }]
        },
        {
          "type": "array",
          "items": {
            "anyOf": [
              { "type": "string", "format": "uri" },
              { "type": "string" }
            ]
          }
        }
      ]
    },
    "softwareVersion": {
      "description": "Version of the software instance.",
      "type": "string"
    },
    "storageRequirements": {
      "description": "Storage requirements (free space required).",
      "anyOf": [{ "type": "string", "format": "uri" }, { "type": "string" }]
    },
    "supportingData": {
      "description": "Supporting data for a SoftwareApplication.",
      "oneOf": [
        { "$ref": "schema:DataFeed" },
        { "type": "array", "items": { "$ref": "schema:DataFeed" } }
      ]
    }
  }
}
