First

This Manfest is located where you can change it at will. It acts as both a redirector, should you want to relocate your package manifests, or as a mechanism for splitting families of packages. Not strictly required, but it is certainly a Best Practice.

{
  "author": "Dominick Meglio",
  "gitHubUrl": "https://github.com/dcmeglio",
  "payPalUrl": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7LBRPJRLJSDDN&source=url",
  "packages": [
    {
      "name": "BOND Home Integration",
      "category": "Integrations",
      "location": "https://raw.githubusercontent.com/dcmeglio/hubitat-bond/master/packageManifest.json",
      "description": "Allows you to integrate a BOND Home device into your Hubitat system",
      "tags": [
        "LAN",
        "IR & RF"
      ],
      "id": "b25495ec-1f66-4aba-8206-cd9bc754b718"
    },
    {
      "name": "Device Groups",
      "category": "Convenience",
      "location": "https://raw.githubusercontent.com/dcmeglio/hubitat-contactgroups/master/packageManifest.json",
      "description": "Allows you to group contact sensors into a single device",
      "tags": [
        "Automations & Groups"
      ],
      "id": "7b6fa6d3-c746-436f-a3cf-a85336e1f1be"
    }
  ]
}

In the above sample, it's clear that the format is two parts, a global authorship part and then "packages". Each package points to a Package Manifest, where some or all of the details are defined.

If you are manually creating this manifest, then the minumum in the author part is just "name"

./hpm repository-create repository.json --author="Dominick Meglio"

The minimum packages pairs when manually creating are:

  • "name":
  • "location":
  • "category":
  • "description":
"id": is needed per package and is a standard UUID but isn't required in the intermediate manifest.

Finish

Be certain your JSON is perfect using some type of checker. JSONLint is recommended. Broken JSON will result in your package being ignored or quarantined.